PSARC 2015/535 OpenStack service updates for Kilo
authorDevjani Ray <devjani.ray@oracle.com>
Fri, 05 Feb 2016 17:54:17 -0500
changeset 5405 66fd59fecd68
parent 5404 55e409ba4e72
child 5406 5ac656f02914
PSARC 2015/535 OpenStack service updates for Kilo PSARC 2015/458 aioeventlet - asyncio event loop scheduling callbacks in eventlet PSARC 2015/460 msgpack - C/Python bindings for MessagePack (de)serializer data PSARC 2015/466 openstackclient - OpenStack Command-line Client PSARC 2015/467 oslo.versionedobjects - Oslo Versioned Objects library PSARC 2015/468 pint - A physical quantities module PSARC 2015/469 pysaml2 - A pure Python implementation of SAML2 PSARC 2015/471 semantic_version - A library implementing the 'SemVer' scheme PSARC 2015/472 testresources - PyUnit extension for managing expensive test resources PSARC 2015/473 testscenarios - Extensions to Python unittest to support scenarios PSARC 2015/474 trollius - Port of the Tulip project (asyncio module, PEP 3156) on Python 2 PSARC 2015/475 urllib3 - HTTP library with thread-safe connection pooling, file post, and more PSARC 2015/520 oslo.concurrency - Oslo Concurrency library PSARC 2015/521 oslo.log - Oslo Logging Configuration library PSARC 2015/529 oslo.policy - Oslo Policy library PSARC 2015/530 psutil - Python system and process utilities PSARC 2015/538 fixtures - Python module to support reusable state for writing clean tests PSARC 2015/539 sqlparse - An SQL parser module for Python PSARC 2016/017 extras - Useful extra utilities for Python PSARC 2016/018 linecache2 - Port of the standard linecache module PSARC 2016/019 python-mimeparse - Basic functions for parsing mime-types PSARC 2016/020 testtools - Extensions to the Python unit testing framework PSARC 2016/021 traceback2 - Port of the standard traceback module PSARC 2016/014 OpenStack Cinder NFS driver for Solaris 22384068 OpenStack service updates for Kilo (Umbrella) 21974208 The Python module msgpack should be added to Userland 22010630 The Python trollius module should be added to Userland 22011755 The Python module pint should be added to Userland 22012256 The Python aioeventlet module should be added to Userland 22012282 The Python oslo.versionedobjects module should be added to Userland 22012317 The Python semantic_version module should be added to Userland 22012321 The Python testresources module should be added to Userland 22012329 The Python testscenarios module should be added to Userland 22012336 The Python urllib3 module should be added to Userland 22012343 The Python openstackclient module should be added to Userland 22299389 The Python oslo.concurrency module should be added to Userland 22299409 The Python oslo.log module should be added to Userland 22299418 The Python oslo.policy module should be added to Userland 22299469 The Python psutil module should be added to Userland 22337793 The Python sqlparse module should be added to Userland 22338325 The Python fixtures module should be added to Userland 22535728 The Python testtools module should be added to Userland 22535739 The Python extras module should be added to Userland 22535748 The Python linecache2 module should be added to Userland 22535753 The Python traceback2 module should be added to Userland 22535760 The Python python-mimeparse module should be added to Userland 18961001 Image filtering does not function as expected 21678935 NFS for Cinder in Solaris OpenStack 22548630 derived manifest should not enforce presence of global when installing from UAR 22629795 problem in SERVICE/KEYSTONE
components/openstack/cinder/Makefile
components/openstack/cinder/cinder.license
components/openstack/cinder/cinder.p5m
components/openstack/cinder/files/cinder-upgrade
components/openstack/cinder/files/cinder.conf
components/openstack/cinder/files/cinder.exec_attr
components/openstack/cinder/files/solaris/nfs.py
components/openstack/cinder/files/solaris/solarisfc.py
components/openstack/cinder/files/solaris/solarisiscsi.py
components/openstack/cinder/files/solaris/zfs.py
components/openstack/cinder/files/zfssa/zfssaiscsi.py
components/openstack/cinder/patches/01-requirements.patch
components/openstack/cinder/patches/02-nopycrypto.patch
components/openstack/cinder/patches/03-emc_vmax_iscsi.patch
components/openstack/cinder/patches/04-volume-backup.patch
components/openstack/cinder/patches/05-keepalive.patch
components/openstack/cinder/patches/05-launchpad-1479342.patch
components/openstack/cinder/patches/06-enable-dd.patch
components/openstack/cinder/patches/07-launchpad-1460156.patch
components/openstack/cinder/patches/07-zfssa-pep-476.patch
components/openstack/cinder/patches/08-disable-sslv3.patch
components/openstack/cinder/patches/08-zfssa-target_lun.patch
components/openstack/cinder/patches/09-launchpad-1414867.patch
components/openstack/cinder/patches/09-nfs-mount.patch
components/openstack/cinder/patches/10-remotefs.patch
components/openstack/cinder/patches/10-zfssa-free-space.patch
components/openstack/cinder/patches/11-nfs-backup.patch
components/openstack/cinder/patches/11-zfssa-pep-iscsi.patch
components/openstack/cinder/patches/12-generate_sample.patch
components/openstack/common/Makefile
components/openstack/common/files/openstack_common.py
components/openstack/common/openstack-common.p5m
components/openstack/common/openstack.p5m
components/openstack/glance/Makefile
components/openstack/glance/files/glance-api.conf
components/openstack/glance/files/glance-cache.conf
components/openstack/glance/files/glance-manage.conf
components/openstack/glance/files/glance-registry.conf
components/openstack/glance/files/glance-scrubber.conf
components/openstack/glance/files/glance-upgrade
components/openstack/glance/glance.p5m
components/openstack/glance/patches/01-nopycrypto.patch
components/openstack/glance/patches/02-zfs-uar-formats.patch
components/openstack/glance/patches/03-Partial_Content.patch
components/openstack/glance/patches/04-requirements.patch
components/openstack/glance/patches/05-CVE-2015-1881.patch
components/openstack/glance/patches/05-launchpad-1496012.patch
components/openstack/glance/patches/06-CVE-2014-9684.patch
components/openstack/glance/patches/06-launchpad-1500361.patch
components/openstack/glance/patches/07-CVE-2015-5251.patch
components/openstack/glance/patches/07-profiler_opts.patch
components/openstack/glance/patches/08-CVE-2015-5286.patch
components/openstack/glance/patches/09-CVE-2015-5286.patch
components/openstack/heat/Makefile
components/openstack/heat/files/heat-upgrade
components/openstack/heat/files/heat.conf
components/openstack/heat/heat.p5m
components/openstack/heat/patches/02-nopycrypto.patch
components/openstack/heat/patches/02-requirements.patch
components/openstack/heat/patches/03-requirements.patch
components/openstack/heat/patches/04-launchpad-1496277.patch
components/openstack/heat/patches/04-nopycrypto.patch
components/openstack/heat/patches/05-neutron-names-required.patch
components/openstack/heat/patches/06-heat-keystone-setup.patch
components/openstack/heat/patches/07-heat-plugin-defaults.patch
components/openstack/heat/patches/08-disable-sslv3.patch
components/openstack/horizon/Makefile
components/openstack/horizon/angular-bootstrap.license
components/openstack/horizon/angular-lrdragndrop.license
components/openstack/horizon/files/branding/css/solaris.css
components/openstack/horizon/files/branding/css/solaris1.css
components/openstack/horizon/files/branding/css/solaris2.css
components/openstack/horizon/files/branding/img/OpenStack_banner.png
components/openstack/horizon/files/branding/img/Openstack_banner.png
components/openstack/horizon/files/branding/img/dropdown_dwn.png
components/openstack/horizon/files/branding/img/dropdown_ena.png
components/openstack/horizon/files/branding/theme/_stylesheets.html
components/openstack/horizon/files/local_settings.py
components/openstack/horizon/files/openstack-dashboard-http.conf
components/openstack/horizon/files/openstack-dashboard-tls.conf
components/openstack/horizon/files/overrides.py
components/openstack/horizon/font-awesome.license
components/openstack/horizon/horizon.license
components/openstack/horizon/horizon.p5m
components/openstack/horizon/magic-search.license
components/openstack/horizon/patches/01-osprofiler.patch
components/openstack/horizon/patches/02-change-angular-imports.patch
components/openstack/horizon/patches/02-remove_js.patch
components/openstack/horizon/patches/03-remove-qunit.patch
components/openstack/horizon/patches/04-remove-jasmine.patch
components/openstack/horizon/patches/05-disable-unsupported-bootsource.patch
components/openstack/horizon/patches/06-remove-security-groups.patch
components/openstack/horizon/patches/07-remove-image-source.patch
components/openstack/horizon/patches/08-_get_reachable_subnets.patch
components/openstack/horizon/patches/11-requirements.patch
components/openstack/horizon/patches/12-CVE-2015-3988.patch
components/openstack/horizon/patches/13-CVE-2015-3219.patch
components/openstack/horizon/patches/14-add-zfs-image-format.patch
components/openstack/horizon/patches/15-fix-static-root-setting.patch
components/openstack/horizon/patches/99-remove.xstatic.patch-proto
components/openstack/horizon/smart-table.license
components/openstack/horizon/termjs.license
components/openstack/ironic/Makefile
components/openstack/ironic/files/drivers/modules/solaris_ipmitool.py
components/openstack/ironic/files/drivers/solaris.py
components/openstack/ironic/files/ironic-api.xml
components/openstack/ironic/files/ironic-conductor.xml
components/openstack/ironic/files/ironic-db.xml
components/openstack/ironic/files/ironic-keystone-setup.sh
components/openstack/ironic/files/ironic-manifest.ksh
components/openstack/ironic/files/ironic-upgrade
components/openstack/ironic/files/ironic-upgrade.xml
components/openstack/ironic/files/ironic.conf
components/openstack/ironic/ironic.license
components/openstack/ironic/ironic.p5m
components/openstack/ironic/patches/01-requirements.patch
components/openstack/ironic/patches/02-driver-entry.patch
components/openstack/ironic/patches/03-boot-device.patch
components/openstack/keystone/Makefile
components/openstack/keystone/files/keystone
components/openstack/keystone/files/keystone-paste.ini
components/openstack/keystone/files/keystone-upgrade
components/openstack/keystone/files/keystone.conf
components/openstack/keystone/files/keystone.stencil
components/openstack/keystone/files/keystone.xml
components/openstack/keystone/keystone.license
components/openstack/keystone/keystone.p5m
components/openstack/keystone/patches/CVE-2015-3646.patch
components/openstack/keystone/patches/CVE-2015-7546.patch
components/openstack/keystone/patches/launchpad-1384775.patch
components/openstack/keystone/patches/launchpad-1404354.patch
components/openstack/keystone/patches/requirements.patch
components/openstack/keystone/patches/sample-data.sh.patch
components/openstack/neutron/Makefile
components/openstack/neutron/files/agent/evs_l3_agent.py
components/openstack/neutron/files/agent/solaris/dhcp.py
components/openstack/neutron/files/agent/solaris/interface.py
components/openstack/neutron/files/agent/solaris/net_lib.py
components/openstack/neutron/files/agent/solaris/ra.py
components/openstack/neutron/files/dhcp_agent.ini
components/openstack/neutron/files/evs/migrate/neutron-kilo-migration.py
components/openstack/neutron/files/evs/plugin.py
components/openstack/neutron/files/l3_agent.ini
components/openstack/neutron/files/metadata_agent.ini
components/openstack/neutron/files/neutron-l3-agent
components/openstack/neutron/files/neutron-l3-agent.xml
components/openstack/neutron/files/neutron-upgrade
components/openstack/neutron/files/neutron.conf
components/openstack/neutron/files/neutron.exec_attr
components/openstack/neutron/files/neutron.prof_attr
components/openstack/neutron/files/services/vpn/device_drivers/solaris_ipsec.py
components/openstack/neutron/files/services/vpn/device_drivers/template/solaris/ike.secret.template
components/openstack/neutron/files/services/vpn/device_drivers/template/solaris/ike.template
components/openstack/neutron/files/services/vpn/device_drivers/template/solaris/ikev2.secret.template
components/openstack/neutron/files/services/vpn/device_drivers/template/solaris/ikev2.template
components/openstack/neutron/files/services/vpn/device_drivers/template/solaris/ipsecinit.conf.template
components/openstack/neutron/files/vpn_agent.ini
components/openstack/neutron/neutron-vpnaas.license
components/openstack/neutron/neutron.license
components/openstack/neutron/neutron.p5m
components/openstack/neutron/patches/01-dhcp-agent-add-solaris.patch
components/openstack/neutron/patches/02-l3-agent-add-solaris.patch
components/openstack/neutron/patches/03-metadata-agent-add-solaris.patch
components/openstack/neutron/patches/03-metadata-driver-solaris.patch
components/openstack/neutron/patches/04-requirements.patch
components/openstack/neutron/patches/05-disable-sslv3.patch
components/openstack/neutron/patches/06-dhcp-port-sched.patch
components/openstack/neutron/patches/07-launchpad-1255441.patch
components/openstack/neutron/vpnaas_patches/01-vpn_db_add_solaris.patch
components/openstack/nova/Makefile
components/openstack/nova/files/nova-compute
components/openstack/nova/files/nova-upgrade
components/openstack/nova/files/nova.conf
components/openstack/nova/files/release
components/openstack/nova/files/solariszones/driver.py
components/openstack/nova/nova.license
components/openstack/nova/nova.p5m
components/openstack/nova/patches/01-Solaris-vm_mode.patch
components/openstack/nova/patches/02-requirements.patch
components/openstack/nova/patches/03-Solaris-flavors.patch
components/openstack/nova/patches/04-compute-hvtype.patch
components/openstack/nova/patches/05-force-driver-snapshot.patch
components/openstack/nova/patches/05-launchpad-1391782.patch
components/openstack/nova/patches/06-Solaris-dev-name.patch
components/openstack/nova/patches/07-CVE-2015-0259.patch
components/openstack/nova/patches/08-confirm_migration_context.patch
components/openstack/nova/patches/08-disable-sslv3.patch
components/openstack/nova/patches/09-CVE-2015-3280.patch
components/openstack/nova/patches/09-generate_sample.patch
components/openstack/nova/patches/10-launchpad-1356552.patch
components/openstack/nova/patches/10-launchpad-1486590.patch
components/openstack/nova/patches/11-launchpad-1377644.patch
components/openstack/nova/patches/12-launchpad-1397153.patch
components/openstack/swift/Makefile
components/openstack/swift/files/swift-upgrade
components/openstack/swift/patches/CVE-2015-1856.patch
components/openstack/swift/patches/CVE-2015-5223.patch
components/openstack/swift/patches/remove_PyECLib.patch
components/openstack/swift/patches/requirements.patch
components/openstack/swift/swift.license
components/openstack/swift/swift.p5m
components/python/aioeventlet/Makefile
components/python/aioeventlet/aioeventlet-PYVER.p5m
components/python/aioeventlet/aioeventlet.license
components/python/barbicanclient/Makefile
components/python/barbicanclient/barbicanclient-PYVER.p5m
components/python/barbicanclient/barbicanclient.license
components/python/ceilometerclient/Makefile
components/python/ceilometerclient/ceilometerclient-PYVER.p5m
components/python/ceilometerclient/patches/01-requirements.patch
components/python/cinderclient/Makefile
components/python/cinderclient/cinderclient-PYVER.p5m
components/python/cinderclient/patches/01-requirements.patch
components/python/cliff/Makefile
components/python/cliff/cliff-PYVER.p5m
components/python/cliff/cliff.license
components/python/cliff/patches/01-requirements.patch
components/python/django_openstack_auth/Makefile
components/python/django_openstack_auth/django_openstack_auth-PYVER.p5m
components/python/django_openstack_auth/patches/02-launchpad-1451934.patch
components/python/dnspython/Makefile
components/python/eventlet/Makefile
components/python/eventlet/eventlet-PYVER.p5m
components/python/eventlet/eventlet.license
components/python/extras/Makefile
components/python/extras/extras-PYVER.p5m
components/python/fixtures/Makefile
components/python/fixtures/fixtures-PYVER.p5m
components/python/fixtures/fixtures.license
components/python/glance_store/Makefile
components/python/glance_store/glance_store-PYVER.p5m
components/python/glance_store/glance_store.license
components/python/glance_store/patches/no-tests.patch
components/python/glanceclient/Makefile
components/python/glanceclient/glanceclient-PYVER.p5m
components/python/glanceclient/patches/01-requirements.patch
components/python/greenlet/Makefile
components/python/heatclient/Makefile
components/python/heatclient/heatclient-PYVER.p5m
components/python/heatclient/patches/01-requirements.patch
components/python/ironicclient/Makefile
components/python/ironicclient/ironicclient-PYVER.p5m
components/python/ironicclient/ironicclient.license
components/python/ironicclient/patches/01-boot-device-wanboot.patch
components/python/keystoneclient/Makefile
components/python/keystoneclient/keystoneclient-PYVER.p5m
components/python/keystoneclient/patches/01-requirements.patch
components/python/keystoneclient/patches/CVE-2015-1852.patch
components/python/keystoneclient/patches/launchpad-1455673.patch
components/python/keystoneclient/patches/launchpad-1498247.patch
components/python/keystoneclient/patches/nopycrypto.patch
components/python/keystonemiddleware/Makefile
components/python/keystonemiddleware/keystonemiddleware-PYVER.p5m
components/python/keystonemiddleware/keystonemiddleware.license
components/python/keystonemiddleware/patches/CVE-2015-1852.patch
components/python/keystonemiddleware/patches/CVE-2015-7546.patch
components/python/keystonemiddleware/patches/launchpad-1497082.patch
components/python/keystonemiddleware/patches/nopycrypto.patch
components/python/kombu/Makefile
components/python/kombu/kombu-PYVER.p5m
components/python/kombu/kombu.license
components/python/kombu/patches/01-python-2.7.11.patch
components/python/linecache2/Makefile
components/python/linecache2/linecache2-PYVER.p5m
components/python/linecache2/linecache2.license
components/python/msgpack/Makefile
components/python/msgpack/msgpack-PYVER.p5m
components/python/msgpack/msgpack.license
components/python/neutronclient/Makefile
components/python/neutronclient/neutronclient-PYVER.p5m
components/python/neutronclient/patches/01-requirements.patch
components/python/novaclient/Makefile
components/python/novaclient/novaclient-PYVER.p5m
components/python/novaclient/patches/01-novaclient-migration-list.patch
components/python/novaclient/patches/02-requirements.patch
components/python/openstackclient/Makefile
components/python/openstackclient/openstackclient-PYVER.p5m
components/python/openstackclient/openstackclient.license
components/python/openstackclient/patches/01-requirements.patch
components/python/oslo.concurrency/Makefile
components/python/oslo.concurrency/oslo.concurrency-PYVER.p5m
components/python/oslo.concurrency/oslo.concurrency.license
components/python/oslo.config/Makefile
components/python/oslo.config/oslo.config-PYVER.p5m
components/python/oslo.config/oslo.config.license
components/python/oslo.config/patches/launchpad-1438314.patch
components/python/oslo.config/patches/requirements.patch
components/python/oslo.context/Makefile
components/python/oslo.context/oslo.context-PYVER.p5m
components/python/oslo.context/oslo.context.license
components/python/oslo.db/Makefile
components/python/oslo.db/oslo.db-PYVER.p5m
components/python/oslo.db/oslo.db.license
components/python/oslo.i18n/Makefile
components/python/oslo.i18n/oslo.i18n-PYVER.p5m
components/python/oslo.i18n/oslo.i18n.license
components/python/oslo.log/Makefile
components/python/oslo.log/oslo.log-PYVER.p5m
components/python/oslo.log/oslo.log.license
components/python/oslo.log/patches/01-fix-syslog.patch
components/python/oslo.messaging/Makefile
components/python/oslo.messaging/oslo.messaging-PYVER.p5m
components/python/oslo.messaging/oslo.messaging.license
components/python/oslo.messaging/patches/01-disable-sslv3.patch
components/python/oslo.middleware/Makefile
components/python/oslo.middleware/oslo.middleware-PYVER.p5m
components/python/oslo.middleware/oslo.middleware.license
components/python/oslo.policy/Makefile
components/python/oslo.policy/oslo.policy-PYVER.p5m
components/python/oslo.policy/oslo.policy.license
components/python/oslo.serialization/Makefile
components/python/oslo.serialization/oslo.serialization-PYVER.p5m
components/python/oslo.serialization/oslo.serialization.license
components/python/oslo.utils/Makefile
components/python/oslo.utils/oslo.utils-PYVER.p5m
components/python/oslo.utils/oslo.utils.license
components/python/oslo.utils/patches/keepalive.patch
components/python/oslo.versionedobjects/Makefile
components/python/oslo.versionedobjects/oslo.versionedobjects-PYVER.p5m
components/python/oslo.versionedobjects/oslo.versionedobjects.license
components/python/oslo.vmware/Makefile
components/python/oslo.vmware/oslo.vmware-PYVER.p5m
components/python/oslo.vmware/oslo.vmware.license
components/python/pbr/Makefile
components/python/pbr/pbr-PYVER.p5m
components/python/pint/Makefile
components/python/pint/pint-PYVER.p5m
components/python/psutil/Makefile
components/python/psutil/patches/01-remove-non-solaris.patch
components/python/psutil/psutil-PYVER.p5m
components/python/pycadf/Makefile
components/python/pycadf/pycadf-PYVER.p5m
components/python/pycadf/pycadf.license
components/python/python-mimeparse/Makefile
components/python/python-mimeparse/patches/use_setuptools.patch
components/python/python-mimeparse/python-mimeparse-PYVER.p5m
components/python/saharaclient/Makefile
components/python/saharaclient/patches/01-requirements.patch
components/python/saharaclient/saharaclient-PYVER.p5m
components/python/saharaclient/saharaclient.license
components/python/semantic-version/Makefile
components/python/semantic-version/semantic-version-PYVER.p5m
components/python/sqlalchemy-migrate/Makefile
components/python/sqlalchemy-migrate/patches/01-fix-warnings.patch
components/python/sqlalchemy-migrate/sqlalchemy-migrate-PYVER.p5m
components/python/sqlalchemy-migrate/sqlalchemy-migrate.license
components/python/sqlparse/Makefile
components/python/sqlparse/sqlparse-PYVER.p5m
components/python/sqlparse/sqlparse.license
components/python/stevedore/Makefile
components/python/stevedore/patches/01-requirements.patch
components/python/stevedore/stevedore-PYVER.p5m
components/python/stevedore/stevedore.license
components/python/swiftclient/Makefile
components/python/taskflow/Makefile
components/python/taskflow/taskflow-PYVER.p5m
components/python/taskflow/taskflow.license
components/python/testresources/Makefile
components/python/testresources/testresources-PYVER.p5m
components/python/testresources/testresources.license
components/python/testscenarios/Makefile
components/python/testscenarios/testscenarios-PYVER.p5m
components/python/testscenarios/testscenarios.license
components/python/testtools/Makefile
components/python/testtools/patches/01-requirements.patch
components/python/testtools/testtools-PYVER.p5m
components/python/testtools/testtools.license
components/python/traceback2/Makefile
components/python/traceback2/traceback2-PYVER.p5m
components/python/traceback2/traceback2.license
components/python/trollius/Makefile
components/python/trollius/trollius-PYVER.p5m
components/python/troveclient/Makefile
components/python/troveclient/troveclient-PYVER.p5m
components/python/urllib3/Makefile
components/python/urllib3/patches/remove_bundled_components.patch
components/python/urllib3/urllib3-PYVER.p5m
components/python/urllib3/urllib3.license
components/rabbitmq/Makefile
components/rabbitmq/files/rabbitmq-env.conf
components/rabbitmq/files/rabbitmq-env.conf.5
components/rabbitmq/files/rabbitmq-plugins.1
components/rabbitmq/files/rabbitmq-server.1
components/rabbitmq/files/rabbitmq.config
components/rabbitmq/files/rabbitmq.xml
components/rabbitmq/files/rabbitmqctl.1
components/rabbitmq/files/rmq-mplex
components/rabbitmq/files/svc-rabbitmq
components/rabbitmq/patches/makefile.patch
components/rabbitmq/patches/sh-to-bash.patch
components/rabbitmq/rabbitmq.license
components/rabbitmq/rabbitmq.p5m
components/rabbitmq/rabbitmq.xml
components/rabbitmq/rmq-mplex
components/rabbitmq/svc-rabbitmq
transforms/python-3-groups
transforms/standard-python-libraries
--- a/components/openstack/cinder/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/cinder/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,26 +20,26 @@
 #
 
 #
-# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		cinder
-COMPONENT_CODENAME=	juno
-COMPONENT_VERSION=	2014.2.2
-COMPONENT_BE_VERSION=	2014.2
+COMPONENT_CODENAME=	kilo
+COMPONENT_VERSION=	2015.1.2
+COMPONENT_BE_VERSION=	2015.1
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:2c779bf9d208163af6c425da9043bbdcb345cebc5c118198482b94062862a117
+    sha256:8baa42a3008b0bb0870df678237c0d06ab8ee148b3bf5c00c6b95cfe05c52333
 COMPONENT_ARCHIVE_URL=	http://launchpad.net/$(COMPONENT_NAME)/$(COMPONENT_CODENAME)/$(COMPONENT_VERSION)/+download/$(COMPONENT_ARCHIVE)
 COMPONENT_SIG_URL=	$(COMPONENT_ARCHIVE_URL).asc
 COMPONENT_PROJECT_URL=	http://www.openstack.org/
 COMPONENT_BUGDB=	service/cinder
 IPS_COMPONENT_VERSION=	0.$(COMPONENT_VERSION)
 
-TPNO=			21819
+TPNO=			25784
 
 include $(WS_MAKE_RULES)/prep.mk
 include $(WS_MAKE_RULES)/setup.py.mk
@@ -55,31 +55,40 @@
 PKG_MACROS +=		PYVER=$(PYTHON_VERSIONS)
 PKG_MACROS +=		PYV=$(shell echo $(PYTHON_VERSIONS) | tr -d .)
 
+COMPONENT_POST_UNPACK_ACTION += \
+    $(MKDIR) $(SOURCE_DIR)/cinder/volume/drivers/zfssa; \
+    $(CP) files/zfssa/zfssaiscsi.py \
+	$(SOURCE_DIR)/cinder/volume/drivers/zfssa
+
 #
 # cinder-api, cinder-backup, cinder-scrubber, and cinder-volume depend
 # on cinder-db, and cinder-upgrade so copy all of the service
 # manifests into the proto directory for pkgdepend(1) to find.
 #
 COMPONENT_POST_INSTALL_ACTION += \
-	($(MKDIR) $(PROTO_DIR)/lib/svc/manifest/application/openstack; \
-	 $(CP) \
-	     files/cinder-api.xml \
-	     files/cinder-backup.xml \
-	     files/cinder-db.xml \
-	     files/cinder-scheduler.xml \
-	     files/cinder-upgrade.xml \
-	     files/cinder-volume.xml \
-	     $(PROTO_DIR)/lib/svc/manifest/application/openstack; \
-         $(CP) \
-	     files/solaris/solarisfc.py \
-             files/solaris/solarisiscsi.py \
-	     $(PROTO_DIR)$(PYTHON_LIB)/cinder/brick/initiator; \
-	 $(MKDIR) $(PROTO_DIR)$(PYTHON_LIB)/cinder/volume/drivers/solaris; \
-	 $(TOUCH) $(PROTO_DIR)$(PYTHON_LIB)/cinder/volume/drivers/solaris/__init__.py; \
-	 $(CP) files/solaris/zfs.py $(PROTO_DIR)$(PYTHON_LIB)/cinder/volume/drivers/solaris; \
-	 $(MKDIR) $(PROTO_DIR)$(PYTHON_LIB)/cinder/volume/drivers/zfssa; \
-	 $(CP) files/zfssa/cinder.akwf $(PROTO_DIR)$(PYTHON_LIB)/cinder/volume/drivers/zfssa); \
-	 $(PYTHON) -m compileall $(PROTO_DIR)/$(PYTHON_VENDOR_PACKAGES)
+    ($(MKDIR) $(PROTO_DIR)/lib/svc/manifest/application/openstack; \
+     $(CP) \
+         files/cinder-api.xml \
+         files/cinder-backup.xml \
+         files/cinder-db.xml \
+         files/cinder-scheduler.xml \
+         files/cinder-upgrade.xml \
+         files/cinder-volume.xml \
+         $(PROTO_DIR)/lib/svc/manifest/application/openstack; \
+     $(CP) \
+         files/solaris/solarisfc.py \
+         files/solaris/solarisiscsi.py \
+         $(PROTO_DIR)$(PYTHON_LIB)/cinder/brick/initiator; \
+     $(MKDIR) $(PROTO_DIR)$(PYTHON_LIB)/cinder/volume/drivers/solaris; \
+     $(TOUCH) \
+         $(PROTO_DIR)$(PYTHON_LIB)/cinder/volume/drivers/solaris/__init__.py; \
+     $(CP) \
+         files/solaris/nfs.py \
+         files/solaris/zfs.py \
+         $(PROTO_DIR)$(PYTHON_LIB)/cinder/volume/drivers/solaris; \
+     $(CP) files/zfssa/cinder.akwf \
+         $(PROTO_DIR)$(PYTHON_LIB)/cinder/volume/drivers/zfssa); \
+     $(PYTHON) -m compileall $(PROTO_DIR)/$(PYTHON_VENDOR_PACKAGES)
 
 # common targets
 build:		$(BUILD_NO_ARCH)
@@ -92,11 +101,12 @@
 
 
 REQUIRED_PACKAGES += cloud/openstack/openstack-common
+REQUIRED_PACKAGES += file/gnu-coreutils
 REQUIRED_PACKAGES += library/python/eventlet-27
 REQUIRED_PACKAGES += library/python/iniparse-27
 REQUIRED_PACKAGES += library/python/ipython-27
 REQUIRED_PACKAGES += library/python/oslo.config-27
-REQUIRED_PACKAGES += library/python/python-mysql-27
+REQUIRED_PACKAGES += library/python/oslo.utils-27
 REQUIRED_PACKAGES += library/python/sqlalchemy-27
 REQUIRED_PACKAGES += library/python/sqlalchemy-migrate-27
 REQUIRED_PACKAGES += system/core-os
--- a/components/openstack/cinder/cinder.license	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/cinder/cinder.license	Fri Feb 05 17:54:17 2016 -0500
@@ -210,33 +210,46 @@
    See the License for the specific language governing permissions and
    limitations under the License.
 
-# Interactive shell based on Django:
+============================================================
+
+# Copyright (c) 2013, Nebula, Inc.
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
 #
-# Copyright (c) 2005, the Lawrence Journal-World
-# 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
 #
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
+#         http://www.apache.org/licenses/LICENSE-2.0
 #
-#     1. Redistributions of source code must retain the above copyright notice,
-#        this list of conditions and the following disclaimer.
+#    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.
 #
-#     2. Redistributions in binary form must reproduce the above copyright
-#        notice, this list of conditions and the following disclaimer in the
-#        documentation and/or other materials provided with the distribution.
+# Colorizer Code is borrowed from Twisted:
+# Copyright (c) 2001-2010 Twisted Matrix Laboratories.
 #
-#     3. Neither the name of Django nor the names of its contributors may be
-#        used to endorse or promote products derived from this software without
-#        specific prior written permission.
+#    Permission is hereby granted, free of charge, to any person obtaining
+#    a copy of this software and associated documentation files (the
+#    "Software"), to deal in the Software without restriction, including
+#    without limitation the rights to use, copy, modify, merge, publish,
+#    distribute, sublicense, and/or sell copies of the Software, and to
+#    permit persons to whom the Software is furnished to do so, subject to
+#    the following conditions:
+#
+#    The above copyright notice and this permission notice shall be
+#    included in all copies or substantial portions of the Software.
 #
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+#    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+#    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+#    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+#    LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+#    OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+#    WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+============================================================
+
--- a/components/openstack/cinder/cinder.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/cinder/cinder.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,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.
 #
 
 set name=pkg.fmri \
@@ -28,7 +28,7 @@
 set name=pkg.summary value="OpenStack Cinder (Block Storage Service)"
 set name=pkg.description \
     value="OpenStack Cinder provides an infrastructure for managing block storage volumes in OpenStack. It allows block devices to be exposed and connected to compute instances for expanded storage, better performance and integration with enterprise storage platforms."
-set name=pkg.human-version value="Juno $(COMPONENT_VERSION)"
+set name=pkg.human-version value="Kilo $(COMPONENT_VERSION)"
 set name=com.oracle.info.description \
     value="Cinder, the OpenStack block storage service"
 set name=com.oracle.info.tpno value=$(TPNO)
@@ -42,7 +42,7 @@
 set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
 set name=openstack.upgrade-id reboot-needed=true value=$(COMPONENT_BE_VERSION)
 set name=org.opensolaris.arc-caseid value=PSARC/2013/350 value=PSARC/2014/054 \
-    value=PSARC/2014/208 value=PSARC/2015/110
+    value=PSARC/2014/208 value=PSARC/2015/110 value=PSARC/2015/535
 set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
 set name=variant.opensolaris.zone value=global value=nonglobal
 #
@@ -75,7 +75,7 @@
 file files/cinder-upgrade path=lib/svc/method/cinder-upgrade
 file files/cinder-volume path=lib/svc/method/cinder-volume
 file files/cinder-volume-setup path=lib/svc/method/cinder-volume-setup
-file path=usr/bin/cinder-manage pkg.depend.bypass-generate=.*/bpython.*
+file path=usr/bin/cinder-manage
 file usr/bin/cinder-api path=usr/lib/cinder/cinder-api mode=0555
 file usr/bin/cinder-backup path=usr/lib/cinder/cinder-backup mode=0555
 file usr/bin/cinder-scheduler path=usr/lib/cinder/cinder-scheduler mode=0555
@@ -92,7 +92,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/auth.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/common.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/contrib/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/contrib/admin_actions.py
@@ -123,6 +122,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/contrib/volume_replication.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/contrib/volume_tenant_attribute.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/contrib/volume_transfer.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/contrib/volume_type_access.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/contrib/volume_type_encryption.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/contrib/volume_unmanage.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/extensions.py
@@ -131,9 +131,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/middleware/fault.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/middleware/sizelimit.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/openstack/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/openstack/urlmap.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/openstack/volume/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/openstack/volume/versions.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/openstack/wsgi.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/schemas/atom-link.rng
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/schemas/v1.1/extension.rng
@@ -144,7 +141,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/schemas/v1.1/qos_associations.rng
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/schemas/v1.1/qos_spec.rng
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/schemas/v1.1/qos_specs.rng
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/sizelimit.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/urlmap.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/v1/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/v1/limits.py
@@ -179,9 +175,11 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/api/xmlutil.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/backup/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/backup/api.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/backup/chunkeddriver.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/backup/driver.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/backup/drivers/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/backup/drivers/ceph.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/backup/drivers/nfs.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/backup/drivers/swift.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/backup/drivers/tsm.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/backup/manager.py
@@ -197,17 +195,36 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/brick/initiator/linuxscsi.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/brick/initiator/solarisfc.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/brick/initiator/solarisiscsi.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/brick/iscsi/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/brick/iscsi/iscsi.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/brick/local_dev/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/brick/local_dev/lvm.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/brick/remotefs/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/brick/remotefs/remotefs.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/cmd/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/cmd/all.py \
+    pkg.depend.bypass-generate=.*/oslo_log.*
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/cmd/api.py \
+    pkg.depend.bypass-generate=.*/oslo_log.*
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/cmd/backup.py \
+    pkg.depend.bypass-generate=.*/oslo_log.*
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/cmd/manage.py \
+    pkg.depend.bypass-generate=.*/bpython.* \
+    pkg.depend.bypass-generate=.*/oslo_db.* \
+    pkg.depend.bypass-generate=.*/oslo_log.* \
+    pkg.depend.bypass-generate=.*/oslo_messaging.* \
+    pkg.depend.bypass-generate=.*/sqlalchemy.*
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/cmd/rtstool.py \
+    pkg.depend.bypass-generate=.*/rtslib.*
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/cmd/scheduler.py \
+    pkg.depend.bypass-generate=.*/oslo_log.*
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/cmd/volume.py \
+    pkg.depend.bypass-generate=.*/oslo_log.*
+file \
+    path=usr/lib/python$(PYVER)/vendor-packages/cinder/cmd/volume_usage_audit.py \
+    pkg.depend.bypass-generate=.*/oslo_log.*
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/common/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/common/config.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/common/sqlalchemyutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/compute/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/compute/aggregate_states.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/compute/nova.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/consistencygroup/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/consistencygroup/api.py
@@ -254,8 +271,26 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/migrate_repo/versions/024_add_replication_support.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/migrate_repo/versions/025_add_consistencygroup.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/migrate_repo/versions/026_add_consistencygroup_quota_class.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/migrate_repo/versions/027_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/migrate_repo/versions/028_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/migrate_repo/versions/029_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/migrate_repo/versions/030_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/migrate_repo/versions/031_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/migrate_repo/versions/032_add_volume_type_projects.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/migrate_repo/versions/032_sqlite_downgrade.sql
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/migrate_repo/versions/033_add_encryption_unique_key.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/migrate_repo/versions/033_sqlite_downgrade.sql
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/migrate_repo/versions/034_sqlite_downgrade.sql
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/migrate_repo/versions/034_volume_type_add_desc_column.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/migrate_repo/versions/035_add_provider_id_column.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/migrate_repo/versions/036_add_provider_id_column_to_snapshots.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/migrate_repo/versions/037_add_cgsnapshot_id_column_to_consistencygroups.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/migrate_repo/versions/038_add_driver_initiator_data_table.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/migrate_repo/versions/039_add_parent_id_to_backups.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/migrate_repo/versions/040_add_volume_attachment.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/migrate_repo/versions/040_sqlite_downgrade.sql
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/migrate_repo/versions/041_add_modified_at_column_to_service.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/migrate_repo/versions/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/migration.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/db/sqlalchemy/models.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/exception.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/flow_utils.py
@@ -272,32 +307,27 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/keymgr/key_mgr.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/keymgr/not_implemented_key_mgr.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/manager.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/objects/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/objects/base.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/objects/fields.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/objects/snapshot.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/objects/volume.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/README
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/_i18n.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/config/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/config/generator.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/context.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/eventlet_backdoor.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/excutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/fileutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/gettextutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/imageutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/importutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/jsonutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/local.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/lockutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/log.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/log_handler.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/loopingcall.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/middleware/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/middleware/base.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/middleware/catch_errors.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/middleware/request_id.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/network_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/periodic_task.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/policy.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/processutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/request_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/scheduler/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/scheduler/base_filter.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/scheduler/base_handler.py
@@ -310,14 +340,8 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/scheduler/filters/json_filter.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/scheduler/weights/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/service.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/sslutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/strutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/systemd.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/test.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/threadgroup.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/timeutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/units.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/uuidutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/openstack/common/versionutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/policy.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/quota.py
@@ -327,10 +351,14 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/rpc.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/scheduler/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/scheduler/driver.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/scheduler/evaluator/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/scheduler/evaluator/evaluator.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/scheduler/filter_scheduler.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/scheduler/filters/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/scheduler/filters/affinity_filter.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/scheduler/filters/capacity_filter.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/scheduler/filters/driver_filter.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/scheduler/filters/instance_locality_filter.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/scheduler/flows/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/scheduler/flows/create_volume.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/scheduler/host_manager.py
@@ -341,6 +369,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/scheduler/weights/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/scheduler/weights/capacity.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/scheduler/weights/chance.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/scheduler/weights/goodness.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/scheduler/weights/volume_number.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/service.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/ssh_utils.py
@@ -355,26 +384,30 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/driver.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/block_device.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/coraid.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/cloudbyte/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/cloudbyte/cloudbyte.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/cloudbyte/options.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/datera.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/dell/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/dell/dell_storagecenter_api.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/dell/dell_storagecenter_common.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/dell/dell_storagecenter_fc.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/dell/dell_storagecenter_iscsi.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/emc/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/emc/emc_cli_fc.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/emc/emc_cli_iscsi.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/emc/emc_vmax_common.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/emc/emc_vmax_fast.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/emc/emc_vmax_fc.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/emc/emc_vmax_https.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/emc/emc_vmax_iscsi.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/emc/emc_vmax_masking.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/emc/emc_vmax_provision.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/emc/emc_vmax_provision_v3.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/emc/emc_vmax_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/emc/emc_vnx_cli.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/emc/xtremio.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/eqlx.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/fujitsu_eternus_dx_common.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/fujitsu_eternus_dx_fc.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/fujitsu_eternus_dx_iscsi.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/fusionio/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/fusionio/ioControl.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/glusterfs.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/hds/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/hds/hds.py
@@ -390,13 +423,11 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/hitachi/hbsd_iscsi.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/hitachi/hbsd_snm2.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/huawei/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/huawei/huawei_dorado.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/huawei/huawei_hvs.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/huawei/huawei_t.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/huawei/huawei_18000.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/huawei/huawei_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/huawei/rest_common.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/huawei/ssh_common.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/ibm/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/ibm/flashsystem.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/ibm/gpfs.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/ibm/ibmnas.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/ibm/storwize_svc/__init__.py
@@ -406,30 +437,40 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/ibm/xiv_ds8k.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/lvm.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/api.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/common.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/dataontap/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/dataontap/block_7mode.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/dataontap/block_base.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/dataontap/block_cmode.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/dataontap/client/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/dataontap/client/api.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/dataontap/client/client_7mode.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/dataontap/client/client_base.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/dataontap/client/client_cmode.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/dataontap/fc_7mode.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/dataontap/fc_cmode.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/dataontap/iscsi_7mode.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/dataontap/iscsi_cmode.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/dataontap/nfs_7mode.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/dataontap/nfs_base.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/dataontap/nfs_cmode.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/dataontap/ssc_cmode.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/eseries/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/eseries/client.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/eseries/iscsi.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/iscsi.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/nfs.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/eseries/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/options.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/ssc_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/netapp/utils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/nexenta/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/nexenta/iscsi.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/nexenta/jsonrpc.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/nexenta/nfs.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/nexenta/options.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/nexenta/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/nfs.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/nimble.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/openvstorage.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/prophetstor/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/prophetstor/dpl_fc.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/prophetstor/dpl_iscsi.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/prophetstor/dplcommon.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/prophetstor/options.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/pure.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/quobyte.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/rbd.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/remotefs.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/san/__init__.py
@@ -440,34 +481,24 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/san/hp/hp_msa_client.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/san/hp/hp_msa_common.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/san/hp/hp_msa_fc.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/san/san.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/san/solaris.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/scality.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/sheepdog.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/smbfs.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/solaris/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/solaris/nfs.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/solaris/zfs.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/solidfire.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/srb.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/violin/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/violin/v6000_common.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/violin/v6000_fcp.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/violin/v6000_iscsi.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/vmware/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/vmware/api.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/vmware/datastore.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/vmware/error_util.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/vmware/io_util.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/vmware/pbm.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/vmware/read_write_util.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/vmware/vim.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/vmware/vim_util.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/vmware/exceptions.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/vmware/vmdk.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/vmware/vmware_images.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/vmware/volumeops.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/vmware/wsdl/5.5/core-types.xsd
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/vmware/wsdl/5.5/pbm-messagetypes.xsd
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/vmware/wsdl/5.5/pbm-types.xsd
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/vmware/wsdl/5.5/pbm.wsdl
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/vmware/wsdl/5.5/pbmService.wsdl
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/windows/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/windows/constants.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/windows/remotefs.py
@@ -475,11 +506,13 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/windows/vhdutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/windows/windows.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/windows/windows_utils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/zadara.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/xio.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/zfssa/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/zfssa/cinder.akwf
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/zfssa/restclient.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/zfssa/webdavclient.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/zfssa/zfssaiscsi.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/zfssa/zfssanfs.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/drivers/zfssa/zfssarest.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/flows/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/flows/api/__init__.py
@@ -488,10 +521,20 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/flows/manager/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/flows/manager/create_volume.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/flows/manager/manage_existing.py
-file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/iscsi.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/manager.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/qos_specs.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/rpcapi.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/targets/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/targets/cxt.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/targets/driver.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/targets/fake.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/targets/iet.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/targets/iscsi.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/targets/iser.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/targets/lio.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/targets/scst.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/targets/tgt.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/throttling.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/volume/volume_types.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinder/wsgi.py
@@ -522,30 +565,28 @@
 #
 license cinder.license license="Apache v2.0"
 
-# force a group dependency on the optional anyjson; pkgdepend work is needed to
-# flush this out.
-depend type=group fmri=library/python/anyjson-$(PYV)
+# force a group dependency on the optional oslo.vmware; pkgdepend work is needed
+# to flush this out.
+depend type=group fmri=library/python/oslo.vmware-$(PYV)
 
-# force a group dependency on the optional netaddr; pkgdepend work is needed to
-# flush this out.
-depend type=group fmri=library/python/netaddr-$(PYV)
+# force a group dependency on the optional pyopenssl; pkgdepend work is needed
+# to flush this out.
+depend type=group fmri=library/python/pyopenssl-$(PYV)
 
 # force a group dependency on the optional pywbem; pkgdepend work is needed to
 # flush this out.
 depend type=group fmri=library/python/pywbem-$(PYV)
 
-# force a group dependency on the optional requests; pkgdepend work is needed to
-# flush this out.
-depend type=group fmri=library/python/requests-$(PYV)
-
-# force a group dependency on the optional simplejson; pkgdepend work is needed
-# to flush this out.
-depend type=group fmri=library/python/simplejson-$(PYV)
-
 # force a group dependency on the optional suds; pkgdepend work is needed to
 # flush this out.
 depend type=group fmri=library/python/suds-$(PYV)
 
+# 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
+
+# force a dependency on package delivering GNU du(1M)
+depend type=require fmri=__TBD pkg.debug.depend.file=usr/bin/gdu
+
 # force a dependency on package delivering fcinfo(1M)
 depend type=require fmri=__TBD pkg.debug.depend.file=usr/sbin/fcinfo
 
@@ -587,19 +628,41 @@
 # force a dependency on lxml; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/lxml-$(PYV)
 
+# force a dependency on netaddr; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/netaddr-$(PYV)
+
 # force a dependency on novaclient; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/novaclient-$(PYV)
 
+# force a dependency on oslo.concurrency; pkgdepend work is needed to flush this
+# out.
+depend type=require fmri=library/python/oslo.concurrency-$(PYV)
+
+# force a dependency on oslo.context; pkgdepend work is needed to flush this
+# out.
+depend type=require fmri=library/python/oslo.context-$(PYV)
+
 # force a dependency on oslo.db; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/oslo.db-$(PYV)
 
 # 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.serialization; pkgdepend work is needed to flush
+# this out.
+depend type=require fmri=library/python/oslo.serialization-$(PYV)
+
 # force a dependency on osprofiler; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/osprofiler-$(PYV)
 
@@ -616,6 +679,15 @@
 # force a dependency on pbr; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/pbr-$(PYV)
 
+# force a dependency on pyparsing; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/pyparsing-$(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 routes; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/routes-$(PYV)
 
@@ -640,3 +712,6 @@
 # force a dependency on the Solaris Install library; pkgdepend work is needed to
 # flush this out.
 depend type=require fmri=system/library/install
+
+# force a dependency on rad-python; pkgdepend work is needed to flush this out.
+depend type=require fmri=system/management/rad/client/rad-python
--- a/components/openstack/cinder/files/cinder-upgrade	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/cinder/files/cinder-upgrade	Fri Feb 05 17:54:17 2016 -0500
@@ -1,6 +1,6 @@
 #!/usr/bin/python2.7
 
-# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2015, 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
@@ -30,44 +30,18 @@
 
 CINDER_CONF_MAPPINGS = {
     # Deprecated group/name
-    ('DEFAULT', 'rabbit_durable_queues'): ('DEFAULT', 'amqp_durable_queues'),
-    ('rpc_notifier2', 'topics'): ('DEFAULT', 'notification_topics'),
-    ('DEFAULT', 'osapi_compute_link_prefix'):
-        ('DEFAULT', 'osapi_volume_base_URL'),
-    ('DEFAULT', 'backup_service'): ('DEFAULT', 'backup_driver'),
-    ('DEFAULT', 'pybasedir'): ('DEFAULT', 'state_path'),
-    ('DEFAULT', 'log_config'): ('DEFAULT', 'log_config_append'),
-    ('DEFAULT', 'logfile'): ('DEFAULT', 'log_file'),
-    ('DEFAULT', 'logdir'): ('DEFAULT', 'log_dir'),
-    ('DEFAULT', 'num_iscsi_scan_tries'):
-        ('DEFAULT', 'num_volume_device_scan_tries'),
-    ('DEFAULT', 'zfssa_host'): ('DEFAULT', 'san_ip'),
-    ('DEFAULT', 'zfssa_auth_user'): ('DEFAULT', 'san_login'),
-    ('DEFAULT', 'zfssa_auth_password'): ('DEFAULT', 'san_password'),
+    ('DEFAULT', 'eqlx_chap_password'): ('DEFAULT', 'chap_password'),
+    ('DEFAULT', 'eqlx_use_chap'): ('DEFAULT', 'use_chap_auth'),
+    ('DEFAULT', 'eqlx_chap_login'): ('DEFAULT', 'chap_username'),
+    ('DEFAULT', 'host'): ('DEFAULT', 'backend_host'),
     ('DEFAULT', 'db_backend'): ('database', 'backend'),
-    ('DEFAULT', 'sql_connection'): ('database', 'connection'),
-    ('DATABASE', 'sql_connection'): ('database', 'connection'),
-    ('sql', 'connection'): ('database', 'connection'),
-    ('DEFAULT', 'sql_idle_timeout'): ('database', 'idle_timeout'),
-    ('DATABASE', 'sql_idle_timeout'): ('database', 'idle_timeout'),
-    ('sql', 'idle_timeout'): ('database', 'idle_timeout'),
-    ('DEFAULT', 'sql_min_pool_size'): ('database', 'min_pool_size'),
-    ('DATABASE', 'sql_min_pool_size'): ('database', 'min_pool_size'),
-    ('DEFAULT', 'sql_max_pool_size'): ('database', 'max_pool_size'),
-    ('DATABASE', 'sql_max_pool_size'): ('database', 'max_pool_size'),
-    ('DEFAULT', 'sql_max_retries'): ('database', 'max_retries'),
-    ('DATABASE', 'sql_max_retries'): ('database', 'max_retries'),
-    ('DEFAULT', 'sql_retry_interval'): ('database', 'retry_interval'),
-    ('DATABASE', 'reconnect_interval'): ('database', 'retry_interval'),
-    ('DEFAULT', 'sql_max_overflow'): ('database', 'max_overflow'),
-    ('DATABASE', 'sqlalchemy_max_overflow'): ('database', 'max_overflow'),
-    ('DEFAULT', 'sql_connection_debug'): ('database', 'connection_debug'),
-    ('DEFAULT', 'sql_connection_trace'): ('database', 'connection_trace'),
-    ('DATABASE', 'sqlalchemy_pool_timeout'): ('database', 'pool_timeout'),
-    ('DEFAULT', 'dbapi_use_tpool'): ('database', 'use_tpool'),
-    ('DEFAULT', 'memcache_servers'):
-        ('keystone_authtoken', 'memcached_servers'),
-    ('DEFAULT', 'matchmaker_ringfile'): ('matchmaker_ring', 'ringfile'),
+    ('DEFAULT', 'osapi_max_request_body_size'):
+        ('oslo_middleware', 'max_request_body_size'),
+    ('DEFAULT', 'log-format'): (None, None),
+    ('DEFAULT', 'use-syslog'): (None, None),
+    ('DEFAULT', 'datera_api_token'): (None, None),
+    ('DEFAULT', 'enable_v1_api'): (None, None),
+    ('DEFAULT', 'log_format'): (None, None),
 }
 
 CINDER_CONF_EXCEPTIONS = [
@@ -84,18 +58,6 @@
     ('keystone_authtoken', 'signing_dir'),
 ]
 
-CINDER_MOVE_CONFIG = {
-    ('filter:authtoken', 'auth_uri'): ('keystone_authtoken', 'auth_uri'),
-    ('filter:authtoken', 'identity_uri'):
-        ('keystone_authtoken', 'identity_uri'),
-    ('filter:authtoken', 'admin_tenant_name'):
-        ('keystone_authtoken', 'admin_tenant_name'),
-    ('filter:authtoken', 'admin_user'): ('keystone_authtoken', 'admin_user'),
-    ('filter:authtoken', 'admin_password'):
-        ('keystone_authtoken', 'admin_password'),
-    ('filter:authtoken', 'signing_dir'): ('keystone_authtoken', 'signing_dir'),
-}
-
 
 def start():
     # pull out the current version of config/upgrade-id
@@ -125,14 +87,8 @@
 
         modify_conf('/etc/cinder/api-paste.ini')
 
-        # before modifying cinder.conf, move the [filter:authtoken] entries
-        # from the updated api-paste.ini to the old cinder.conf
-        move_conf('/etc/cinder/api-paste.ini', '/etc/cinder/cinder.conf',
-                  CINDER_MOVE_CONFIG)
-
         modify_conf('/etc/cinder/cinder.conf', CINDER_CONF_MAPPINGS,
                     CINDER_CONF_EXCEPTIONS)
-        modify_conf('/etc/cinder/logging.conf')
 
     config = iniparse.RawConfigParser()
     config.read('/etc/cinder/cinder.conf')
--- a/components/openstack/cinder/files/cinder.conf	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/cinder/files/cinder.conf	Fri Feb 05 17:54:17 2016 -0500
@@ -1,133 +1,110 @@
 [DEFAULT]
 
 #
+# 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 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
-
-# SSL version to use (valid only if SSL enabled). valid values
-# are TLSv1 and SSLv23. SSLv2 and SSLv3 may be available on
-# some distributions. (string value)
-#kombu_ssl_version=
-
-# SSL key file (valid only if SSL enabled). (string value)
-#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
-
-# RabbitMQ HA cluster host:port pairs. (list value)
-#rabbit_hosts=$rabbit_host:$rabbit_port
-
-# Connect over SSL for RabbitMQ. (boolean value)
-#rabbit_use_ssl=false
-
-# The RabbitMQ userid. (string value)
-#rabbit_userid=guest
-
-# The RabbitMQ password. (string value)
-#rabbit_password=guest
-
-# The RabbitMQ login method. (string value)
-#rabbit_login_method=AMQPLAIN
-
-# The RabbitMQ virtual host. (string value)
-#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)
-#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
-# value)
-#rabbit_ha_queues=false
-
-# Deprecated, use rpc_backend=kombu+memory or rpc_backend=fake
-# (boolean value)
-#fake_rabbit=false
-
 # 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=oslo.messaging._drivers.matchmaker.MatchMakerLocalhost
+#rpc_zmq_matchmaker=local
 
 # ZeroMQ receiver listening port. (integer value)
 #rpc_zmq_port=9501
@@ -157,7 +134,7 @@
 # Heartbeat time-to-live. (integer value)
 #matchmaker_heartbeat_ttl=600
 
-# Size of RPC greenthread pool. (integer value)
+# Size of RPC thread pool. (integer value)
 #rpc_thread_pool_size=64
 
 # Driver or drivers to handle sending notifications. (multi
@@ -289,14 +266,6 @@
 
 
 #
-# Options defined in cinder.test
-#
-
-# File name of clean sqlite db (string value)
-#sqlite_clean_db=clean.sqlite
-
-
-#
 # Options defined in cinder.wsgi
 #
 
@@ -306,17 +275,17 @@
 # with big service catalogs). (integer value)
 #max_header_line=16384
 
+# 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
+
 # If False, closes the client socket connection explicitly.
 # Setting it to True to maintain backward compatibility.
 # Recommended setting is set it to False. (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=0
-
 # Sets the value of TCP_KEEPALIVE (True/False) for each server
 # socket. (boolean value)
 #tcp_keepalive=true
@@ -378,13 +347,41 @@
 
 
 #
+# Options defined in cinder.api.views.versions
+#
+
+# Public url to use for versions endpoint. The default is
+# None, which will use the request's host_url attribute to
+# populate the URL base. If Cinder is operating behind a
+# proxy, you will want to change this to represent the proxy's
+# URL. (string value)
+#public_endpoint=<None>
+
+
+#
+# Options defined in cinder.backup.chunkeddriver
+#
+
+# Compression algorithm (None to disable) (string value)
+#backup_compression_algorithm=zlib
+
+
+#
 # Options defined in cinder.backup.driver
 #
 
 # Backup metadata version to be used when backing up volume
 # metadata. If this number is bumped, make sure the service
 # doing the restore supports the new version. (integer value)
-#backup_metadata_version=1
+backup_metadata_version=1
+
+# The number of chunks or objects, for which one Ceilometer
+# notification will be sent (integer value)
+#backup_object_number_per_notification=10
+
+# Interval, in seconds, between two progress notifications
+# reporting the backup status (integer value)
+#backup_timer_interval=120
 
 
 #
@@ -421,6 +418,44 @@
 
 
 #
+# Options defined in cinder.backup.drivers.nfs
+#
+
+# The maximum size in bytes of the files used to hold backups.
+# If the volume being backed up exceeds this size, then it
+# will be backed up into multiple files. backup_file_size must
+# be a multiple of backup_sha_block_size_bytes. (integer
+# value)
+#backup_file_size=1999994880
+
+# The size in bytes that changes are tracked for incremental
+# backups. backup_file_size has to be multiple of
+# backup_sha_block_size_bytes. (integer value)
+#backup_sha_block_size_bytes=32768
+
+# Enable or Disable the timer to send the periodic progress
+# notifications to Ceilometer when backing up the volume to
+# the backend storage. The default value is True to enable the
+# timer. (boolean value)
+#backup_enable_progress_timer=true
+
+# Base dir containing mount point for NFS share. (string
+# value)
+#backup_mount_point_base=$state_path/backup_mount
+
+# NFS share in fqdn:path, ipv4addr:path, or "[ipv6addr]:path"
+# format. (string value)
+#backup_share=<None>
+
+# Mount options passed to the NFS client. See NFS man page for
+# details. (string value)
+#backup_mount_options=<None>
+
+# Custom container to use for backups. (string value)
+#backup_container=<None>
+
+
+#
 # Options defined in cinder.backup.drivers.swift
 #
 
@@ -456,6 +491,11 @@
 # The size in bytes of Swift backup objects (integer value)
 #backup_swift_object_size=52428800
 
+# The size in bytes that changes are tracked for incremental
+# backups. backup_swift_object_size has to be multiple of
+# backup_swift_block_size. (integer value)
+#backup_swift_block_size=32768
+
 # The number of retries to make for Swift operations (integer
 # value)
 #backup_swift_retry_attempts=3
@@ -464,8 +504,11 @@
 # value)
 #backup_swift_retry_backoff=2
 
-# Compression algorithm (None to disable) (string value)
-#backup_compression_algorithm=zlib
+# Enable or Disable the timer to send the periodic progress
+# notifications to Ceilometer when backing up the volume to
+# the Swift backend storage. The default value is True to
+# enable the timer. (boolean value)
+#backup_swift_enable_progress_timer=true
 
 
 #
@@ -493,6 +536,34 @@
 
 
 #
+# Options defined in cinder.cmd.volume
+#
+
+# Backend override of host value. (string value)
+# Deprecated group/name - [DEFAULT]/host
+#backend_host=<None>
+
+
+#
+# Options defined in cinder.cmd.volume_usage_audit
+#
+
+# If this option is specified then the start time specified is
+# used instead of the start time of the last completed audit
+# period. (string value)
+#start_time=<None>
+
+# If this option is specified then the end time specified is
+# used instead of the end time of the last completed audit
+# period. (string value)
+#end_time=<None>
+
+# Send the volume and snapshot create and delete notifications
+# generated in the specified period. (boolean value)
+#send_actions=false
+
+
+#
 # Options defined in cinder.common.config
 #
 
@@ -632,7 +703,7 @@
 # value)
 #enabled_backends=<None>
 
-# Whether snapshots count against GigaByte quota (boolean
+# Whether snapshots count against gigabyte quota (boolean
 # value)
 #no_snapshot_gb_quota=false
 
@@ -648,6 +719,19 @@
 # (string value)
 #consistencygroup_api_class=cinder.consistencygroup.api.API
 
+# OpenStack privileged account username. Used for requests to
+# other services (such as Nova) that require an account with
+# special rights. (string value)
+#os_privileged_user_name=<None>
+
+# Password associated with the OpenStack privileged account.
+# (string value)
+#os_privileged_user_password=<None>
+
+# Tenant name associated with the OpenStack privileged
+# account. (string value)
+#os_privileged_user_tenant=<None>
+
 
 #
 # Options defined in cinder.compute
@@ -665,11 +749,11 @@
 # Match this value when searching for nova in the service
 # catalog. Format is: separated values of the form:
 # <service_type>:<service_name>:<endpoint_type> (string value)
-#nova_catalog_info=compute:nova:publicURL
+#nova_catalog_info=compute:Compute Service:publicURL
 
 # Same as nova_catalog_info, but for admin endpoint. (string
 # value)
-#nova_catalog_admin_info=compute:nova:adminURL
+#nova_catalog_admin_info=compute:Compute Service:adminURL
 
 # Override service catalog lookup with template for nova
 # endpoint e.g. http://localhost:8774/v2/%(project_id)s
@@ -696,9 +780,6 @@
 # Options defined in cinder.db.api
 #
 
-# The backend to use for db (string value)
-#db_backend=sqlalchemy
-
 # Services to be added to the available pool on create
 # (boolean value)
 #enable_new_services=true
@@ -762,112 +843,6 @@
 
 
 #
-# Options defined in cinder.openstack.common.lockutils
-#
-
-# Whether to disable inter-process locks (boolean value)
-#disable_process_locking=false
-
-# Directory to use for lock files. Default to a temp directory
-# (string value)
-#lock_path=<None>
-
-
-#
-# Options defined in cinder.openstack.common.log
-#
-
-# Print debugging output (set logging level to DEBUG instead
-# of default WARNING level). (boolean value)
-#debug=false
-
-# Print more verbose output (set logging level to INFO instead
-# of default WARNING level). (boolean value)
-#verbose=false
-
-# Log output to standard error. (boolean value)
-#use_stderr=true
-
-# Format string to use for log messages with context. (string
-# value)
-#logging_context_format_string=%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s
-
-# Format string to use for log messages without context.
-# (string value)
-#logging_default_format_string=%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s
-
-# Data to append to log format when level is DEBUG. (string
-# value)
-#logging_debug_format_suffix=%(funcName)s %(pathname)s:%(lineno)d
-
-# Prefix each line of exception output with this format.
-# (string value)
-#logging_exception_prefix=%(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s
-
-# List of logger=LEVEL pairs. (list value)
-#default_log_levels=amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN
-
-# Enables or disables publication of error events. (boolean
-# value)
-#publish_errors=false
-
-# Enables or disables fatal status of deprecations. (boolean
-# value)
-#fatal_deprecations=false
-
-# The format for an instance that is passed with the log
-# message. (string value)
-#instance_format="[instance: %(uuid)s] "
-
-# The format for an instance UUID that is passed with the log
-# message. (string value)
-#instance_uuid_format="[instance: %(uuid)s] "
-
-# The name of a logging configuration file. This file is
-# appended to any existing logging configuration files. For
-# details about logging configuration files, see the Python
-# logging module documentation. (string value)
-# Deprecated group/name - [DEFAULT]/log_config
-#log_config_append=<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
-
-
-#
 # Options defined in cinder.openstack.common.periodic_task
 #
 
@@ -887,6 +862,23 @@
 # (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 cinder.openstack.common.versionutils
+#
+
+# Enables or disables fatal status of deprecations. (boolean
+# value)
+#fatal_deprecations=false
+
 
 #
 # Options defined in cinder.scheduler.driver
@@ -1001,12 +993,12 @@
 # volume (integer value)
 #num_iser_scan_tries=3
 
-# The maximum number of iSER target IDs per host (integer
-# value)
-#iser_num_targets=100
+# This option is deprecated and unused. It will be removed in
+# the Liberty release. (integer value)
+#iser_num_targets=<None>
 
 # Prefix for iSER volumes (string value)
-#iser_target_prefix=iqn.2010-10.org.iser.openstack:
+#iser_target_prefix=iqn.2010-10.org.openstack:
 
 # The IP address that the iSER daemon is listening on (string
 # value)
@@ -1028,9 +1020,9 @@
 # value)
 #reserved_percentage=0
 
-# The maximum number of iSCSI target IDs per host (integer
-# value)
-#iscsi_num_targets=100
+# This option is deprecated and unused. It will be removed in
+# the Liberty release. (integer value)
+#iscsi_num_targets=<None>
 
 # Prefix for iSCSI volumes (string value)
 #iscsi_target_prefix=iqn.2010-10.org.openstack:
@@ -1039,6 +1031,10 @@
 # value)
 #iscsi_ip_address=$my_ip
 
+# The list of secondary IP addresses of the iSCSI daemon (list
+# value)
+#iscsi_secondary_ip_addresses=
+
 # The port that the iSCSI daemon is listening on (integer
 # value)
 #iscsi_port=3260
@@ -1057,8 +1053,12 @@
 # value)
 #use_multipath_for_image_xfer=false
 
-# Method used to wipe old volumes (valid options are: none,
-# zero, shred) (string value)
+# If this is set to True, attachment of volumes for image
+# transfer will be aborted when multipathd is not running.
+# Otherwise, it will fallback to single path. (boolean value)
+#enforce_multipath_for_image_xfer=false
+
+# Method used to wipe old volumes (string value)
 #volume_clear=zero
 
 # Size in MiB to wipe at start of old volumes. 0 => all
@@ -1071,8 +1071,10 @@
 #volume_clear_ionice=<None>
 
 # iSCSI target user-land tool to use. tgtadm is default, use
-# lioadm for LIO iSCSI support, iseradm for the ISER protocol,
-# or fake for testing. (string value)
+# lioadm for LIO iSCSI support, scstadmin for SCST target
+# support, iseradm for the ISER protocol, ietadm for iSCSI
+# Enterprise Target, iscsictl for Chelsio iSCSI Target or fake
+# for testing. (string value)
 #iscsi_helper=tgtadm
 
 # Volume configuration file storage directory (string value)
@@ -1081,8 +1083,12 @@
 # IET configuration file (string value)
 #iet_conf=/etc/iet/ietd.conf
 
-# Comma-separated list of initiator IQNs allowed to connect to
-# the iSCSI target. (From Nova compute nodes.) (string value)
+# Chiscsi (CXT) global defaults configuration file (string
+# value)
+#chiscsi_conf=/etc/chelsio-iscsi/chiscsi.conf
+
+# This option is deprecated and unused. It will be removed in
+# the next release. (string value)
 #lio_initiator_iqns=
 
 # Sets the behavior of the iSCSI target to either perform
@@ -1108,6 +1114,13 @@
 # value)
 #iscsi_write_cache=on
 
+# Determines the iSCSI protocol for new iSCSI volumes, created
+# with tgtadm or lioadm target helpers. In order to enable
+# RDMA, this parameter should be set with the value "iser".
+# The supported iSCSI protocol values are "iscsi" and "iser".
+# (string value)
+#iscsi_protocol=iscsi
+
 # The path to the client certificate key for verification, if
 # the driver supports it. (string value)
 #driver_client_cert_key=<None>
@@ -1116,6 +1129,57 @@
 # driver supports it. (string value)
 #driver_client_cert=<None>
 
+# Tell driver to use SSL for connection to backend storage if
+# the driver supports it. (boolean value)
+#driver_use_ssl=false
+
+# Float representation of the over subscription ratio when
+# thin provisioning is involved. Default ratio is 20.0,
+# meaning provisioned capacity can be 20 times of the total
+# physical capacity. If the ratio is 10.5, it means
+# provisioned capacity can be 10.5 times of the total physical
+# capacity. A ratio of 1.0 means provisioned capacity cannot
+# exceed the total physical capacity. A ratio lower than 1.0
+# will be ignored and the default value will be used instead.
+# (floating point value)
+#max_over_subscription_ratio=20.0
+
+# Certain ISCSI targets have predefined target names, SCST
+# target driver uses this name. (string value)
+#scst_target_iqn_name=<None>
+
+# SCST target implementation can choose from multiple SCST
+# target drivers. (string value)
+#scst_target_driver=iscsi
+
+# Option to enable/disable CHAP authentication for targets.
+# (boolean value)
+# Deprecated group/name - [DEFAULT]/eqlx_use_chap
+#use_chap_auth=false
+
+# CHAP user name. (string value)
+# Deprecated group/name - [DEFAULT]/eqlx_chap_login
+#chap_username=
+
+# Password for specified CHAP account name. (string value)
+# Deprecated group/name - [DEFAULT]/eqlx_chap_password
+#chap_password=
+
+# Namespace for driver private data values to be saved in.
+# (string value)
+#driver_data_namespace=<None>
+
+# String representation for an equation that will be used to
+# filter hosts. Only used when the driver filter is set to be
+# used by the Cinder scheduler. (string value)
+#filter_function=<None>
+
+# String representation for an equation that will be used to
+# determine the goodness of a host. Only used when using the
+# goodness weigher is set to be used by the Cinder scheduler.
+# (string value)
+#goodness_function=<None>
+
 
 #
 # Options defined in cinder.volume.drivers.block_device
@@ -1126,31 +1190,47 @@
 
 
 #
-# Options defined in cinder.volume.drivers.coraid
+# Options defined in cinder.volume.drivers.cloudbyte.options
 #
 
-# IP address of Coraid ESM (string value)
-#coraid_esm_address=
-
-# User name to connect to Coraid ESM (string value)
-#coraid_user=admin
-
-# Name of group on Coraid ESM to which coraid_user belongs
-# (must have admin privilege) (string value)
-#coraid_group=admin
-
-# Password to connect to Coraid ESM (string value)
-#coraid_password=password
-
-# Volume Type key name to store ESM Repository Name (string
+# These values will be used for CloudByte storage's addQos API
+# call. (dict value)
+#cb_add_qosgroup=latency:15,iops:10,graceallowed:false,iopscontrol:true,memlimit:0,throughput:0,tpcontrol:false,networkspeed:0
+
+# Driver will use this API key to authenticate against the
+# CloudByte storage's management interface. (string value)
+#cb_apikey=None
+
+# CloudByte storage specific account name. This maps to a
+# project name in OpenStack. (string value)
+#cb_account_name=None
+
+# This corresponds to the name of Tenant Storage Machine (TSM)
+# in CloudByte storage. A volume will be created in this TSM.
+# (string value)
+#cb_tsm_name=None
+
+# A retry value in seconds. Will be used by the driver to
+# check if volume creation was successful in CloudByte
+# storage. (integer value)
+#cb_confirm_volume_create_retry_interval=5
+
+# Will confirm a successful volume creation in CloudByte
+# storage by making this many number of attempts. (integer
 # value)
-#coraid_repository_key=coraid_repository
+#cb_confirm_volume_create_retries=3
+
+# These values will be used for CloudByte storage's
+# createVolume API call. (dict value)
+#cb_create_volume=compression:off,deduplication:off,blocklength:512B,sync:always,protocoltype:ISCSI,recordsize:16k
 
 
 #
 # Options defined in cinder.volume.drivers.datera
 #
 
+# DEPRECATED: This will be removed in the Liberty release. Use
+# san_login and san_password instead. This directly sets the
 # Datera API token. (string value)
 #datera_api_token=<None>
 
@@ -1165,6 +1245,25 @@
 
 
 #
+# Options defined in cinder.volume.drivers.dell.dell_storagecenter_common
+#
+
+# Storage Center System Serial Number (integer value)
+#dell_sc_ssn=64702
+
+# Dell API port (integer value)
+#dell_sc_api_port=3033
+
+# Name of the server folder to use on the Storage Center
+# (string value)
+#dell_sc_server_folder=openstack
+
+# Name of the volume folder to use on the Storage Center
+# (string value)
+#dell_sc_volume_folder=openstack
+
+
+#
 # Options defined in cinder.volume.drivers.emc.emc_vmax_common
 #
 
@@ -1217,60 +1316,69 @@
 # False. (boolean value)
 #initiator_auto_registration=false
 
+# Automatically deregister initiators after the related
+# storage group is destroyed. By default, the value is False.
+# (boolean value)
+#initiator_auto_deregistration=false
+
+# Report free_capacity_gb as 0 when the limit to maximum
+# number of pool LUNs is reached. By default, the value is
+# False. (boolean value)
+#check_max_pool_luns_threshold=false
+
+# Delete a LUN even if it is in Storage Groups. (boolean
+# value)
+#force_delete_lun_in_storagegroup=false
+
+
+#
+# Options defined in cinder.volume.drivers.emc.xtremio
+#
+
+# XMS cluster id in multi-cluster environment (string value)
+#xtremio_cluster_name=
+
 
 #
 # Options defined in cinder.volume.drivers.eqlx
 #
 
-# Group name to use for creating volumes (string value)
+# Group name to use for creating volumes. Defaults to
+# "group-0". (string value)
 #eqlx_group_name=group-0
 
-# Timeout for the Group Manager cli command execution (integer
-# value)
+# Timeout for the Group Manager cli command execution. Default
+# is 30. (integer value)
 #eqlx_cli_timeout=30
 
-# Maximum retry count for reconnection (integer value)
+# Maximum retry count for reconnection. Default is 5. (integer
+# value)
 #eqlx_cli_max_retries=5
 
-# Use CHAP authentication for targets? (boolean value)
+# Use CHAP authentication for targets. Note that this option
+# is deprecated in favour of "use_chap_auth" as specified in
+# cinder/volume/driver.py and will be removed in next release.
+# (boolean value)
 #eqlx_use_chap=false
 
-# Existing CHAP account name (string value)
+# Existing CHAP account name. Note that this option is
+# deprecated in favour of "chap_username" as specified in
+# cinder/volume/driver.py and will be removed in next release.
+# (string value)
 #eqlx_chap_login=admin
 
-# Password for specified CHAP account name (string value)
+# Password for specified CHAP account name. Note that this
+# option is deprecated in favour of "chap_password" as
+# specified in cinder/volume/driver.py and will be removed in
+# the next release (string value)
 #eqlx_chap_password=password
 
-# Pool in which volumes will be created (string value)
+# Pool in which volumes will be created. Defaults to
+# "default". (string value)
 #eqlx_pool=default
 
 
 #
-# Options defined in cinder.volume.drivers.fujitsu_eternus_dx_common
-#
-
-# The configuration file for the Cinder SMI-S driver (string
-# value)
-#cinder_smis_config_file=/etc/cinder/cinder_fujitsu_eternus_dx.xml
-
-
-#
-# Options defined in cinder.volume.drivers.fusionio.ioControl
-#
-
-# amount of time wait for iSCSI target to come online (integer
-# value)
-#fusionio_iocontrol_targetdelay=5
-
-# number of retries for GET operations (integer value)
-#fusionio_iocontrol_retry=3
-
-# verify the array certificate on each transaction (boolean
-# value)
-#fusionio_iocontrol_verify_cert=true
-
-
-#
 # Options defined in cinder.volume.drivers.glusterfs
 #
 
@@ -1413,6 +1521,20 @@
 
 
 #
+# Options defined in cinder.volume.drivers.ibm.flashsystem
+#
+
+# Connection protocol should be FC. (string value)
+#flashsystem_connection_protocol=FC
+
+# Connect with multipath (FC only). (boolean value)
+#flashsystem_multipath_enabled=false
+
+# Allows vdisk to multi host mapping. (boolean value)
+#flashsystem_multihostmap_enabled=true
+
+
+#
 # Options defined in cinder.volume.drivers.ibm.gpfs
 #
 
@@ -1458,22 +1580,6 @@
 # Options defined in cinder.volume.drivers.ibm.ibmnas
 #
 
-# IP address or Hostname of NAS system. (string value)
-#nas_ip=
-
-# User name to connect to NAS system. (string value)
-#nas_login=admin
-
-# Password to connect to NAS system. (string value)
-#nas_password=
-
-# SSH port to use to connect to NAS system. (integer value)
-#nas_ssh_port=22
-
-# Filename of private key to use for SSH authentication.
-# (string value)
-#nas_private_key=
-
 # IBMNAS platform type to be used as backend storage; valid
 # values are - v7ku : for using IBM Storwize V7000 Unified,
 # sonas : for using IBM Scale Out NAS, gpfs-nas : for using
@@ -1556,8 +1662,7 @@
 # value)
 #xiv_ds8k_proxy=xiv_ds8k_openstack.nova_proxy.XIVDS8KNovaProxy
 
-# Connection type to the IBM Storage Array
-# (fibre_channel|iscsi) (string value)
+# Connection type to the IBM Storage Array (string value)
 #xiv_ds8k_connection_type=iscsi
 
 # CHAP authentication mode, effective only for iscsi
@@ -1578,10 +1683,15 @@
 # value)
 #lvm_mirrors=0
 
-# Type of LVM volumes to deploy; (default or thin) (string
-# value)
+# Type of LVM volumes to deploy (string value)
 #lvm_type=default
 
+# LVM conf file to use for the LVM driver in Cinder; this
+# setting is ignored if the specified file does not exist (You
+# can also specify 'None' to not use a conf file even if one
+# exists). (string value)
+#lvm_conf_file=/etc/cinder/lvm.conf
+
 
 #
 # Options defined in cinder.volume.drivers.netapp.options
@@ -1595,6 +1705,13 @@
 # system. (string value)
 #netapp_vfiler=<None>
 
+# The name of the config.conf stanza for a Data ONTAP (7-mode)
+# HA partner.  This option is only used by the driver when
+# connecting to an instance with a storage family of Data
+# ONTAP operating in 7-Mode, and it is required if the storage
+# protocol selected is FC. (string value)
+#netapp_partner_backend_name=<None>
+
 # Administrative user account name used to access the storage
 # system or proxy server. (string value)
 #netapp_login=<None>
@@ -1605,14 +1722,7 @@
 
 # This option specifies the virtual storage server (Vserver)
 # name on the storage cluster on which provisioning of block
-# storage volumes should occur. If using the NFS storage
-# protocol, this parameter is mandatory for storage service
-# catalog support (utilized by Cinder volume type extra_specs
-# support). If this option is specified, the exports belonging
-# to the Vserver will only be used for provisioning in the
-# future. Block storage volumes on exports not belonging to
-# the Vserver specified by this option will continue to
-# function normally. (string value)
+# storage volumes should occur. (string value)
 #netapp_vserver=<None>
 
 # The hostname (or IP address) for the storage system or proxy
@@ -1692,11 +1802,11 @@
 #netapp_size_multiplier=1.2
 
 # This option is only utilized when the storage protocol is
-# configured to use iSCSI. This option is used to restrict
-# provisioning to the specified controller volumes. Specify
-# the value of this option to be a comma separated list of
-# NetApp controller volume names to be used for provisioning.
-# (string value)
+# configured to use iSCSI or FC. This option is used to
+# restrict provisioning to the specified controller volumes.
+# Specify the value of this option to be a comma separated
+# list of NetApp controller volume names to be used for
+# provisioning. (string value)
 #netapp_volume_list=<None>
 
 # The storage family type used on the storage system; valid
@@ -1706,89 +1816,15 @@
 #netapp_storage_family=ontap_cluster
 
 # The storage protocol to be used on the data path with the
-# storage system; valid values are iscsi or nfs. (string
-# value)
+# storage system. (string value)
 #netapp_storage_protocol=<None>
 
 # The transport protocol used when communicating with the
-# storage system or proxy server. Valid values are http or
-# https. (string value)
+# storage system or proxy server. (string value)
 #netapp_transport_type=http
 
 
 #
-# Options defined in cinder.volume.drivers.nexenta.options
-#
-
-# IP address of Nexenta SA (string value)
-#nexenta_host=
-
-# HTTP port to connect to Nexenta REST API server (integer
-# value)
-#nexenta_rest_port=2000
-
-# Use http or https for REST connection (default auto) (string
-# value)
-#nexenta_rest_protocol=auto
-
-# User name to connect to Nexenta SA (string value)
-#nexenta_user=admin
-
-# Password to connect to Nexenta SA (string value)
-#nexenta_password=nexenta
-
-# Nexenta target portal port (integer value)
-#nexenta_iscsi_target_portal_port=3260
-
-# SA Pool that holds all volumes (string value)
-#nexenta_volume=cinder
-
-# IQN prefix for iSCSI targets (string value)
-#nexenta_target_prefix=iqn.1986-03.com.sun:02:cinder-
-
-# Prefix for iSCSI target groups on SA (string value)
-#nexenta_target_group_prefix=cinder/
-
-# File with the list of available nfs shares (string value)
-#nexenta_shares_config=/etc/cinder/nfs_shares
-
-# Base directory that contains NFS share mount points (string
-# value)
-#nexenta_mount_point_base=$state_path/mnt
-
-# Enables or disables the creation of volumes as sparsed files
-# that take no space. If disabled (False), volume is created
-# as a regular file, which takes a long time. (boolean value)
-#nexenta_sparsed_volumes=true
-
-# Default compression value for new ZFS folders. (string
-# value)
-#nexenta_volume_compression=on
-
-# If set True cache NexentaStor appliance volroot option
-# value. (boolean value)
-#nexenta_nms_cache_volroot=true
-
-# Enable stream compression, level 1..9. 1 - gives best speed;
-# 9 - gives best compression. (integer value)
-#nexenta_rrmgr_compression=0
-
-# TCP Buffer size in KiloBytes. (integer value)
-#nexenta_rrmgr_tcp_buf_size=4096
-
-# Number of TCP connections. (integer value)
-#nexenta_rrmgr_connections=2
-
-# Block size for volumes (default=blank means 8KB) (string
-# value)
-#nexenta_blocksize=
-
-# Enables or disables the creation of sparse volumes (boolean
-# value)
-#nexenta_sparse=false
-
-
-#
 # Options defined in cinder.volume.drivers.nfs
 #
 
@@ -1818,6 +1854,11 @@
 # nfs man page for details. (string value)
 #nfs_mount_options=<None>
 
+# The number of attempts to mount nfs shares before raising an
+# error.  At least one attempt will be made to mount an nfs
+# share, regardless of the value specified. (integer value)
+#nfs_mount_attempts=3
+
 
 #
 # Options defined in cinder.volume.drivers.nimble
@@ -1831,6 +1872,15 @@
 
 
 #
+# Options defined in cinder.volume.drivers.openvstorage
+#
+
+# Vpool to use for volumes - backend is defined by vpool not
+# by us. (string value)
+#vpool_name=
+
+
+#
 # Options defined in cinder.volume.drivers.prophetstor.options
 #
 
@@ -1851,6 +1901,31 @@
 
 
 #
+# Options defined in cinder.volume.drivers.quobyte
+#
+
+# URL to the Quobyte volume e.g., quobyte://<DIR host>/<volume
+# name> (string value)
+#quobyte_volume_url=<None>
+
+# Path to a Quobyte Client configuration file. (string value)
+#quobyte_client_cfg=<None>
+
+# Create volumes as sparse files which take no space. If set
+# to False, volume is created as regular file.In such case
+# volume creation takes a lot of time. (boolean value)
+#quobyte_sparsed_volumes=true
+
+# Create volumes as QCOW2 files rather than raw files.
+# (boolean value)
+#quobyte_qcow2_volumes=true
+
+# Base dir containing the mount point for the Quobyte volume.
+# (string value)
+#quobyte_mount_point_base=$state_path/mnt
+
+
+#
 # Options defined in cinder.volume.drivers.rbd
 #
 
@@ -1874,7 +1949,8 @@
 
 # Directory where temporary image files are stored when the
 # volume driver does not write them directly to the volume.
-# (string value)
+# Warning: this option is now deprecated, please use
+# image_conversion_dir instead. (string value)
 #volume_tmp_dir=<None>
 
 # Maximum number of nested volume clones that are taken before
@@ -1912,6 +1988,32 @@
 # (string value)
 #nas_private_key=
 
+# Allow network-attached storage systems to operate in a
+# secure environment where root level access is not permitted.
+# If set to False, access is as the root user and insecure. If
+# set to True, access is not as root. If set to auto, a check
+# is done to determine if this is a new installation: True is
+# used if so, otherwise False. Default is auto. (string value)
+#nas_secure_file_operations=auto
+
+# Set more secure file permissions on network-attached storage
+# volume files to restrict broad other/world access. If set to
+# False, volumes are created with open permissions. If set to
+# True, volumes are created with permissions for the cinder
+# user and group (660). If set to auto, a check is done to
+# determine if this is a new installation: True is used if so,
+# otherwise False. Default is auto. (string value)
+#nas_secure_file_permissions=auto
+
+# Path to the share to use for storing Cinder volumes. For
+# example:  "/srv/export1" for an NFS server export available
+# at 10.0.5.10:/srv/export1 . (string value)
+#nas_share_path=
+
+# Options used to mount the storage backend file system where
+# Cinder volumes are stored. (string value)
+#nas_mount_options=<None>
+
 
 #
 # Options defined in cinder.volume.drivers.san.hp.hp_3par_common
@@ -1927,11 +2029,11 @@
 # 3PAR Super user password (string value)
 #hp3par_password=
 
-# The CPG to use for volume creation (string value)
+# List of the CPG(s) to use for volume creation (list value)
 #hp3par_cpg=OpenStack
 
-# The CPG to use for Snapshots for volumes. If empty
-# hp3par_cpg will be used (string value)
+# The CPG to use for Snapshots for volumes. If empty the
+# userCPG will be used. (string value)
 #hp3par_cpg_snap=
 
 # The time in hours to retain a snapshot.  You can't delete it
@@ -1979,14 +2081,6 @@
 
 
 #
-# Options defined in cinder.volume.drivers.san.hp.hp_msa_common
-#
-
-# The VDisk to use for volume creation. (string value)
-#msa_vdisk=OpenStack
-
-
-#
 # Options defined in cinder.volume.drivers.san.san
 #
 
@@ -2027,15 +2121,6 @@
 
 
 #
-# Options defined in cinder.volume.drivers.san.solaris
-#
-
-# The ZFS path under which to create zvols for volumes.
-# (string value)
-#san_zfs_volume_base=rpool/
-
-
-#
 # Options defined in cinder.volume.drivers.scality
 #
 
@@ -2058,8 +2143,7 @@
 #smbfs_shares_config=/etc/cinder/smbfs_shares
 
 # Default format that will be used when creating volumes if no
-# volume format is specified. Can be set to: raw, qcow2, vhd
-# or vhdx. (string value)
+# volume format is specified. (string value)
 #smbfs_default_volume_format=qcow2
 
 # Create volumes as sparsed files which take no space rather
@@ -2087,15 +2171,25 @@
 
 
 #
+# Options defined in cinder.volume.drivers.solaris.nfs
+#
+
+# Schedule volumes round robin across NFS shares. (boolean
+# value)
+#nfs_round_robin=true
+
+
+#
 # Options defined in cinder.volume.drivers.solaris.zfs
 #
 
-# The base dataset for ZFS cinder volumes. (string value)
+# The base dataset for ZFS volumes. (string value)
 #zfs_volume_base=rpool/cinder
 
 # iSCSI target group name. (string value)
 #zfs_target_group=tgt-grp
 
+
 #
 # Options defined in cinder.volume.drivers.solidfire
 #
@@ -2112,12 +2206,48 @@
 # default behavior).  The default is NO prefix. (string value)
 #sf_account_prefix=<None>
 
+# Account name on the SolidFire Cluster to use as owner of
+# template/cache volumes (created if does not exist). (string
+# value)
+#sf_template_account_name=openstack-vtemplate
+
+# Create an internal cache of copy of images when a bootable
+# volume is created to eliminate fetch from glance and qemu-
+# conversion on subsequent calls. (boolean value)
+#sf_allow_template_caching=true
+
 # SolidFire API port. Useful if the device api is behind a
 # proxy on a different port. (integer value)
 #sf_api_port=443
 
 
 #
+# Options defined in cinder.volume.drivers.srb
+#
+
+# Comma-separated list of REST servers IP to connect to. (eg
+# http://IP1/,http://IP2:81/path (string value)
+#srb_base_urls=<None>
+
+
+#
+# Options defined in cinder.volume.drivers.violin.v6000_common
+#
+
+# IP address or hostname of mg-a (string value)
+#gateway_mga=<None>
+
+# IP address or hostname of mg-b (string value)
+#gateway_mgb=<None>
+
+# Use igroups to manage targets and initiators (boolean value)
+#use_igroups=false
+
+# Global backend request timeout, in seconds (integer value)
+#request_timeout=300
+
+
+#
 # Options defined in cinder.volume.drivers.vmware.vmdk
 #
 
@@ -2180,43 +2310,25 @@
 
 
 #
-# Options defined in cinder.volume.drivers.zadara
+# Options defined in cinder.volume.drivers.xio
 #
 
-# Management IP of Zadara VPSA (string value)
-#zadara_vpsa_ip=<None>
-
-# Zadara VPSA port number (string value)
-#zadara_vpsa_port=<None>
-
-# Use SSL connection (boolean value)
-#zadara_vpsa_use_ssl=false
-
-# User name for the VPSA (string value)
-#zadara_user=<None>
-
-# Password for the VPSA (string value)
-#zadara_password=<None>
-
-# Name of VPSA storage pool for volumes (string value)
-#zadara_vpsa_poolname=<None>
-
-# Default thin provisioning policy for volumes (boolean value)
-#zadara_vol_thin=true
-
-# Default encryption policy for volumes (boolean value)
-#zadara_vol_encrypt=false
-
-# Default template for VPSA volume names (string value)
-#zadara_vol_name_template=OS_%s
-
-# Automatically detach from servers on volume delete (boolean
-# value)
-#zadara_vpsa_auto_detach_on_delete=true
-
-# Don't halt on deletion of non-existing volumes (boolean
-# value)
-#zadara_vpsa_allow_nonexistent_delete=true
+# Default storage pool for volumes. (integer value)
+#ise_storage_pool=1
+
+# Raid level for ISE volumes. (integer value)
+#ise_raid=1
+
+# Number of retries (per port) when establishing connection to
+# ISE management port. (integer value)
+#ise_connection_retries=5
+
+# Interval (secs) between retries. (integer value)
+#ise_retry_interval=1
+
+# Number on retries to get completion status after issuing a
+# command to ISE. (integer value)
+#ise_completion_retries=30
 
 
 #
@@ -2229,20 +2341,18 @@
 # Project name. (string value)
 #zfssa_project=<None>
 
-# Block size: 512, 1k, 2k, 4k, 8k, 16k, 32k, 64k, 128k.
-# (string value)
+# Block size. (string value)
 #zfssa_lun_volblocksize=8k
 
 # Flag to enable sparse (thin-provisioned): True, False.
 # (boolean value)
 #zfssa_lun_sparse=false
 
-# Data compression-off, lzjb, gzip-2, gzip, gzip-9. (string
-# value)
-#zfssa_lun_compression=
-
-# Synchronous write bias-latency, throughput. (string value)
-#zfssa_lun_logbias=
+# Data compression. (string value)
+#zfssa_lun_compression=off
+
+# Synchronous write bias. (string value)
+#zfssa_lun_logbias=latency
 
 # iSCSI initiator group. (string value)
 #zfssa_initiator_group=
@@ -2256,6 +2366,9 @@
 # iSCSI initiator CHAP password. (string value)
 #zfssa_initiator_password=
 
+# iSCSI initiators configuration. (string value)
+#zfssa_initiator_config=
+
 # iSCSI target group name. (string value)
 #zfssa_target_group=tgt-grp
 
@@ -2278,17 +2391,51 @@
 
 
 #
+# Options defined in cinder.volume.drivers.zfssa.zfssanfs
+#
+
+# Data path IP address (string value)
+#zfssa_data_ip=<None>
+
+# HTTPS port number (string value)
+#zfssa_https_port=443
+
+# Options to be passed while mounting share over nfs (string
+# value)
+#zfssa_nfs_mount_options=
+
+# Storage pool name. (string value)
+#zfssa_nfs_pool=
+
+# Project name. (string value)
+#zfssa_nfs_project=NFSProject
+
+# Share name. (string value)
+#zfssa_nfs_share=nfs_share
+
+# Data compression. (string value)
+#zfssa_nfs_share_compression=off
+
+# Synchronous write bias-latency, throughput. (string value)
+#zfssa_nfs_share_logbias=latency
+
+# REST connection timeout. (seconds) (integer value)
+#zfssa_rest_timeout=<None>
+
+
+#
 # Options defined in cinder.volume.manager
 #
 
 # Driver to use for volume creation (string value)
 # The local ZFS driver provides direct access to ZFS volumes that it
 # creates. The other listed drivers provide access to ZFS volumes via
-# iSCSI or Fibre Channel and are suitable for cases where block storage
+# iSCSI, Fibre Channel, or NFS and are suitable for cases where block storage
 # for Nova compute instances is shared.
 volume_driver=cinder.volume.drivers.solaris.zfs.ZFSVolumeDriver
 #volume_driver=cinder.volume.drivers.solaris.zfs.ZFSISCSIDriver
 #volume_driver=cinder.volume.drivers.solaris.zfs.ZFSFCDriver
+#volume_driver=cinder.volume.drivers.solaris.nfs.ZfsNfsVolumeDriver
 #volume_driver=cinder.volume.drivers.zfssa.zfssaiscsi.ZFSSAISCSIDriver
 
 # Timeout for creating the volume to migrate to when
@@ -2303,7 +2450,12 @@
 #zoning_mode=none
 
 # User defined capabilities, a JSON formatted string
-# specifying key/value pairs. (string value)
+# specifying key/value pairs. The key/value pairs can be used
+# by the CapabilitiesFilter to select between backends when
+# requests specify volume types. For example, specifying a
+# service level or the geographical location of a backend,
+# then creating a volume type to allow the user to select by
+# these different properties. (string value)
 #extra_capabilities={}
 
 
@@ -2460,20 +2612,22 @@
 # connection lost. (boolean value)
 #use_db_reconnect=false
 
-# Seconds between database connection retries. (integer value)
+# Seconds between retries of a database transaction. (integer
+# value)
 #db_retry_interval=1
 
-# If True, increases the interval between database connection
-# retries up to db_max_retry_interval. (boolean value)
+# 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
-# database connection retries. (integer value)
+# retries of a database operation. (integer value)
 #db_max_retry_interval=10
 
-# Maximum database connection retries before error is raised.
-# Set to -1 to specify an infinite retry count. (integer
-# value)
+# 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
 
 
@@ -2513,15 +2667,16 @@
 # value)
 #zone_driver=cinder.zonemanager.drivers.brocade.brcd_fc_zone_driver.BrcdFCZoneDriver
 
-# Zoning policy configured by user (string value)
+# Zoning policy configured by user; valid values include
+# "initiator-target" or "initiator" (string value)
 #zoning_policy=initiator-target
 
-# Comma separated list of fibre channel fabric names. This
+# Comma separated list of Fibre Channel fabric names. This
 # list of names is used to retrieve other SAN credentials for
 # connecting to each SAN fabric (string value)
 #fc_fabric_names=<None>
 
-# FC San Lookup Service (string value)
+# FC SAN Lookup Service (string value)
 #fc_san_lookup_service=cinder.zonemanager.drivers.brocade.brcd_fc_san_lookup_service.BrcdFCSanLookupService
 
 
@@ -2550,7 +2705,7 @@
 #
 
 # Authentication url for encryption service. (string value)
-#encryption_auth_url=http://localhost:5000/v2.0
+encryption_auth_url=http://localhost:5000/v2.0
 
 # Url for encryption service. (string value)
 #encryption_api_url=http://localhost:9311/v1
@@ -2562,73 +2717,34 @@
 # Options defined in keystonemiddleware.auth_token
 #
 
-# 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 public Identity API endpoint (string value)
+# Complete public Identity API endpoint. (string value)
 auth_uri=http://127.0.0.1:5000/v2.0/
 
-# 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/
-
-# API version of the admin Identity API endpoint (string
+# 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)
+# components. (boolean value)
 #delay_auth_decision=false
 
 # Request timeout value for communicating with Identity API
-# server. (boolean value)
+# 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
 
-# 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>
-
-# Keystone account username (string value)
-admin_user=%SERVICE_USER%
-
-# Keystone account password (string value)
-admin_password=%SERVICE_PASSWORD%
-
-# Keystone service account tenant name to validate user tokens
-# (string value)
-admin_tenant_name=%SERVICE_TENANT_NAME%
-
-# Env key for the swift cache (string value)
+# Env key for the swift cache. (string value)
 #cache=<None>
 
-# Required if Keystone server requires client certificate
+# Required if identity server requires client certificate
 # (string value)
 #certfile=<None>
 
-# Required if Keystone server requires client certificate
+# Required if identity server requires client certificate
 # (string value)
 #keyfile=<None>
 
@@ -2639,7 +2755,7 @@
 # Verify HTTPS connections. (boolean value)
 #insecure=false
 
-# Directory used to cache files related to PKI tokens (string
+# Directory used to cache files related to PKI tokens. (string
 # value)
 signing_dir=$state_path/keystone-signing
 
@@ -2662,7 +2778,7 @@
 # value)
 #revocation_cache_time=10
 
-# (optional) if defined, indicate whether token data should be
+# (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
@@ -2671,38 +2787,38 @@
 # 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
+# (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
+# (Optional) Number of seconds memcached server is considered
 # dead before it is tried again. (integer value)
 #memcache_pool_dead_retry=300
 
-# (optional) max total number of open connections to every
+# (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
+# (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
+# (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
+# (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
+# (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
+# (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)
@@ -2721,7 +2837,7 @@
 
 # If true, the revocation list will be checked for cached
 # tokens. This requires that PKI tokens are configured on the
-# Keystone server. (boolean value)
+# identity server. (boolean value)
 #check_revocations_for_cached=false
 
 # Hash algorithms to use for hashing PKI tokens. This may be a
@@ -2736,6 +2852,51 @@
 # (list value)
 #hash_algorithms=md5
 
+# Prefix to prepend at the beginning of the path. Deprecated,
+# use identity_uri. (string value)
+#auth_admin_prefix=
+
+# Host providing the admin Identity API endpoint. Deprecated,
+# use identity_uri. (string value)
+#auth_host=127.0.0.1
+
+# Port of the admin Identity API endpoint. Deprecated, use
+# identity_uri. (integer value)
+#auth_port=35357
+
+# Protocol of the admin Identity API endpoint (http or https).
+# Deprecated, use identity_uri. (string value)
+#auth_protocol=https
+
+# Complete admin Identity API endpoint. This should specify
+# the unversioned root endpoint e.g. https://localhost:35357/
+# (string value)
+identity_uri=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>
+
+# Service username. (string value)
+admin_user=%SERVICE_USER%
+
+# Service user password. (string value)
+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>
+
 
 [matchmaker_redis]
 
@@ -2764,12 +2925,28 @@
 #ringfile=/etc/oslo/matchmaker_ring.json
 
 
+[oslo_concurrency]
+
+#
+# Options defined in 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
+
+
 [oslo_messaging_amqp]
 
 #
 # Options defined in oslo.messaging
 #
-# NOTE: Options in this group are supported when using oslo.messaging >=1.5.0.
 
 # address prefix used when sending to a specific server
 # (string value)
@@ -2813,6 +2990,170 @@
 #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
+
+
+[oslo_messaging_rabbit]
+
+#
+# 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
+
+# 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=
+
+# SSL key file (valid only if SSL enabled). (string value)
+#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
+
+# RabbitMQ HA cluster host:port pairs. (list value)
+#rabbit_hosts=$rabbit_host:$rabbit_port
+
+# Connect over SSL for RabbitMQ. (boolean value)
+#rabbit_use_ssl=false
+
+# The RabbitMQ userid. (string value)
+#rabbit_userid=guest
+
+# The RabbitMQ password. (string value)
+#rabbit_password=guest
+
+# The RabbitMQ login method. (string value)
+#rabbit_login_method=AMQPLAIN
+
+# The RabbitMQ virtual host. (string value)
+#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)
+#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
+# 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
+
+
+[oslo_middleware]
+
+#
+# Options defined in oslo.middleware
+#
+
+# The maximum body size for each  request, in bytes. (integer
+# value)
+# Deprecated group/name - [DEFAULT]/osapi_max_request_body_size
+# Deprecated group/name - [DEFAULT]/max_request_body_size
+#max_request_body_size=114688
+
+
 [profiler]
 
 #
@@ -2826,22 +3167,3 @@
 #trace_sqlalchemy=false
 
 
-[ssl]
-
-#
-# Options defined in cinder.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>
-
-
--- a/components/openstack/cinder/files/cinder.exec_attr	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/cinder/files/cinder.exec_attr	Fri Feb 05 17:54:17 2016 -0500
@@ -15,6 +15,10 @@
 
 cinder-volume:solaris:cmd:RO::/usr/sbin/itadm:uid=0
 
+cinder-volume:solaris:cmd:RO::/usr/sbin/mount:privs=sys_mount,net_privaddr
+
 cinder-volume:solaris:cmd:RO::/usr/sbin/stmfadm:euid=0
 
+cinder-volume:solaris:cmd:RO::/usr/sbin/umount:privs=sys_mount,net_privaddr
+
 cinder-volume:solaris:cmd:RO::/usr/sbin/zfs:privs=sys_config,sys_mount
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/cinder/files/solaris/nfs.py	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,232 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+# Copyright (c) 2012 OpenStack LLC.
+# All Rights Reserved.
+#
+# 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.
+"""
+Volume driver for Solaris ZFS NFS storage
+"""
+
+import os
+
+from oslo_config import cfg
+from oslo_log import log as logging
+from oslo_utils import units
+
+from cinder import exception
+from cinder.i18n import _
+from cinder.volume.drivers import nfs
+
+ZFS_NFS_VERSION = '1.0.0'
+
+LOG = logging.getLogger(__name__)
+
+solaris_zfs_nfs_opts = [
+    cfg.BoolOpt('nfs_round_robin',
+                default=True,
+                help=('Schedule volumes round robin across NFS shares.')),
+]
+
+CONF = cfg.CONF
+CONF.register_opts(solaris_zfs_nfs_opts)
+
+
+class ZfsNfsVolumeDriver(nfs.NfsDriver):
+    """Local ZFS NFS volume operations."""
+
+    driver_volume_type = 'nfs'
+    driver_prefix = 'nfs'
+    volume_backend_name = 'Solaris_NFS'
+
+    def __init__(self, *args, **kwargs):
+        super(ZfsNfsVolumeDriver, self).__init__(*args, **kwargs)
+        self.configuration.append_config_values(solaris_zfs_nfs_opts)
+
+        self.last_rr_pos = None
+
+        if self.configuration.nfs_mount_options:
+            LOG.warning(_("Solaris NFS driver ignores mount options"))
+
+    def _update_volume_stats(self):
+        """Retrieve volume status info."""
+
+        stats = {}
+        backend_name = self.configuration.safe_get('volume_backend_name')
+        stats["volume_backend_name"] = backend_name or self.__class__.__name__
+        stats["driver_version"] = ZFS_NFS_VERSION
+        stats["vendor_name"] = 'Oracle'
+        stats['storage_protocol'] = self.driver_volume_type
+
+        self._ensure_shares_mounted()
+
+        global_capacity = 0
+        global_free = 0
+        for share in self._mounted_shares:
+            capacity, free, used = self._get_capacity_info(share)
+            global_capacity += capacity
+            global_free += free
+
+        stats['total_capacity_gb'] = global_capacity / float(units.Gi)
+        stats['free_capacity_gb'] = global_free / float(units.Gi)
+        stats['reserved_percentage'] = 0
+        stats['QoS_support'] = False
+        self._stats = stats
+
+    def _create_sparsed_file(self, path, size):
+        """Creates a sparse file of a given size in GiB."""
+        self._execute('/usr/bin/truncate', '-s', '%sG' % size, path)
+
+    def _create_regular_file(self, path, size):
+        """Creates a regular file of given size in GiB."""
+
+        block_size_mb = 1
+        block_count = size * units.Gi / (block_size_mb * units.Mi)
+
+        self._execute('/usr/bin/dd', 'if=/dev/zero', 'of=%s' % path,
+                      'bs=%dM' % block_size_mb,
+                      'count=%d' % block_count)
+
+    def _set_rw_permissions(self, path):
+        """Sets access permissions for given NFS path.
+
+        :param path: the volume file path.
+        """
+        os.chmod(path, 0o660)
+
+    def _set_rw_permissions_for_all(self, path):
+        """Sets 666 permissions for the path."""
+        mode = os.stat(path).st_mode
+        os.chmod(path, mode | 0o666)
+
+    def _set_rw_permissions_for_owner(self, path):
+        """Sets read-write permissions to the owner for the path."""
+        mode = os.stat(path).st_mode
+        os.chmod(path, mode | 0o600)
+
+    def _delete(self, path):
+        os.unlink(path)
+
+    def _get_capacity_info(self, nfs_share):
+        """Calculate available space on the NFS share.
+
+        :param nfs_share: example 172.18.194.100:/var/nfs
+        """
+
+        mount_point = self._get_mount_point_for_share(nfs_share)
+
+        st = os.statvfs(mount_point)
+        total_available = st.f_frsize * st.f_bavail
+        total_size = st.f_frsize * st.f_blocks
+
+        du, _ = self._execute('/usr/bin/gdu', '-sb', '--apparent-size',
+                              '--exclude', '*snapshot*', mount_point)
+        total_allocated = float(du.split()[0])
+        return total_size, total_available, total_allocated
+
+    def _round_robin(self, sharelist):
+        """
+        Implement a round robin generator for share list
+        """
+
+        mylen = len(sharelist)
+
+        if self.last_rr_pos is None:
+            start_pos = 0
+        else:
+            start_pos = (self.last_rr_pos + 1) % mylen
+
+        pos = start_pos
+        while True:
+            yield sharelist[pos], pos
+            pos = (pos + 1) % mylen
+            if pos == start_pos:
+                break
+
+    def _find_share(self, volume_size_in_gib):
+        """Choose NFS share among available ones for given volume size.
+
+        For instances with more than one share that meets the criteria, the
+        share with the least "allocated" space will be selected.
+
+        :param volume_size_in_gib: int size in GB
+        """
+
+        if not self._mounted_shares:
+            raise exception.NfsNoSharesMounted()
+
+        target_share = None
+        if self.configuration.nfs_round_robin:
+            # Round Robin volume placement on shares
+
+            LOG.debug(_("_find_share using round robin"))
+
+            for nfs_share, pos in self._round_robin(self._mounted_shares):
+                if not self._is_share_eligible(nfs_share, volume_size_in_gib):
+                    continue
+                target_share = nfs_share
+                self.last_rr_pos = pos
+                break
+        else:
+            # Place volume on share with the most free space.
+
+            LOG.debug(_("_find_share using select most free"))
+
+            target_share_reserved = 0
+
+            for nfs_share in self._mounted_shares:
+                if not self._is_share_eligible(nfs_share, volume_size_in_gib):
+                    continue
+                total_size, total_available, total_allocated = \
+                    self._get_capacity_info(nfs_share)
+                if target_share is not None:
+                    if target_share_reserved > total_allocated:
+                        target_share = nfs_share
+                        target_share_reserved = total_allocated
+                else:
+                    target_share = nfs_share
+                    target_share_reserved = total_allocated
+
+        if target_share is None:
+            raise exception.NfsNoSuitableShareFound(
+                volume_size=volume_size_in_gib)
+
+        LOG.debug('Selected %s as target nfs share.', target_share)
+
+        return target_share
+
+    def set_nas_security_options(self, is_new_cinder_install):
+        """Secure NAS options.
+
+        For Solaris we always operate in a secure mode and do not
+        rely on root or any rootwrap utilities.
+
+        With RBAC we can do what we need as the cinder user.  We
+        set the nas_secure_file.XXX to be true by default.  We ignore
+        any conf file setting for these string vars.
+
+        We don't ever use these nas_secure_file_XXX vars in this driver
+        but we still set the value to true.  This might prevent admin/users
+        from opening bugs stating we are not running in a secure mode.
+        """
+
+        self.configuration.nas_secure_file_operations = 'true'
+        self.configuration.nas_secure_file_permissions = 'true'
+        self._execute_as_root = False
+
+        LOG.debug('NAS variable secure_file_permissions setting is: %s' %
+                  self.configuration.nas_secure_file_permissions)
+
+        LOG.debug('NAS variable secure_file_operations setting is: %s' %
+                  self.configuration.nas_secure_file_operations)
--- a/components/openstack/cinder/files/solaris/solarisfc.py	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/cinder/files/solaris/solarisfc.py	Fri Feb 05 17:54:17 2016 -0500
@@ -20,10 +20,11 @@
 import platform
 import time
 
+from oslo_concurrency import processutils as putils
+from oslo_log import log as logging
+
 from cinder.brick import exception
 from cinder.openstack.common.gettextutils import _
-from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils as putils
 
 LOG = logging.getLogger(__name__)
 
--- a/components/openstack/cinder/files/solaris/solarisiscsi.py	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/cinder/files/solaris/solarisiscsi.py	Fri Feb 05 17:54:17 2016 -0500
@@ -20,10 +20,11 @@
 import platform
 import time
 
+from oslo_concurrency import processutils as putils
+from oslo_log import log as logging
+
 from cinder.brick import exception
 from cinder.openstack.common.gettextutils import _
-from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils as putils
 
 LOG = logging.getLogger(__name__)
 
--- a/components/openstack/cinder/files/solaris/zfs.py	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/cinder/files/solaris/zfs.py	Fri Feb 05 17:54:17 2016 -0500
@@ -2,7 +2,7 @@
 # Copyright (c) 2012 OpenStack LLC.
 # All Rights Reserved.
 #
-# 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
@@ -22,21 +22,28 @@
 import abc
 import fcntl
 import os
-import socket
 import subprocess
 import time
 
-from oslo.config import cfg
+from oslo_concurrency import processutils
+from oslo_config import cfg
+from oslo_log import log as logging
 import paramiko
 
 from cinder import exception
-from cinder.i18n import _
+from cinder.i18n import _, _LE, _LI
 from cinder.image import image_utils
-from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder.volume import driver
 from cinder.volume.drivers.san.san import SanDriver
 
+from eventlet.green import socket
+from eventlet.green.OpenSSL import SSL
+
+import rad.client as radc
+import rad.connect as radcon
+import rad.bindings.com.oracle.solaris.rad.zfsmgr_1 as zfsmgr
+import rad.auth as rada
+
 from solaris_install.target.size import Size
 
 FLAGS = cfg.CONF
@@ -53,8 +60,53 @@
 FLAGS.register_opts(solaris_zfs_opts)
 
 
+def connect_tls(host, port=12302, locale=None, ca_certs=None):
+    """Connect to a RAD instance over TLS.
+
+    Arguments:
+    host     string, target host
+    port     int, target port (RAD_PORT_TLS = 12302)
+    locale   string, locale
+    ca_certs string, path to file containing CA certificates
+
+    Returns:
+    RadConnection: a connection to RAD
+    """
+    # We don't want SSL 2.0, SSL 3.0 nor TLS 1.0 in RAD
+    context = SSL.Context(SSL.SSLv23_METHOD)
+    context.set_options(SSL.OP_NO_SSLv2)
+    context.set_options(SSL.OP_NO_SSLv3)
+    context.set_options(SSL.OP_NO_TLSv1)
+
+    if ca_certs is not None:
+        context.set_verify(SSL.VERIFY_PEER, _tls_verify_cb)
+        context.load_verify_locations(ca_certs)
+
+    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+    sock = SSL.Connection(context, sock)
+    sock.connect((host, port))
+    sock.do_handshake()
+
+    return radcon.RadConnection(sock, locale=locale)
+
+
 class ZFSVolumeDriver(SanDriver):
-    """Local ZFS volume operations."""
+    """OpenStack Cinder ZFS volume driver for generic ZFS volumes.
+
+    Version history:
+        1.0.0 - Initial driver with basic functionalities in Havana
+        1.1.0 - Support SAN for the remote storage nodes access in Juno
+        1.1.1 - Add support for the volume backup
+        1.1.2 - Add support for the volume migration
+        1.2.0 - Add support for the volume management in Kilo
+        1.2.1 - Enable the connect_tls by importing eventlet.green.socket
+        1.2.2 - Introduce the ZFS RAD for volume migration enhancement
+        1.2.3 - Replace volume-specific targets with one shared target in
+                the ZFSISCSIDriver
+
+    """
+
+    version = "1.2.3"
     protocol = 'local'
 
     def __init__(self, *args, **kwargs):
@@ -202,7 +254,7 @@
         """Callback for volume attached to instance or host."""
         pass
 
-    def detach_volume(self, context, volume):
+    def detach_volume(self, context, volume, attachment):
         """ Callback for volume detached."""
         pass
 
@@ -214,14 +266,6 @@
 
         return self._stats
 
-    def copy_image_to_volume(self, context, volume, image_service, image_id):
-        """Fetch the image from image_service and write it to the volume."""
-        raise NotImplementedError()
-
-    def copy_volume_to_image(self, context, volume, image_service, image_meta):
-        """Copy the volume to the specified image."""
-        raise NotImplementedError()
-
     def _get_zfs_property(self, prop, dataset):
         """Get the value of property for the dataset."""
         try:
@@ -229,8 +273,8 @@
                                         'value', prop, dataset)
             return out.rstrip()
         except processutils.ProcessExecutionError:
-            LOG.info(_("Failed to get the property '%s' of the dataset '%s'") %
-                     (prop, dataset))
+            LOG.info(_LI("Failed to get the property '%s' of the dataset '%s'")
+                     % (prop, dataset))
             return None
 
     def _get_zfs_snap_name(self, snapshot):
@@ -273,7 +317,7 @@
             p1 = subprocess.Popen(cmd1, stdout=subprocess.PIPE,
                                   stderr=subprocess.PIPE)
         except:
-            LOG.error(_("_piped_execute '%s' failed.") % (cmd1))
+            LOG.error(_LE("_piped_execute '%s' failed.") % (cmd1))
             raise
 
         # Set the pipe to be blocking because evenlet.green.subprocess uses
@@ -308,7 +352,7 @@
         cmd2 = ['/usr/sbin/zfs', 'receive', dst]
         # Due to pipe injection protection in the ssh utils method,
         # cinder.utils.check_ssh_injection(), the piped commands must be passed
-        # through via paramiko.  These commands take no user defined input
+        # through via paramiko. These commands take no user defined input
         # other than the names of the zfs datasets which are already protected
         # against the special characters of concern.
         if not self.run_local:
@@ -325,6 +369,90 @@
         cmd = ['/usr/sbin/zfs', 'destroy', dst_snapshot_name]
         self._execute(*cmd)
 
+    def _get_rc_connect(self, san_info=None):
+        """Connect the RAD server."""
+        if san_info is not None:
+            san_ip = san_info.split(';')[0]
+            san_login = san_info.split(';')[1]
+            san_password = san_info.split(';')[2]
+        else:
+            san_ip = self.configuration.san_ip
+            san_login = self.configuration.san_login
+            san_password = self.configuration.san_password
+
+        rc = connect_tls(san_ip)
+        auth = rada.RadAuth(rc)
+        auth.pam_login(san_login, san_password)
+
+        return rc
+
+    def _rad_zfs_send_recv(self, src, dst, dst_san_info=None):
+        """Replicate the ZFS dataset stream."""
+        src_snapshot = {'volume_name': src['name'],
+                        'name': 'tmp-send-snapshot-%s' % src['id']}
+        src_snapshot_name = self._get_zfs_snap_name(src_snapshot)
+        prop_type = self._get_zfs_property('type', src_snapshot_name)
+        # Delete the temporary snapshot if it already exists
+        if prop_type == 'snapshot':
+            self.delete_snapshot(src_snapshot)
+        # Create the temporary snapshot of src volume
+        self.create_snapshot(src_snapshot)
+
+        src_rc = self._get_rc_connect()
+        dst_rc = self._get_rc_connect(dst_san_info)
+
+        src_pat = self._get_zfs_volume_name(src['name'])
+        src_vol_obj = src_rc.get_object(zfsmgr.ZfsDataset(),
+                                        radc.ADRGlobPattern({"name": src_pat}))
+        dst_pat = dst.rsplit('/', 1)[0]
+        dst_vol_obj = dst_rc.get_object(zfsmgr.ZfsDataset(),
+                                        radc.ADRGlobPattern({"name": dst_pat}))
+
+        send_sock_info = src_vol_obj.get_send_socket(
+            name=src_snapshot_name, socket_type=zfsmgr.SocketType.AF_INET)
+        send_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+        send_sock.connect((self.hostname, int(send_sock_info.socket)))
+
+        dst_san_ip = dst_san_info.split(';')[0]
+        remote_host, alias, addresslist = socket.gethostbyaddr(dst_san_ip)
+
+        recv_sock_info = dst_vol_obj.get_receive_socket(
+            name=dst, socket_type=zfsmgr.SocketType.AF_INET,
+            name_options=zfsmgr.ZfsRecvNameOptions.use_provided_name)
+        recv_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+        recv_sock.connect((remote_host, int(recv_sock_info.socket)))
+
+        # Set 4mb buffer size
+        buf_size = 4194304
+        while True:
+            # Read the data from the send stream
+            buf = send_sock.recv(buf_size)
+            if not buf:
+                break
+            # Write the data to the receive steam
+            recv_sock.send(buf)
+
+        recv_sock.close()
+        send_sock.close()
+        time.sleep(1)
+
+        # Delete the temporary dst snapshot
+        pat = radc.ADRGlobPattern({"name": dst})
+        dst_zvol_obj = dst_rc.get_object(zfsmgr.ZfsDataset(), pat)
+        snapshot_list = dst_zvol_obj.get_snapshots()
+        for snap in snapshot_list:
+            if 'tmp-send-snapshot'in snap:
+                dst_zvol_obj.destroy_snapshot(snap)
+                break
+
+        # Delete the temporary src snapshot
+        self.delete_snapshot(src_snapshot)
+        LOG.debug(("Transfered src stream'%s' to dst'%s' on the host'%s'") %
+                  (src_snapshot_name, dst, self.hostname))
+
+        src_rc.close()
+        dst_rc.close()
+
     def _get_zvol_path(self, volume):
         """Get the ZFS volume path."""
         return "/dev/zvol/rdsk/%s" % self._get_zfs_volume_name(volume['name'])
@@ -337,7 +465,7 @@
         backend_name = self.configuration.safe_get('volume_backend_name')
         stats["volume_backend_name"] = backend_name or self.__class__.__name__
         stats["storage_protocol"] = self.protocol
-        stats["driver_version"] = '1.0'
+        stats["driver_version"] = self.version
         stats["vendor_name"] = 'Oracle'
         stats['QoS_support'] = False
 
@@ -348,8 +476,9 @@
             (Size(used_size) + Size(avail_size)).get(Size.gb_units)
         stats['free_capacity_gb'] = Size(avail_size).get(Size.gb_units)
         stats['reserved_percentage'] = self.configuration.reserved_percentage
+
         stats['location_info'] =\
-            ('ZFSVolumeDriver:%(hostname)s:%(zfs_volume_base)s' %
+            ('ZFSVolumeDriver:%(hostname)s:%(zfs_volume_base)s:local' %
              {'hostname': self.hostname,
               'zfs_volume_base': self.configuration.zfs_volume_base})
 
@@ -373,14 +502,67 @@
 
         LOG.debug(_("Rename the volume '%s' to '%s'") % (src, dst))
 
-    def migrate_volume(self, context, volume, host):
-        """Migrate the volume among different backends on the same server.
+    def _get_existing_volume_ref_name(self, existing_ref):
+        """Returns the volume name of an existing reference.
+        And Check if an existing volume reference has a source-name
+        """
+        if 'source-name' in existing_ref:
+            vol_name = existing_ref['source-name']
+            return vol_name
+        else:
+            reason = _("Reference must contain source-name.")
+            raise exception.ManageExistingInvalidReference(
+                existing_ref=existing_ref,
+                reason=reason)
+
+    def manage_existing_get_size(self, volume, existing_ref):
+        """Return size of volume to be managed by manage_existing.
+        existing_ref is a dictionary of the form:
+        {'source-name': <name of the volume>}
+        """
+        target_vol_name = self._get_existing_volume_ref_name(existing_ref)
+        volsize = self._get_zfs_property('volsize', target_vol_name)
+
+        return Size(volsize).get(Size.gb_units)
+
+    def manage_existing(self, volume, existing_ref):
+        """Brings an existing zfs volume object under Cinder management.
 
-        The volume migration can only run locally by calling zfs send/recv
-        cmds and the specified host needs to be on the same server with the
-        host. But, one exception is when the src and dst volume are located
-        under the same zpool locally or remotely, the migration will be done
-        by just renaming the volume.
+        :param volume:       Cinder volume to manage
+        :param existing_ref: Driver-specific information used to identify a
+        volume
+        """
+        # Check the existence of the ZFS volume
+        target_vol_name = self._get_existing_volume_ref_name(existing_ref)
+        prop_type = self._get_zfs_property('type', target_vol_name)
+        if prop_type != 'volume':
+            msg = (_("Failed to identify the volume '%s'.")
+                   % target_vol_name)
+            raise exception.InvalidInput(reason=msg)
+
+        if volume['name']:
+            volume_name = volume['name']
+        else:
+            volume_name = 'new_zvol'
+
+        # rename the volume
+        dst_volume = "%s/%s" % (self.configuration.zfs_volume_base,
+                                volume_name)
+        self.rename_volume(target_vol_name, dst_volume)
+
+    def unmanage(self, volume):
+        """Removes the specified volume from Cinder management."""
+        # Rename the volume's name to cinder-unm-* format.
+        volume_name = self._get_zfs_volume_name(volume['name'])
+        tmp_volume_name = "cinder-unm-%s" % volume['name']
+        new_volume_name = "%s/%s" % (self.configuration.zfs_volume_base,
+                                     tmp_volume_name)
+        self.rename_volume(volume_name, new_volume_name)
+
+    def migrate_volume(self, context, volume, host):
+        """Migrate the volume from one backend to another one.
+        The backends should be in the same volume type.
+
         :param context: context
         :param volume: a dictionary describing the volume to migrate
         :param host: a dictionary describing the host to migrate to
@@ -391,27 +573,28 @@
                       (volume['name'], volume['status']))
             return false_ret
 
-        if 'capabilities' not in host or \
-           'location_info' not in host['capabilities']:
-            LOG.debug(_("No location_info or capabilities are in host info"))
+        if 'capabilities' not in host:
+            LOG.debug(("No 'capabilities' is reported in the host'%s'") %
+                      host['host'])
+            return false_ret
+
+        if 'location_info' not in host['capabilities']:
+            LOG.debug(("No 'location_info' is reported in the host'%s'") %
+                      host['host'])
             return false_ret
 
         info = host['capabilities']['location_info']
-        if (self.hostname != info.split(':')[1]):
-            LOG.debug(_("Migration between two different servers '%s' and "
-                      "'%s' is not supported yet.") %
-                      (self.hostname, info.split(':')[1]))
-            return false_ret
-
-        dst_volume = "%s/%s" % (info.split(':')[-1], volume['name'])
+        dst_volume = "%s/%s" % (info.split(':')[2], volume['name'])
         src_volume = self._get_zfs_volume_name(volume['name'])
+
         # check if the src and dst volume are under the same zpool
-        if (src_volume.split('/')[0] == dst_volume.split('/')[0]):
-            self.rename_volume(src_volume, dst_volume)
+        dst_san_info = info.split(':')[3]
+        if dst_san_info == 'local':
+            self._zfs_send_recv(volume, dst_volume)
         else:
-            self._zfs_send_recv(volume, dst_volume)
-            # delete the source volume
-            self.delete_volume(volume)
+            self._rad_zfs_send_recv(volume, dst_volume, dst_san_info)
+        # delete the source volume
+        self.delete_volume(volume)
 
         provider_location = {}
         return (True, provider_location)
@@ -544,6 +727,29 @@
 
     def __init__(self, *args, **kwargs):
         super(ZFSISCSIDriver, self).__init__(*args, **kwargs)
+        if not self.configuration.san_is_local:
+            self.hostname, alias, addresslist = \
+                socket.gethostbyaddr(self.configuration.san_ip)
+
+    def get_volume_stats(self, refresh=False):
+        """Get volume status."""
+        status = super(ZFSISCSIDriver, self).get_volume_stats(refresh)
+        status["storage_protocol"] = self.protocol
+        backend_name = self.configuration.safe_get('volume_backend_name')
+        status["volume_backend_name"] = backend_name or self.__class__.__name__
+
+        if not self.configuration.san_is_local:
+            san_info = "%s;%s;%s" % (self.configuration.san_ip,
+                                     self.configuration.san_login,
+                                     self.configuration.san_password)
+            status['location_info'] = \
+                ('ZFSISCSIDriver:%(hostname)s:%(zfs_volume_base)s:'
+                 '%(san_info)s' %
+                 {'hostname': self.hostname,
+                  'zfs_volume_base': self.configuration.zfs_volume_base,
+                  'san_info': san_info})
+
+        return status
 
     def do_setup(self, context):
         """Setup the target and target group."""
@@ -735,6 +941,29 @@
 
     def __init__(self, *args, **kwargs):
         super(ZFSFCDriver, self).__init__(*args, **kwargs)
+        if not self.configuration.san_is_local:
+            self.hostname, alias, addresslist = \
+                socket.gethostbyaddr(self.configuration.san_ip)
+
+    def get_volume_stats(self, refresh=False):
+        """Get volume status."""
+        status = super(ZFSFCDriver, self).get_volume_stats(refresh)
+        status["storage_protocol"] = self.protocol
+        backend_name = self.configuration.safe_get('volume_backend_name')
+        status["volume_backend_name"] = backend_name or self.__class__.__name__
+
+        if not self.configuration.san_is_local:
+            san_info = "%s;%s;%s" % (self.configuration.san_ip,
+                                     self.configuration.san_login,
+                                     self.configuration.san_password)
+            status['location_info'] = \
+                ('ZFSFCDriver:%(hostname)s:%(zfs_volume_base)s:'
+                 '%(san_info)s' %
+                 {'hostname': self.hostname,
+                  'zfs_volume_base': self.configuration.zfs_volume_base,
+                  'san_info': san_info})
+
+        return status
 
     def check_for_setup_error(self):
         """Check the setup error."""
@@ -847,15 +1076,15 @@
                                'wwn.%s' % wwn)
             self._stmf_execute('/usr/sbin/stmfadm', 'add-tg-member', '-g',
                                target_group, 'wwn.%s' % wwn)
-            self._stmf_execute('/usr/sbin/stmfadm', 'online-target',
-                               'wwn.%s' % wwn)
-        assert self._target_in_tg(wwn, target_group)
 
         # Add a logical unit view entry
         # TODO(Strony): replace the auto assigned LUN with '-n' option
         if luid is not None:
             self._stmf_execute('/usr/sbin/stmfadm', 'add-view', '-t',
                                target_group, luid)
+            self._stmf_execute('/usr/sbin/stmfadm', 'online-target',
+                               'wwn.%s' % wwn)
+        assert self._target_in_tg(wwn, target_group)
 
     def remove_export(self, context, volume):
         """Remove an export for a volume."""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/cinder/files/zfssa/zfssaiscsi.py	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,466 @@
+# Copyright (c) 2014, 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.
+"""
+ZFS Storage Appliance Cinder Volume Driver
+"""
+import ast
+import base64
+
+from oslo_config import cfg
+from oslo_log import log
+from oslo_utils import units
+
+from cinder import exception
+from cinder.i18n import _, _LE, _LW
+from cinder.volume import driver
+from cinder.volume.drivers.san import san
+from cinder.volume.drivers.zfssa import zfssarest
+from cinder.volume import volume_types
+
+CONF = cfg.CONF
+LOG = log.getLogger(__name__)
+
+ZFSSA_OPTS = [
+    cfg.StrOpt('zfssa_pool',
+               help='Storage pool name.'),
+    cfg.StrOpt('zfssa_project',
+               help='Project name.'),
+    cfg.StrOpt('zfssa_lun_volblocksize', default='8k',
+               choices=['512', '1k', '2k', '4k', '8k', '16k', '32k', '64k',
+                        '128k'],
+               help='Block size.'),
+    cfg.BoolOpt('zfssa_lun_sparse', default=False,
+                help='Flag to enable sparse (thin-provisioned): True, False.'),
+    cfg.StrOpt('zfssa_lun_compression', default='off',
+               choices=['off', 'lzjb', 'gzip-2', 'gzip', 'gzip-9'],
+               help='Data compression.'),
+    cfg.StrOpt('zfssa_lun_logbias', default='latency',
+               choices=['latency', 'throughput'],
+               help='Synchronous write bias.'),
+    cfg.StrOpt('zfssa_initiator_group', default='',
+               help='iSCSI initiator group.'),
+    cfg.StrOpt('zfssa_initiator', default='',
+               help='iSCSI initiator IQNs. (comma separated)'),
+    cfg.StrOpt('zfssa_initiator_user', default='',
+               help='iSCSI initiator CHAP user.'),
+    cfg.StrOpt('zfssa_initiator_password', default='',
+               help='iSCSI initiator CHAP password.', secret=True),
+    cfg.StrOpt('zfssa_initiator_config', default='',
+               help='iSCSI initiators configuration.'),
+    cfg.StrOpt('zfssa_target_group', default='tgt-grp',
+               help='iSCSI target group name.'),
+    cfg.StrOpt('zfssa_target_user', default='',
+               help='iSCSI target CHAP user.'),
+    cfg.StrOpt('zfssa_target_password', default='',
+               help='iSCSI target CHAP password.', secret=True),
+    cfg.StrOpt('zfssa_target_portal',
+               help='iSCSI target portal (Data-IP:Port, w.x.y.z:3260).'),
+    cfg.StrOpt('zfssa_target_interfaces',
+               help='Network interfaces of iSCSI targets. (comma separated)'),
+    cfg.IntOpt('zfssa_rest_timeout',
+               help='REST connection timeout. (seconds)')
+
+]
+
+CONF.register_opts(ZFSSA_OPTS)
+
+ZFSSA_LUN_SPECS = {'zfssa:volblocksize',
+                   'zfssa:sparse',
+                   'zfssa:compression',
+                   'zfssa:logbias'}
+
+
+def factory_zfssa():
+    return zfssarest.ZFSSAApi()
+
+
+class ZFSSAISCSIDriver(driver.ISCSIDriver):
+    """ZFSSA Cinder volume driver"""
+
+    VERSION = '1.0.0'
+    protocol = 'iSCSI'
+
+    def __init__(self, *args, **kwargs):
+        super(ZFSSAISCSIDriver, self).__init__(*args, **kwargs)
+        self.configuration.append_config_values(ZFSSA_OPTS)
+        self.configuration.append_config_values(san.san_opts)
+        self.zfssa = None
+        self._stats = None
+
+    def _get_target_alias(self):
+        """return target alias"""
+        return self.configuration.zfssa_target_group
+
+    def do_setup(self, context):
+        """Setup - create multiple elements.
+
+        Project, initiators, initiatorgroup, target and targetgroup.
+        """
+        lcfg = self.configuration
+        msg = (_('Connecting to host: %s.') % lcfg.san_ip)
+        LOG.info(msg)
+        self.zfssa = factory_zfssa()
+        self.zfssa.set_host(lcfg.san_ip, timeout=lcfg.zfssa_rest_timeout)
+        auth_str = base64.encodestring('%s:%s' %
+                                       (lcfg.san_login,
+                                        lcfg.san_password))[:-1]
+        self.zfssa.login(auth_str)
+        self.zfssa.create_project(lcfg.zfssa_pool, lcfg.zfssa_project,
+                                  compression=lcfg.zfssa_lun_compression,
+                                  logbias=lcfg.zfssa_lun_logbias)
+
+        if (lcfg.zfssa_initiator_config != ''):
+            initiator_config = ast.literal_eval(lcfg.zfssa_initiator_config)
+            for initiator_group in initiator_config:
+                zfssa_initiator_group = initiator_group
+                for zfssa_initiator in initiator_config[zfssa_initiator_group]:
+                    self.zfssa.create_initiator(zfssa_initiator['iqn'],
+                                                zfssa_initiator_group + '-' +
+                                                zfssa_initiator['iqn'],
+                                                chapuser=
+                                                zfssa_initiator['user'],
+                                                chapsecret=
+                                                zfssa_initiator['password'])
+                    if (zfssa_initiator_group != 'default'):
+                        self.zfssa.add_to_initiatorgroup(
+                            zfssa_initiator['iqn'],
+                            zfssa_initiator_group)
+        else:
+            LOG.warning(_LW('zfssa_initiator_config not found. '
+                            'Using deprecated configuration options.'))
+            if (lcfg.zfssa_initiator != '' and
+                (lcfg.zfssa_initiator_group == '' or
+                 lcfg.zfssa_initiator_group == 'default')):
+                LOG.warning(_LW('zfssa_initiator: %(ini)s'
+                                ' wont be used on '
+                                'zfssa_initiator_group= %(inigrp)s.')
+                            % {'ini': lcfg.zfssa_initiator,
+                               'inigrp': lcfg.zfssa_initiator_group})
+
+            # Setup initiator and initiator group
+            if (lcfg.zfssa_initiator != '' and
+               lcfg.zfssa_initiator_group != '' and
+               lcfg.zfssa_initiator_group != 'default'):
+                for initiator in lcfg.zfssa_initiator.split(','):
+                    self.zfssa.create_initiator(
+                        initiator, lcfg.zfssa_initiator_group + '-' +
+                        initiator, chapuser=lcfg.zfssa_initiator_user,
+                        chapsecret=lcfg.zfssa_initiator_password)
+                    self.zfssa.add_to_initiatorgroup(
+                        initiator, lcfg.zfssa_initiator_group)
+
+        # Parse interfaces
+        interfaces = []
+        for interface in lcfg.zfssa_target_interfaces.split(','):
+            if interface == '':
+                continue
+            interfaces.append(interface)
+
+        # Setup target and target group
+        iqn = self.zfssa.create_target(
+            self._get_target_alias(),
+            interfaces,
+            tchapuser=lcfg.zfssa_target_user,
+            tchapsecret=lcfg.zfssa_target_password)
+
+        self.zfssa.add_to_targetgroup(iqn, lcfg.zfssa_target_group)
+
+    def check_for_setup_error(self):
+        """Check that driver can login.
+
+        Check also pool, project, initiators, initiatorgroup, target and
+        targetgroup.
+        """
+        lcfg = self.configuration
+
+        self.zfssa.verify_pool(lcfg.zfssa_pool)
+        self.zfssa.verify_project(lcfg.zfssa_pool, lcfg.zfssa_project)
+
+        if (lcfg.zfssa_initiator_config != ''):
+            initiator_config = ast.literal_eval(lcfg.zfssa_initiator_config)
+            for initiator_group in initiator_config:
+                zfssa_initiator_group = initiator_group
+                for zfssa_initiator in initiator_config[zfssa_initiator_group]:
+                    self.zfssa.verify_initiator(zfssa_initiator['iqn'])
+        else:
+            if (lcfg.zfssa_initiator != '' and
+               lcfg.zfssa_initiator_group != '' and
+               lcfg.zfssa_initiator_group != 'default'):
+                for initiator in lcfg.zfssa_initiator.split(','):
+                    self.zfssa.verify_initiator(initiator)
+
+            self.zfssa.verify_target(self._get_target_alias())
+
+    def _get_provider_info(self, volume):
+        """return provider information"""
+        lcfg = self.configuration
+        lun = self.zfssa.get_lun(lcfg.zfssa_pool,
+                                 lcfg.zfssa_project, volume['name'])
+        iqn = self.zfssa.get_target(self._get_target_alias())
+        loc = "%s %s %s" % (lcfg.zfssa_target_portal, iqn, lun['number'])
+        LOG.debug('_get_provider_info: provider_location: %s' % loc)
+        provider = {'provider_location': loc}
+        if lcfg.zfssa_target_user != '' and lcfg.zfssa_target_password != '':
+            provider['provider_auth'] = ('CHAP %s %s' %
+                                         lcfg.zfssa_target_user,
+                                         lcfg.zfssa_target_password)
+
+        return provider
+
+    def create_volume(self, volume):
+        """Create a volume on ZFSSA"""
+        LOG.debug('zfssa.create_volume: volume=' + volume['name'])
+        lcfg = self.configuration
+        volsize = str(volume['size']) + 'g'
+        specs = self._get_voltype_specs(volume)
+        self.zfssa.create_lun(lcfg.zfssa_pool,
+                              lcfg.zfssa_project,
+                              volume['name'],
+                              volsize,
+                              lcfg.zfssa_target_group,
+                              specs)
+
+    def delete_volume(self, volume):
+        """Deletes a volume with the given volume['name']."""
+        LOG.debug('zfssa.delete_volume: name=' + volume['name'])
+        lcfg = self.configuration
+        lun2del = self.zfssa.get_lun(lcfg.zfssa_pool,
+                                     lcfg.zfssa_project,
+                                     volume['name'])
+        # Delete clone temp snapshot. see create_cloned_volume()
+        if 'origin' in lun2del and 'id' in volume:
+            if lun2del['nodestroy']:
+                self.zfssa.set_lun_props(lcfg.zfssa_pool,
+                                         lcfg.zfssa_project,
+                                         volume['name'],
+                                         nodestroy=False)
+
+            tmpsnap = 'tmp-snapshot-%s' % volume['id']
+            if lun2del['origin']['snapshot'] == tmpsnap:
+                self.zfssa.delete_snapshot(lcfg.zfssa_pool,
+                                           lcfg.zfssa_project,
+                                           lun2del['origin']['share'],
+                                           lun2del['origin']['snapshot'])
+                return
+
+        self.zfssa.delete_lun(pool=lcfg.zfssa_pool,
+                              project=lcfg.zfssa_project,
+                              lun=volume['name'])
+
+    def create_snapshot(self, snapshot):
+        """Creates a snapshot with the given snapshot['name'] of the
+           snapshot['volume_name']
+        """
+        LOG.debug('zfssa.create_snapshot: snapshot=' + snapshot['name'])
+        lcfg = self.configuration
+        self.zfssa.create_snapshot(lcfg.zfssa_pool,
+                                   lcfg.zfssa_project,
+                                   snapshot['volume_name'],
+                                   snapshot['name'])
+
+    def delete_snapshot(self, snapshot):
+        """Deletes a snapshot."""
+        LOG.debug('zfssa.delete_snapshot: snapshot=' + snapshot['name'])
+        lcfg = self.configuration
+        has_clones = self.zfssa.has_clones(lcfg.zfssa_pool,
+                                           lcfg.zfssa_project,
+                                           snapshot['volume_name'],
+                                           snapshot['name'])
+        if has_clones:
+            LOG.error(_LE('Snapshot %s: has clones') % snapshot['name'])
+            raise exception.SnapshotIsBusy(snapshot_name=snapshot['name'])
+
+        self.zfssa.delete_snapshot(lcfg.zfssa_pool,
+                                   lcfg.zfssa_project,
+                                   snapshot['volume_name'],
+                                   snapshot['name'])
+
+    def create_volume_from_snapshot(self, volume, snapshot):
+        """Creates a volume from a snapshot - clone a snapshot"""
+        LOG.debug('zfssa.create_volume_from_snapshot: volume=' +
+                  volume['name'])
+        LOG.debug('zfssa.create_volume_from_snapshot: snapshot=' +
+                  snapshot['name'])
+        if not self._verify_clone_size(snapshot, volume['size'] * units.Gi):
+            exception_msg = (_('Error verifying clone size on '
+                               'Volume clone: %(clone)s '
+                               'Size: %(size)d on'
+                               'Snapshot: %(snapshot)s')
+                             % {'clone': volume['name'],
+                                'size': volume['size'],
+                                'snapshot': snapshot['name']})
+            LOG.error(exception_msg)
+            raise exception.InvalidInput(reason=exception_msg)
+
+        lcfg = self.configuration
+        self.zfssa.clone_snapshot(lcfg.zfssa_pool,
+                                  lcfg.zfssa_project,
+                                  snapshot['volume_name'],
+                                  snapshot['name'],
+                                  volume['name'])
+
+    def _update_volume_status(self):
+        """Retrieve status info from volume group."""
+        LOG.debug("Updating volume status")
+        self._stats = None
+        data = {}
+        backend_name = self.configuration.safe_get('volume_backend_name')
+        data["volume_backend_name"] = backend_name or self.__class__.__name__
+        data["vendor_name"] = 'Oracle'
+        data["driver_version"] = self.VERSION
+        data["storage_protocol"] = self.protocol
+
+        lcfg = self.configuration
+        (avail, total) = self.zfssa.get_pool_stats(lcfg.zfssa_pool)
+        if avail is None or total is None:
+            return
+
+        data['total_capacity_gb'] = int(total) / units.Gi
+        data['free_capacity_gb'] = int(avail) / units.Gi
+        data['reserved_percentage'] = 0
+        data['QoS_support'] = False
+        self._stats = data
+
+    def get_volume_stats(self, refresh=False):
+        """Get volume status.
+           If 'refresh' is True, run update the stats first.
+        """
+        if refresh:
+            self._update_volume_status()
+        return self._stats
+
+    def create_export(self, context, volume):
+        pass
+
+    def remove_export(self, context, volume):
+        pass
+
+    def ensure_export(self, context, volume):
+        pass
+
+    def copy_image_to_volume(self, context, volume, image_service, image_id):
+        self.ensure_export(context, volume)
+        super(ZFSSAISCSIDriver, self).copy_image_to_volume(
+            context, volume, image_service, image_id)
+
+    def extend_volume(self, volume, new_size):
+        """Driver entry point to extent volume size."""
+        LOG.debug('extend_volume: volume name: %s' % volume['name'])
+        lcfg = self.configuration
+        self.zfssa.set_lun_props(lcfg.zfssa_pool,
+                                 lcfg.zfssa_project,
+                                 volume['name'],
+                                 volsize=new_size * units.Gi)
+
+    def create_cloned_volume(self, volume, src_vref):
+        """Create a clone of the specified volume."""
+        zfssa_snapshot = {'volume_name': src_vref['name'],
+                          'name': 'tmp-snapshot-%s' % volume['id']}
+        self.create_snapshot(zfssa_snapshot)
+        try:
+            self.create_volume_from_snapshot(volume, zfssa_snapshot)
+        except exception.VolumeBackendAPIException:
+            LOG.error(_LE('Clone Volume:'
+                          '%(volume)s failed from source volume:'
+                          '%(src_vref)s')
+                      % {'volume': volume['name'],
+                         'src_vref': src_vref['name']})
+            # Cleanup snapshot
+            self.delete_snapshot(zfssa_snapshot)
+
+    def local_path(self, volume):
+        """Not implemented"""
+        pass
+
+    def backup_volume(self, context, backup, backup_service):
+        """Not implemented"""
+        pass
+
+    def restore_backup(self, context, backup, volume, backup_service):
+        """Not implemented"""
+        pass
+
+    def _verify_clone_size(self, snapshot, size):
+        """Check whether the clone size is the same as the parent volume"""
+        lcfg = self.configuration
+        lun = self.zfssa.get_lun(lcfg.zfssa_pool,
+                                 lcfg.zfssa_project,
+                                 snapshot['volume_name'])
+        return lun['size'] == size
+
+    def initialize_connection(self, volume, connector):
+        lcfg = self.configuration
+        init_groups = self.zfssa.get_initiator_initiatorgroup(
+            connector['initiator'])
+        for initiator_group in init_groups:
+            self.zfssa.set_lun_initiatorgroup(lcfg.zfssa_pool,
+                                              lcfg.zfssa_project,
+                                              volume['name'],
+                                              initiator_group)
+        iscsi_properties = {}
+        provider = self._get_provider_info(volume)
+        (target_portal, iqn, lun) = provider['provider_location'].split()
+        iscsi_properties['target_discovered'] = False
+        iscsi_properties['target_portal'] = target_portal
+        iscsi_properties['target_iqn'] = iqn
+        iscsi_properties['target_lun'] = lun
+        iscsi_properties['volume_id'] = volume['id']
+
+        if 'provider_auth' in provider:
+            (auth_method, auth_username, auth_password) = provider[
+                'provider_auth'].split()
+            iscsi_properties['auth_method'] = auth_method
+            iscsi_properties['auth_username'] = auth_username
+            iscsi_properties['auth_password'] = auth_password
+
+        return {
+            'driver_volume_type': 'iscsi',
+            'data': iscsi_properties
+        }
+
+    def terminate_connection(self, volume, connector, **kwargs):
+        """Driver entry point to terminate a connection for a volume."""
+        LOG.debug('terminate_connection: volume name: %s.' % volume['name'])
+        lcfg = self.configuration
+        self.zfssa.set_lun_initiatorgroup(lcfg.zfssa_pool,
+                                          lcfg.zfssa_project,
+                                          volume['name'],
+                                          '')
+
+    def _get_voltype_specs(self, volume):
+        """Get specs suitable for volume creation."""
+        vtype = volume.get('volume_type_id', None)
+        extra_specs = None
+        if vtype:
+            extra_specs = volume_types.get_volume_type_extra_specs(vtype)
+
+        return self._get_specs(extra_specs)
+
+    def _get_specs(self, xspecs):
+        """Return a dict with extra specs and/or config values."""
+        result = {}
+        for spc in ZFSSA_LUN_SPECS:
+            val = None
+            prop = spc.split(':')[1]
+            cfg = 'zfssa_lun_' + prop
+            if xspecs:
+                val = xspecs.pop(spc, None)
+
+            if val is None:
+                val = self.configuration.safe_get(cfg)
+
+            if val is not None and val != '':
+                result.update({prop: val})
+
+        return result
--- a/components/openstack/cinder/patches/01-requirements.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/cinder/patches/01-requirements.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,70 +1,89 @@
 In-house patch to remove unnecessary dependencies from Cinder's
 requirements files. The specific reasons are as follows:
 
-kombu           Not applicable
+anyjson		Not applicable
+
+kombu		Not applicable
 
-oslo.rootwrap   Not applicable to Solaris
+oslo.rootwrap	Not applicable to Solaris
 
-pycrypto        Not applicable to Solaris (various drivers specific)
+pycrypto	Not applicable to Solaris (various drivers specific)
 
-rtslib-fb       Not applicable to Solaris (Linux iSCSI specific)
+rtslib-fb	Not applicable to Solaris (Linux iSCSI specific)
 
---- cinder-2014.2.2/cinder.egg-info/requires.txt.orig	2015-05-27 22:55:59.906826810 -0700
-+++ cinder-2014.2.2/cinder.egg-info/requires.txt	2015-05-27 22:57:00.022877081 -0700
-@@ -6,18 +6,15 @@
+--- cinder-2015.1.2/cinder.egg-info/requires.txt.~1~	2015-10-13 09:30:55.000000000 -0700
++++ cinder-2015.1.2/cinder.egg-info/requires.txt	2016-01-30 21:00:52.192406009 -0800
+@@ -1,11 +1,9 @@
+ pbr!=0.7,<1.0,>=0.6
+-anyjson>=0.3.3
+ Babel>=1.3
+ eventlet!=0.17.0,>=0.16.1
  greenlet>=0.3.2
  iso8601>=0.1.9
- keystonemiddleware>=1.0.0
+ keystonemiddleware<1.6.0,>=1.5.0
 -kombu>=2.5.0
  lxml>=2.3
  netaddr>=0.7.12
- oslo.config>=1.4.0  # Apache-2.0
- oslo.db>=1.0.0,<1.1  # Apache-2.0
- oslo.messaging>=1.4.0,!=1.5.0,<1.6.0
--oslo.rootwrap>=1.3.0
- osprofiler>=0.3.0                       # Apache-2.0
+ oslo.config<1.10.0,>=1.9.3 # Apache-2.0
+@@ -15,14 +13,12 @@ oslo.db<1.8.0,>=1.7.0 # Apache-2.0
+ oslo.log<1.1.0,>=1.0.0 # Apache-2.0
+ oslo.messaging<1.9.0,>=1.8.0 # Apache-2.0
+ oslo.middleware<1.1.0,>=1.0.0 # Apache-2.0
+-oslo.rootwrap<1.7.0,>=1.6.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
+ osprofiler>=0.3.0 # Apache-2.0
  paramiko>=1.13.0
  Paste
  PasteDeploy>=1.5.0
 -pycrypto>=2.6
- python-barbicanclient>=2.1.0,!=3.0.0,<3.0.2
- python-glanceclient>=0.14.0
- python-novaclient>=2.18.0
-@@ -25,7 +22,6 @@
- requests>=1.2.1,!=2.4.0
- Routes>=1.12.3,!=2.0
- taskflow>=0.4,<0.7.0
--rtslib-fb>=2.1.39
- six>=1.7.0
- SQLAlchemy>=0.8.4,<=0.9.99,!=0.9.0,!=0.9.1,!=0.9.2,!=0.9.3,!=0.9.4,!=0.9.5,!=0.9.6
- sqlalchemy-migrate==0.9.1
---- cinder-2014.2.2/requirements.txt.orig       2015-05-27 22:57:45.226877884 -0700
-+++ cinder-2014.2.2/requirements.txt    2015-05-27 22:58:25.817248288 -0700
-@@ -10,18 +10,15 @@
+ pyparsing>=2.0.1
+ python-barbicanclient<3.1.0,>=3.0.1
+ python-glanceclient<0.18.0,>=0.15.0
+@@ -32,7 +28,6 @@ requests!=2.4.0,>=2.2.0
+ retrying!=1.3.0,>=1.2.3 # Apache-2.0
+ Routes!=2.0,>=1.12.3
+ taskflow<0.8.0,>=0.7.1
+-rtslib-fb>=2.1.41
+ six>=1.9.0
+ SQLAlchemy<=0.9.99,>=0.9.7
+ sqlalchemy-migrate!=0.9.8,<0.10.0,>=0.9.5
+--- cinder-2015.1.2/requirements.txt.~1~	2015-10-13 09:27:35.000000000 -0700
++++ cinder-2015.1.2/requirements.txt	2016-01-30 21:01:27.270741292 -0800
+@@ -3,13 +3,11 @@
+ # process, which may cause wedges in the gate later.
+ 
+ pbr!=0.7,<1.0,>=0.6
+-anyjson>=0.3.3
+ Babel>=1.3
+ eventlet!=0.17.0,>=0.16.1
  greenlet>=0.3.2
  iso8601>=0.1.9
- keystonemiddleware>=1.0.0
+ keystonemiddleware<1.6.0,>=1.5.0
 -kombu>=2.5.0
  lxml>=2.3
  netaddr>=0.7.12
- oslo.config>=1.4.0  # Apache-2.0
- oslo.db>=1.0.0,<1.1  # Apache-2.0
- oslo.messaging>=1.4.0,!=1.5.0,<1.6.0
--oslo.rootwrap>=1.3.0
- osprofiler>=0.3.0                       # Apache-2.0
+ oslo.config<1.10.0,>=1.9.3 # Apache-2.0
+@@ -19,14 +17,12 @@ oslo.db<1.8.0,>=1.7.0 # Apache-2.0
+ oslo.log<1.1.0,>=1.0.0 # Apache-2.0
+ oslo.messaging<1.9.0,>=1.8.0 # Apache-2.0
+ oslo.middleware<1.1.0,>=1.0.0 # Apache-2.0
+-oslo.rootwrap<1.7.0,>=1.6.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
+ osprofiler>=0.3.0 # Apache-2.0
  paramiko>=1.13.0
  Paste
  PasteDeploy>=1.5.0
 -pycrypto>=2.6
- python-barbicanclient>=2.1.0,!=3.0.0,<3.0.2
- python-glanceclient>=0.14.0
- python-novaclient>=2.18.0
-@@ -29,7 +26,6 @@
- requests>=1.2.1,!=2.4.0
- Routes>=1.12.3,!=2.0
- taskflow>=0.4,<0.7.0
--rtslib-fb>=2.1.39
- six>=1.7.0
- SQLAlchemy>=0.8.4,<=0.9.99,!=0.9.0,!=0.9.1,!=0.9.2,!=0.9.3,!=0.9.4,!=0.9.5,!=0.9.6
- sqlalchemy-migrate==0.9.1
-
+ pyparsing>=2.0.1
+ python-barbicanclient<3.1.0,>=3.0.1
+ python-glanceclient<0.18.0,>=0.15.0
+@@ -36,7 +32,6 @@ requests!=2.4.0,>=2.2.0
+ retrying!=1.3.0,>=1.2.3 # Apache-2.0
+ Routes!=2.0,>=1.12.3
+ taskflow<0.8.0,>=0.7.1
+-rtslib-fb>=2.1.41
+ six>=1.9.0
+ SQLAlchemy<=0.9.99,>=0.9.7
+ sqlalchemy-migrate!=0.9.8,<0.10.0,>=0.9.5
--- a/components/openstack/cinder/patches/02-nopycrypto.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/cinder/patches/02-nopycrypto.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,8 +1,8 @@
 In-house removal of PyCrypto dependency in Cinder. This patch is
 Solaris-specific and not suitable for upstream.
 
---- cinder-2014.2.2/cinder/volume/utils.py.orig	2014-10-16 06:26:26.000000000 -0700
-+++ cinder-2014.2.2/cinder/volume/utils.py	2014-11-23 15:13:26.412114890 -0800
+--- cinder-2015.1.2/cinder/volume/utils.py.orig	2015-10-13 09:27:35.000000000 -0700
++++ cinder-2015.1.2/cinder/volume/utils.py	2016-01-30 23:52:30.088107306 -0800
 @@ -16,8 +16,8 @@
  
  
@@ -10,10 +10,10 @@
 +from random import SystemRandom
  
 -from Crypto.Random import random
- from oslo.config import cfg
- 
- from cinder.brick.local_dev import lvm as brick_lvm
-@@ -429,6 +429,7 @@ def generate_password(length=20, symbolg
+ from oslo_concurrency import processutils
+ from oslo_config import cfg
+ from oslo_log import log as logging
+@@ -419,6 +419,7 @@ def generate_password(length=16, symbolg
      # NOTE(jerdfelt): Some password policies require at least one character
      # from each group of symbols, so start off with one random character
      # from each symbol group
--- a/components/openstack/cinder/patches/03-emc_vmax_iscsi.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/cinder/patches/03-emc_vmax_iscsi.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,29 +1,28 @@
 In-house patch to adopt EMC driver to use Solaris' iscsiadm(1M) rather
-than that from Linux.  Patch has not yet been submitted upstream.
+than that from Linux. Patch has not yet been submitted upstream.
 
---- cinder-2014.2.2/cinder/volume/drivers/emc/emc_vmax_iscsi.py.orig	2014-10-16 06:26:26.000000000 -0700
-+++ cinder-2014.2.2/cinder/volume/drivers/emc/emc_vmax_iscsi.py	2014-10-27 00:12:22.034201865 -0700
-@@ -16,6 +16,8 @@
- ISCSI Drivers for EMC VMAX arrays based on SMI-S.
+--- cinder-2015.1.2/cinder/volume/drivers/emc/emc_vmax_iscsi.py.~1~	2016-01-30 23:55:52.360305136 -0800
++++ cinder-2015.1.2/cinder/volume/drivers/emc/emc_vmax_iscsi.py	2016-01-31 00:03:10.160731018 -0800
+@@ -17,6 +17,7 @@ ISCSI Drivers for EMC VMAX arrays based
  
  """
+ import os
 +import sys
-+
- import six
  
- from cinder import context
-@@ -155,17 +157,43 @@ class EMCVMAXISCSIDriver(driver.ISCSIDri
- 
-         LOG.info(_("ISCSI provider_location not stored, using discovery."))
+ from oslo_log import log as logging
+ import six
+@@ -162,17 +163,43 @@ class EMCVMAXISCSIDriver(driver.ISCSIDri
+             LOG.error(_LE(
+                 "You must set your iscsi_ip_address in cinder.conf."))
  
 -        (out, _err) = self._execute('iscsiadm', '-m', 'discovery',
 -                                    '-t', 'sendtargets', '-p',
 -                                    self.configuration.iscsi_ip_address,
 -                                    run_as_root=True)
 -
--        LOG.info(_(
--            "smis_do_iscsi_discovery is: %(out)s")
--            % {'out': out})
+-        LOG.info(_LI(
+-            "smis_do_iscsi_discovery is: %(out)s."),
+-            {'out': out})
          targets = []
 -        for target in out.splitlines():
 -            targets.append(target)
@@ -58,9 +57,9 @@
 +                                        self.configuration.iscsi_ip_address,
 +                                        run_as_root=True)
 +
-+            LOG.info(_(
-+                "smis_do_iscsi_discovery is: %(out)s")
-+                % {'out': out})
++            LOG.info(_LI(
++                "smis_do_iscsi_discovery is: %(out)s."),
++                {'out': out})
 +            for target in out.splitlines():
 +                targets.append(target)
  
--- a/components/openstack/cinder/patches/04-volume-backup.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/cinder/patches/04-volume-backup.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,27 +1,20 @@
-This patch is to replace the linux-specific codes with the solaris
-codes to support the cinder backup on the Solaris.
+This patch is to replace Linux-specific code with conditional checks in
+the Cinder Brick code to support Cinder backup on Solaris. Patch has
+not yet been submitted upstream.
 
---- cinder-2014.2.2/cinder/brick/initiator/connector.py.~1~	2015-02-05 08:03:26.000000000 -0800
-+++ cinder-2014.2.2/cinder/brick/initiator/connector.py	2015-04-20 21:05:25.881159722 -0700
-@@ -15,6 +15,7 @@
- 
- import os
- import socket
-+import sys
- import time
- 
- from cinder.brick import exception
-@@ -22,6 +23,8 @@
- from cinder.brick.initiator import host_driver
+--- cinder-2015.1.2/cinder/brick/initiator/connector.py.~1~	2015-10-13 09:27:35.000000000 -0700
++++ cinder-2015.1.2/cinder/brick/initiator/connector.py	2016-01-31 00:12:30.729547660 -0800
+@@ -32,6 +32,8 @@ from cinder.brick.initiator import host_
  from cinder.brick.initiator import linuxfc
  from cinder.brick.initiator import linuxscsi
+ from cinder.brick.remotefs import remotefs
 +from cinder.brick.initiator import solarisfc
 +from cinder.brick.initiator import solarisiscsi
- from cinder.brick.remotefs import remotefs
- from cinder.i18n import _
- from cinder.openstack.common import lockutils
-@@ -39,7 +42,10 @@
-     """Get the connection properties for all protocols."""
+ from cinder.i18n import _, _LE, _LW
+ from cinder.openstack.common import loopingcall
+ 
+@@ -72,7 +74,10 @@ def get_connector_properties(root_helper
+     """
  
      iscsi = ISCSIConnector(root_helper=root_helper)
 -    fc = linuxfc.LinuxFibreChannel(root_helper=root_helper)
@@ -32,21 +25,21 @@
  
      props = {}
      props['ip'] = my_ip
-@@ -134,8 +140,11 @@
+@@ -188,8 +193,11 @@ class InitiatorConnector(executor.Execut
                 'of=/dev/null', 'count=1')
          out, info = None, None
          try:
--            out, info = self._execute(*cmd, run_as_root=True,
+-            out, info = self._execute(*cmd, run_as_root=run_as_root,
 -                                      root_helper=self._root_helper)
 +            if sys.platform == 'sunos5':
 +                out, info = self._execute(*cmd)
 +            else:
-+                out, info = self._execute(*cmd, run_as_root=True,
++                out, info = self._execute(*cmd, run_as_root=run_as_root,
 +                                          root_helper=self._root_helper)
          except putils.ProcessExecutionError as e:
-             LOG.error(_("Failed to access the device on the path "
-                         "%(path)s: %(error)s %(info)s.") %
-@@ -171,7 +180,10 @@
+             LOG.error(_LE("Failed to access the device on the path "
+                           "%(path)s: %(error)s %(info)s.") %
+@@ -225,7 +233,10 @@ class ISCSIConnector(InitiatorConnector)
                   execute=putils.execute, use_multipath=False,
                   device_scan_attempts=DEVICE_SCAN_ATTEMPTS_DEFAULT,
                   *args, **kwargs):
@@ -58,7 +51,7 @@
          super(ISCSIConnector, self).__init__(root_helper, driver=driver,
                                               execute=execute,
                                               device_scan_attempts=
-@@ -181,6 +193,8 @@
+@@ -235,6 +246,8 @@ class ISCSIConnector(InitiatorConnector)
  
      def set_execute(self, execute):
          super(ISCSIConnector, self).set_execute(execute)
@@ -66,28 +59,27 @@
 +            return
          self._linuxscsi.set_execute(execute)
  
-     @synchronized('connect_volume')
-@@ -192,6 +206,9 @@
-         target_iqn - iSCSI Qualified Name
-         target_lun - LUN id of the volume
+     def _iterate_all_targets(self, connection_properties):
+@@ -289,6 +302,9 @@ class ISCSIConnector(InitiatorConnector)
+         Note that plural keys may be used when use_multipath=True
          """
+ 
 +        if sys.platform == 'sunos5':
 +            return self._solarisiscsi.connect_volume(connection_properties,
 +                                                     self.device_scan_attempts)
- 
          device_info = {'type': 'block'}
  
-@@ -262,6 +279,9 @@
-         target_iqn - iSCSI Qualified Name
-         target_lun - LUN id of the volume
+         if self.use_multipath:
+@@ -365,6 +381,8 @@ class ISCSIConnector(InitiatorConnector)
+         target_iqn(s) - iSCSI Qualified Name
+         target_lun(s) - LUN id of the volume
          """
 +        if sys.platform == 'sunos5':
 +            return
-+
          # Moved _rescan_iscsi and _rescan_multipath
          # from _disconnect_volume_multipath_iscsi to here.
          # Otherwise, if we do rescan after _linuxscsi.remove_multipath_device
-@@ -306,6 +326,9 @@
+@@ -431,6 +449,9 @@ class ISCSIConnector(InitiatorConnector)
  
      def get_initiator(self):
          """Secure helper to read file as root."""
@@ -97,7 +89,7 @@
          file_path = '/etc/iscsi/initiatorname.iscsi'
          try:
              lines, _err = self._execute('cat', file_path, run_as_root=True,
-@@ -555,8 +578,11 @@
+@@ -674,8 +695,11 @@ class FibreChannelConnector(InitiatorCon
                   execute=putils.execute, use_multipath=False,
                   device_scan_attempts=DEVICE_SCAN_ATTEMPTS_DEFAULT,
                   *args, **kwargs):
@@ -111,7 +103,7 @@
          super(FibreChannelConnector, self).__init__(root_helper, driver=driver,
                                                      execute=execute,
                                                      device_scan_attempts=
-@@ -566,6 +592,8 @@
+@@ -685,6 +709,8 @@ class FibreChannelConnector(InitiatorCon
  
      def set_execute(self, execute):
          super(FibreChannelConnector, self).set_execute(execute)
@@ -120,7 +112,7 @@
          self._linuxscsi.set_execute(execute)
          self._linuxfc.set_execute(execute)
  
-@@ -578,6 +606,10 @@
+@@ -697,6 +723,10 @@ class FibreChannelConnector(InitiatorCon
          target_iqn - iSCSI Qualified Name
          target_lun - LUN id of the volume
          """
@@ -131,7 +123,7 @@
          LOG.debug("execute = %s" % self._execute)
          device_info = {'type': 'block'}
  
-@@ -686,6 +718,13 @@
+@@ -830,6 +860,13 @@ class FibreChannelConnector(InitiatorCon
          target_wwn - iSCSI Qualified Name
          target_lun - LUN id of the volume
          """
@@ -145,12 +137,10 @@
          devices = device_info['devices']
  
          # If this is a multipath device, we need to search again
-
-
---- cinder-2014.2.2/cinder/utils.py.~1~ 2015-02-05 08:03:26.000000000 -0800
-+++ cinder-2014.2.2/cinder/utils.py     2015-04-20 20:46:27.658908715 -0700
-@@ -137,8 +137,12 @@
-
+--- cinder-2015.1.2/cinder/utils.py.~1~	2015-10-13 09:27:35.000000000 -0700
++++ cinder-2015.1.2/cinder/utils.py	2016-01-31 00:12:30.730160694 -0800
+@@ -138,8 +138,12 @@ def check_exclusive_options(**kwargs):
+ 
  def execute(*cmd, **kwargs):
      """Convenience wrapper around oslo's execute() method."""
 -    if 'run_as_root' in kwargs and 'root_helper' not in kwargs:
@@ -162,5 +152,5 @@
 +        if 'run_as_root' in kwargs and 'root_helper' not in kwargs:
 +            kwargs['root_helper'] = get_root_helper()
      return processutils.execute(*cmd, **kwargs)
-
-
+ 
+ 
--- a/components/openstack/cinder/patches/05-keepalive.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-In-house patch to allow the TCP keepalive parameters from cinder.conf
-to be used on Solaris. Patch has not yet been submitted upstream.
-
---- cinder-2014.2.2/cinder/openstack/common/network_utils.py.orig	2014-12-04 21:00:20.000000000 -0800
-+++ cinder-2014.2.2/cinder/openstack/common/network_utils.py	2015-01-23 18:46:17.465276851 -0800
-@@ -18,6 +18,7 @@ Network-related utilities and helper fun
- """
- 
- import socket
-+import sys
- 
- from six.moves.urllib import parse
- 
-@@ -135,26 +136,44 @@ def set_tcp_keepalive(sock, tcp_keepaliv
-     if not tcp_keepalive:
-         return
- 
--    # These options aren't available in the OS X version of eventlet,
--    # Idle + Count * Interval effectively gives you the total timeout.
--    if tcp_keepidle is not None:
--        if hasattr(socket, 'TCP_KEEPIDLE'):
--            sock.setsockopt(socket.IPPROTO_TCP,
--                            socket.TCP_KEEPIDLE,
--                            tcp_keepidle)
-+    if sys.platform == 'sunos5':
-+        # Should match definitions in <netinet/tcp.h>
-+        TCP_KEEPALIVE_THRESHOLD = 0x16
-+        TCP_KEEPALIVE_ABORT_THRESHOLD = 0x17
-+
-+        if tcp_keepidle is not None:
-+            sock.setsockopt(socket.IPPROTO_TCP, TCP_KEEPALIVE_THRESHOLD,
-+                            tcp_keepidle * 1000)
-+        if tcp_keepalive_interval is None and tcp_keepalive_count is None:
-+            return
-+        if tcp_keepalive_interval is None or tcp_keepalive_count is None:
-+            LOG.warning(_LW('tcp_keepintvl and tcp_keepknt must be set '
-+                            'together'))
-         else:
--            LOG.warning(_LW('tcp_keepidle not available on your system'))
--    if tcp_keepalive_interval is not None:
--        if hasattr(socket, 'TCP_KEEPINTVL'):
--            sock.setsockopt(socket.IPPROTO_TCP,
--                            socket.TCP_KEEPINTVL,
--                            tcp_keepalive_interval)
--        else:
--            LOG.warning(_LW('tcp_keepintvl not available on your system'))
--    if tcp_keepalive_count is not None:
--        if hasattr(socket, 'TCP_KEEPCNT'):
--            sock.setsockopt(socket.IPPROTO_TCP,
--                            socket.TCP_KEEPCNT,
--                            tcp_keepalive_count)
--        else:
--            LOG.warning(_LW('tcp_keepknt not available on your system'))
-+            sock.setsockopt(
-+                socket.IPPROTO_TCP, TCP_KEEPALIVE_ABORT_THRESHOLD,
-+                tcp_keepalive_interval * tcp_keepalive_count * 1000)
-+    else:
-+        # These options aren't available in the OS X version of eventlet,
-+        # Idle + Count * Interval effectively gives you the total timeout.
-+        if tcp_keepidle is not None:
-+            if hasattr(socket, 'TCP_KEEPIDLE'):
-+                sock.setsockopt(socket.IPPROTO_TCP,
-+                                socket.TCP_KEEPIDLE,
-+                                tcp_keepidle)
-+            else:
-+                LOG.warning(_LW('tcp_keepidle not available on your system'))
-+        if tcp_keepalive_interval is not None:
-+            if hasattr(socket, 'TCP_KEEPINTVL'):
-+                sock.setsockopt(socket.IPPROTO_TCP,
-+                                socket.TCP_KEEPINTVL,
-+                                tcp_keepalive_interval)
-+            else:
-+                LOG.warning(_LW('tcp_keepintvl not available on your system'))
-+        if tcp_keepalive_count is not None:
-+            if hasattr(socket, 'TCP_KEEPCNT'):
-+                sock.setsockopt(socket.IPPROTO_TCP,
-+                                socket.TCP_KEEPCNT,
-+                                tcp_keepalive_count)
-+            else:
-+                LOG.warning(_LW('tcp_keepknt not available on your system'))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/cinder/patches/05-launchpad-1479342.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,75 @@
+commit 075ff30d7d8bbeca1af634718f3cb19099bc44b3
+Author: Abhiram Moturi <[email protected]>
+Date:   Mon Aug 10 14:23:09 2015 +0000
+
+    ZFSSA driver to return project 'available' space
+    
+    This fix allows the iSCSI driver to return the 'available' space
+    property at project level instead of the pool level which is more
+    accurate in cases when storage is not thin provisioned.
+    
+    Change-Id: I52dec5e527eab393fd464fbc7f4f910fafb67268
+    Closes-Bug: #1479342
+
+--- cinder-2015.1.2/cinder/volume/drivers/zfssa/zfssaiscsi.py.~1~	2016-02-01 00:58:28.817737350 -0800
++++ cinder-2015.1.2/cinder/volume/drivers/zfssa/zfssaiscsi.py	2016-02-01 00:58:28.883666429 -0800
+@@ -322,7 +322,8 @@ class ZFSSAISCSIDriver(driver.ISCSIDrive
+         data["storage_protocol"] = self.protocol
+ 
+         lcfg = self.configuration
+-        (avail, total) = self.zfssa.get_pool_stats(lcfg.zfssa_pool)
++        (avail, total) = self.zfssa.get_project_stats(lcfg.zfssa_pool,
++                                                      lcfg.zfssa_project)
+         if avail is None or total is None:
+             return
+ 
+--- cinder-2015.1.2/cinder/volume/drivers/zfssa/zfssarest.py.~1~	2015-10-13 09:27:35.000000000 -0700
++++ cinder-2015.1.2/cinder/volume/drivers/zfssa/zfssarest.py	2016-02-01 00:59:32.842959922 -0800
+@@ -69,36 +69,30 @@ class ZFSSAApi(object):
+         if self.rclient and not self.rclient.islogin():
+             self.rclient.login(auth_str)
+ 
+-    def get_pool_stats(self, pool):
+-        """Get space available and total properties of a pool
++    def get_project_stats(self, pool, project):
++        """Get project stats.
++
++           Get available space and total space of a project
+            returns (avail, total).
+         """
+-        svc = '/api/storage/v1/pools/' + pool
++        svc = '/api/storage/v1/pools/%s/projects/%s' % (pool, project)
+         ret = self.rclient.get(svc)
+         if ret.status != restclient.Status.OK:
+-            exception_msg = (_('Error Getting Pool Stats: '
++            exception_msg = (_('Error Getting Project Stats: '
+                                'Pool: %(pool)s '
++                               'Project: %(project)s '
+                                'Return code: %(ret.status)d '
+                                'Message: %(ret.data)s.')
+                              % {'pool': pool,
++                                'project': project,
+                                 'ret.status': ret.status,
+                                 'ret.data': ret.data})
+             LOG.error(exception_msg)
+-            raise exception.InvalidVolume(reason=exception_msg)
++            raise exception.VolumeBackendAPIException(data=exception_msg)
+ 
+         val = json.loads(ret.data)
+-
+-        if not self._is_pool_owned(val):
+-            exception_msg = (_('Error Pool ownership: '
+-                               'Pool %(pool)s is not owned '
+-                               'by %(host)s.')
+-                             % {'pool': pool,
+-                                'host': self.host})
+-            LOG.error(exception_msg)
+-            raise exception.InvalidInput(reason=pool)
+-
+-        avail = val['pool']['usage']['available']
+-        total = val['pool']['usage']['total']
++        avail = val['project']['space_available']
++        total = avail + val['project']['space_total']
+ 
+         return avail, total
+ 
--- a/components/openstack/cinder/patches/06-enable-dd.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/cinder/patches/06-enable-dd.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,9 +1,10 @@
-In-house supporting volume_dd_blocksize ('1M', 'G') to enable 'dd' to run on Solaris. This patch
-is Solaris-specific and not suitable for upstream.
+In-house supporting volume_dd_blocksize ('1M', 'G') to enable 'dd' to
+run on Solaris. This patch is Solaris-specific and not suitable for
+upstream.
 
---- cinder-2014.2.2/cinder/volume/utils.py.old	2015-10-20 12:55:15.089090904 -0700
-+++ cinder-2014.2.2/cinder/volume/utils.py	2015-10-20 12:55:23.640892844 -0700
-@@ -281,6 +281,7 @@
+--- cinder-2015.1.2/cinder/volume/utils.py.orig	2015-11-17 18:29:59.168650488 -0800
++++ cinder-2015.1.2/cinder/volume/utils.py	2015-11-17 18:30:21.197972544 -0800
+@@ -267,6 +267,7 @@
          bs = strutils.string_to_bytes('%sB' % blocksize)
  
      count = math.ceil(size_in_m * units.Mi / bs)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/cinder/patches/07-launchpad-1460156.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,74 @@
+This patch is to work-around the fact that Python 2.7.9 and beyond have
+implemented PEP 476 which enabled certificate verification by default
+and ZFSSAs may not be deployed with a valid, CA-signed certificate.
+
+commit 814cbb8a937e2a01f2c8814dd032c0f12baa6fd4
+Author: Diem Tran <[email protected]>
+Date:   Wed Jul 1 21:12:48 2015 +0000
+
+    Fix PEP476 & format message of Oracle ZFSSA drivers
+    
+    * Handles the PEP 476 by opting out certificate verification.
+    * Fix debug format messages in restclient.py
+    
+    Change-Id: Iaf9e546f0aed6b57fe9c2bf43aa2ce003a05ddf8
+    Closes-Bug: #1460156
+
+--- cinder-2015.1.2/cinder/volume/drivers/zfssa/restclient.py.~1~	2015-10-13 09:27:35.000000000 -0700
++++ cinder-2015.1.2/cinder/volume/drivers/zfssa/restclient.py	2016-01-31 00:56:12.410126083 -0800
+@@ -1,4 +1,4 @@
+-# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
++# 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
+@@ -17,6 +17,7 @@ ZFS Storage Appliance REST API Client Pr
+ 
+ import httplib
+ import json
++import ssl
+ import StringIO
+ import time
+ import urllib2
+@@ -268,14 +269,27 @@ class RestClientURL(object):
+         retry = 0
+         response = None
+ 
+-        LOG.debug('Request: %s %s' % (request, zfssaurl))
++        LOG.debug('Request: %(request)s %(url)s',
++                  {'request': request, 'url': zfssaurl})
+         LOG.debug('Out headers: %s' % out_hdrs)
+         if body and body != '':
+             LOG.debug('Body: %s' % body)
+ 
++        context = None
++        if hasattr(ssl, '_create_unverified_context'):
++            context = ssl._create_unverified_context()
++        else:
++            context = None
++
+         while retry < maxreqretries:
+             try:
+-                response = urllib2.urlopen(req, timeout=self.timeout)
++                if context:
++                    response = urllib2.urlopen(req,
++                                               timeout=self.timeout,
++                                               context=context)
++                else:
++                    response = urllib2.urlopen(req,
++                                               timeout=self.timeout)
+             except urllib2.HTTPError as err:
+                 if err.code == httplib.NOT_FOUND:
+                     LOG.debug('REST Not Found: %s' % err.code)
+@@ -315,8 +329,9 @@ class RestClientURL(object):
+ 
+             break
+ 
+-        if response and response.getcode() == httplib.SERVICE_UNAVAILABLE and \
+-           retry >= maxreqretries:
++        if (response and
++            (response.getcode() == httplib.SERVICE_UNAVAILABLE and
++                retry >= maxreqretries)):
+             raise RestClientError(response.getcode(), name="ERR_HTTPError",
+                                   message="REST Not Available: Disabled")
+ 
--- a/components/openstack/cinder/patches/07-zfssa-pep-476.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-This patch is to work-around the fact that Python 2.7.9 and beyond have
-implemented PEP 476 which enabled certificate verification by default
-and ZFSSAs may not be deployed with a valid, CA-signed certificate.
-
-This patch may be suitable for pushing upsteam.
-
---- cinder-2014.2.2/cinder/volume/drivers/zfssa/restclient.py.~1~	2015-02-05 08:03:26.000000000 -0800
-+++ cinder-2014.2.2/cinder/volume/drivers/zfssa/restclient.py	2015-04-23 17:32:01.898738656 -0700
-@@ -17,6 +17,7 @@ ZFS Storage Appliance REST API Client Pr
- 
- import httplib
- import json
-+import ssl
- import StringIO
- import time
- import urllib2
-@@ -272,9 +273,18 @@ class RestClientURL(object):
-         if body and body != '':
-             LOG.debug('Body: %s' % body)
- 
-+        if hasattr(ssl, '_create_unverified_context'):
-+            context = ssl._create_unverified_context()
-+        else:
-+            context = None
-+
-         while retry < maxreqretries:
-             try:
--                response = urllib2.urlopen(req, timeout=self.timeout)
-+                if context:
-+                    response = urllib2.urlopen(req, timeout=self.timeout,
-+                        context=context)
-+                else:
-+                    response = urllib2.urlopen(req, timeout=self.timeout)
-             except urllib2.HTTPError as err:
-                 if err.code == httplib.NOT_FOUND:
-                     LOG.debug('REST Not Found: %s' % err.code)
--- a/components/openstack/cinder/patches/08-disable-sslv3.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-In-house patch to disable SSLv3 support. 
-(See also upstream bug #1395095)
-
---- cinder-2014.2.2/cinder/openstack/common/sslutils.py.orig	2015-02-05 11:03:26.000000000 -0500
-+++ cinder-2014.2.2/cinder/openstack/common/sslutils.py	2015-08-13 20:27:21.205921362 -0400
-@@ -80,8 +80,7 @@
- 
- _SSL_PROTOCOLS = {
-     "tlsv1": ssl.PROTOCOL_TLSv1,
--    "sslv23": ssl.PROTOCOL_SSLv23,
--    "sslv3": ssl.PROTOCOL_SSLv3
-+    "sslv23": ssl.PROTOCOL_SSLv23
- }
- 
- try:
-@@ -89,6 +88,11 @@
- except AttributeError:
-     pass
- 
-+try:
-+    _SSL_PROTOCOLS["sslv3"] = ssl.PROTOCOL_SSLv3
-+except AttributeError:
-+    pass
-+
- 
- def validate_ssl_version(version):
-     key = version.lower()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/cinder/patches/08-zfssa-target_lun.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,20 @@
+This patch addresses 22554075 which has also been filed in Launchpad
+under 1538582.
+
+--- cinder-2015.1.2/cinder/volume/drivers/zfssa/zfssaiscsi.py.~2~	2016-01-31 17:10:27.739412163 -0800
++++ cinder-2015.1.2/cinder/volume/drivers/zfssa/zfssaiscsi.py	2016-01-31 17:11:03.123083242 -0800
+@@ -1,4 +1,4 @@
+-# Copyright (c) 2014, 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
+@@ -415,7 +415,7 @@ class ZFSSAISCSIDriver(driver.ISCSIDrive
+         iscsi_properties['target_discovered'] = False
+         iscsi_properties['target_portal'] = target_portal
+         iscsi_properties['target_iqn'] = iqn
+-        iscsi_properties['target_lun'] = lun
++        iscsi_properties['target_lun'] = int(lun)
+         iscsi_properties['volume_id'] = volume['id']
+ 
+         if 'provider_auth' in provider:
--- a/components/openstack/cinder/patches/09-launchpad-1414867.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-This upstream patch addresses Launchpad bug 1414867. Although it's been
-addressed in Kilo, the patch below is still not yet released for Juno.
-
-commit 549144f754a8b3adb9d7fdfa8f8f9ee186a52f1e
-Author: wuyuting <email address hidden>
-Date: Tue Jan 27 02:50:28 2015 +0800
-
-    Fetch_to_volume_format calls copy_volume using wrong parameter
-
-    When creating a volume from an image, if qemu-img is not installed,
-    fetch_to_volume_format will call volume_utils.copy_volume to copy
-    image to volume. Copy_volume need the size of image in megabyte,
-    but fetch_to_volume_format call it using size in bytes.
-
-    Change-Id: Ia3b0f9168235a977a12232e27a5755ad11ec18f5
-    Closes-Bug: #1414867
-
---- cinder-2014.2.2/cinder/image/image_utils.py.orig	2015-10-19 15:59:34.730112261 -0700
-+++ cinder-2014.2.2/cinder/image/image_utils.py	2015-10-19 16:02:05.982843565 -0700
-@@ -25,6 +25,7 @@
- 
- 
- import contextlib
-+import math
- import os
- import tempfile
- 
-@@ -238,7 +239,8 @@
-             LOG.debug('Copying image from %(tmp)s to volume %(dest)s - '
-                       'size: %(size)s' % {'tmp': tmp, 'dest': dest,
-                                           'size': image_meta['size']})
--            volume_utils.copy_volume(tmp, dest, image_meta['size'], blocksize)
-+            image_size_m = math.ceil(image_meta['size'] / units.Mi)
-+            volume_utils.copy_volume(tmp, dest, image_size_m, blocksize)
-             return
- 
-         data = qemu_img_info(tmp)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/cinder/patches/09-nfs-mount.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,59 @@
+In-house patch to adapt Linux specific rootwrap setup to Solaris.
+Remove check for Linux specific mount.nfs command.
+
+Patch may be suitable for pushing upsteam.
+
+--- cinder-2014.2.2/cinder/volume/drivers/nfs.py.orig	2015-10-12 16:43:35.188157478 -0700
++++ cinder-2014.2.2/cinder/volume/drivers/nfs.py	2015-10-13 09:35:07.871595794 -0700
+@@ -15,6 +15,7 @@
+ 
+ import errno
+ import os
++import platform
+ import time
+ 
+ from oslo_concurrency import processutils as putils
+@@ -86,7 +87,10 @@ class NfsDriver(remotefs.RemoteFSDriver)
+         self._remotefsclient = None
+         super(NfsDriver, self).__init__(*args, **kwargs)
+         self.configuration.append_config_values(nfs_opts)
+-        root_helper = utils.get_root_helper()
++        if platform.system() == "SunOS":
++            root_helper = None
++        else:
++            root_helper = utils.get_root_helper()
+         # base bound to instance is used in RemoteFsConnector.
+         self.base = getattr(self.configuration,
+                             'nfs_mount_point_base',
+@@ -144,18 +148,19 @@ class NfsDriver(remotefs.RemoteFSDriver)
+ 
+         self.shares = {}  # address : options
+ 
+-        # Check if mount.nfs is installed on this system; note that we don't
+-        # need to be root to see if the package is installed.
+-        package = 'mount.nfs'
+-        try:
+-            self._execute(package, check_exit_code=False,
+-                          run_as_root=False)
+-        except OSError as exc:
+-            if exc.errno == errno.ENOENT:
+-                msg = _('%s is not installed') % package
+-                raise exception.NfsException(msg)
+-            else:
+-                raise exc
++        if platform.system() != "SunOS":
++            # Check if mount.nfs is installed on this system; note that we don't
++            # need to be root to see if the package is installed.
++            package = 'mount.nfs'
++            try:
++                self._execute(package, check_exit_code=False,
++                              run_as_root=False)
++            except OSError as exc:
++                if exc.errno == errno.ENOENT:
++                    msg = _('%s is not installed') % package
++                    raise exception.NfsException(msg)
++                else:
++                    raise exc
+ 
+         # Now that all configuration data has been loaded (shares),
+         # we can "set" our final NAS file security options.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/cinder/patches/10-remotefs.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,81 @@
+In-house patch to adapt Linux specific commands and command output
+parsing to Solaris.
+
+Patch may be suitable for pushing upsteam.
+
+--- cinder-2015.1.0/cinder/brick/remotefs/remotefs.py.orig	2015-10-13 13:33:37.708165135 -0700
++++ cinder-2015.1.0/cinder/brick/remotefs/remotefs.py	2015-10-13 13:42:40.978353719 -0700
+@@ -17,6 +17,7 @@
+ 
+ import hashlib
+ import os
++import platform
+ import re
+ 
+ from oslo_concurrency import processutils as putils
+@@ -77,14 +78,21 @@ class RemoteFsClient(object):
+                             self._get_hash_str(device_name))
+ 
+     def _read_mounts(self):
+-        (out, _err) = self._execute('mount', check_exit_code=0)
++        if platform.system() == "SunOS":
++            (out, _err) = self._execute('/usr/sbin/mount', check_exit_code=0)
++        else:
++            (out, _err) = self._execute('mount', check_exit_code=0)
+         lines = out.split('\n')
+         mounts = {}
+         for line in lines:
+             tokens = line.split()
+             if 2 < len(tokens):
+-                device = tokens[0]
+-                mnt_point = tokens[2]
++                if platform.system() == "SunOS":
++                    device = tokens[2]
++                    mnt_point = tokens[0]
++                else:
++                    device = tokens[0]
++                    mnt_point = tokens[2]
+                 mounts[mnt_point] = device
+         return mounts
+ 
+@@ -96,8 +104,12 @@ class RemoteFsClient(object):
+             LOG.info(_LI('Already mounted: %s') % mount_path)
+             return
+ 
+-        self._execute('mkdir', '-p', mount_path, check_exit_code=0)
+-        if self._mount_type == 'nfs':
++        if platform.system() == "SunOS":
++            self._execute('/usr/bin/mkdir', '-p', mount_path,
++                          check_exit_code=0)
++        else:
++            self._execute('mkdir', '-p', mount_path, check_exit_code=0)
++        if self._mount_type == 'nfs' and platform.system() != "SunOS":
+             self._mount_nfs(share, mount_path, flags)
+         else:
+             self._do_mount(self._mount_type, share, mount_path,
+@@ -106,15 +118,21 @@ class RemoteFsClient(object):
+     def _do_mount(self, mount_type, share, mount_path, mount_options=None,
+                   flags=None):
+         """Mounts share based on the specified params."""
+-        mnt_cmd = ['mount', '-t', mount_type]
++        if platform.system() == "SunOS":
++            mnt_cmd = ['/usr/sbin/mount', '-F', mount_type]
++        else:
++            mnt_cmd = ['mount', '-t', mount_type]
+         if mount_options is not None:
+             mnt_cmd.extend(['-o', mount_options])
+         if flags is not None:
+             mnt_cmd.extend(flags)
+         mnt_cmd.extend([share, mount_path])
+ 
+-        self._execute(*mnt_cmd, root_helper=self.root_helper,
+-                      run_as_root=True, check_exit_code=0)
++        if platform.system() == "SunOS":
++            self._execute(*mnt_cmd, check_exit_code=0)
++        else:
++            self._execute(*mnt_cmd, root_helper=self.root_helper,
++                          run_as_root=True, check_exit_code=0)
+ 
+     def _mount_nfs(self, nfs_share, mount_path, flags=None):
+         """Mount nfs share using present mount types."""
+
--- a/components/openstack/cinder/patches/10-zfssa-free-space.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-From 075ff30d7d8bbeca1af634718f3cb19099bc44b3 Mon Sep 17 00:00:00 2001
-From: Abhiram Moturi <[email protected]>
-Date: Mon, 10 Aug 2015 14:23:09 +0000
-Subject: [PATCH] ZFSSA driver to return project 'available' space
-
-This fix allows the iSCSI driver to return the 'available' space
-property at project level instead of the pool level which is more
-accurate in cases when storage is not thin provisioned.
-
-Change-Id: I52dec5e527eab393fd464fbc7f4f910fafb67268
-Closes-Bug: #1479342
----
---- cinder-2014.2.2/cinder/volume/drivers/zfssa/zfssarest.py.~1~	2015-11-08 22:01:48.358042338 -0800
-+++ cinder-2014.2.2/cinder/volume/drivers/zfssa/zfssarest.py	2015-11-08 22:02:05.691920138 -0800
-@@ -82,7 +82,7 @@
-                                 'ret.status': ret.status,
-                                 'ret.data': ret.data})
-             LOG.error(exception_msg)
--            raise exception.InvalidVolume(reason=exception_msg)
-+            raise exception.VolumeBackendAPIException(data=exception_msg)
- 
-         val = json.loads(ret.data)
- 
-@@ -95,10 +95,31 @@
-             LOG.error(exception_msg)
-             raise exception.InvalidInput(reason=pool)
- 
--        avail = val['pool']['usage']['available']
-         total = val['pool']['usage']['total']
- 
--        return avail, total
-+        return total
-+
-+    def get_project_stats(self, pool, project):
-+        """Get available space of a project."""
-+        svc = '/api/storage/v1/pools/%s/projects/%s' % (pool, project)
-+        ret = self.rclient.get(svc)
-+        if ret.status != restclient.Status.OK:
-+            exception_msg = (_('Error Getting Project Stats: '
-+                               'Pool: %(pool)s '
-+                               'Project: %(project)s '
-+                               'Return code: %(ret.status)d '
-+                               'Message: %(ret.data)s.')
-+                             % {'pool': pool,
-+                                'project': project,
-+                                'ret.status': ret.status,
-+                                'ret.data': ret.data})
-+            LOG.error(exception_msg)
-+            raise exception.VolumeBackendAPIException(data=exception_msg)
-+ 
-+        val = json.loads(ret.data)
-+        avail = val['project']['space_available']
-+ 
-+        return avail
- 
-     def create_project(self, pool, project, compression=None, logbias=None):
-         """Create a project on a pool
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/cinder/patches/11-nfs-backup.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,31 @@
+In-house patch to cleanup backup container directories when empty.
+
+Patch may be suitable for pushing upsteam.
+
+--- cinder-2015.1.0/cinder/backup/drivers/nfs.py.orig	2015-11-24 11:49:37.670852276 -0700
++++ cinder-2015.1.0/cinder/backup/drivers/nfs.py	2015-11-24 13:31:57.282595085 -0700
+@@ -137,9 +137,21 @@ class NFSBackupDriver(chunkeddriver.Chun
+         return open(path, 'r')
+ 
+     def delete_object(self, container, object_name):
+-        # TODO(tbarron):  clean up the container path if it is empty
+-        path = os.path.join(self.backup_path, container, object_name)
+-        os.remove(path)
++        obj_path = os.path.join(self.backup_path, container, object_name)
++        cpath = os.path.join(self.backup_path, container)
++        os.remove(obj_path)
++
++        # Cleanup container path if it is empty.
++        if not os.listdir(cpath):
++            start = os.getcwd()
++            os.chdir(self.backup_path)
++            try:
++                # Try to remove all the component dirs
++                # in container path.  os.removedirs will
++                # stop if the directory is not empty.
++                os.removedirs(container)
++            finally:
++                os.chdir(start)
+ 
+     def _generate_object_name_prefix(self, backup):
+         return 'backup'
--- a/components/openstack/cinder/patches/11-zfssa-pep-iscsi.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
---- cinder-2014.2.2/cinder/volume/drivers/zfssa/zfssaiscsi.py.~1~	2015-02-05 08:03:26.000000000 -0800
-+++ cinder-2014.2.2/cinder/volume/drivers/zfssa/zfssaiscsi.py	2015-11-08 21:59:29.027424535 -0800
-@@ -290,7 +290,9 @@
-         data["storage_protocol"] = self.protocol
- 
-         lcfg = self.configuration
--        (avail, total) = self.zfssa.get_pool_stats(lcfg.zfssa_pool)
-+        total = self.zfssa.get_pool_stats(lcfg.zfssa_pool)
-+        avail = self.zfssa.get_project_stats(lcfg.zfssa_pool,
-+                                             lcfg.zfssa_project)
-         if avail is None or total is None:
-             return
- 
-@@ -334,9 +336,8 @@
-                                           '')
- 
-     def ensure_export(self, context, volume):
--        """Driver entry point to get the export info for an existing volume."""
--        LOG.debug('ensure_export: volume name: %s' % volume['name'])
--        return self._export_volume(volume)
-+        """Synchronously recreates an export for a volume."""
-+        pass
- 
-     def copy_image_to_volume(self, context, volume, image_service, image_id):
-         self.ensure_export(context, volume)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/cinder/patches/12-generate_sample.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,45 @@
+In-house patch to update the generate_sample script and related data
+files for use with Solaris.
+
+--- cinder-2015.1.2/tools/config/generate_sample.sh.orig	2015-10-13 09:27:35.000000000 -0700
++++ cinder-2015.1.2/tools/config/generate_sample.sh	2016-01-31 22:28:46.003791619 -0800
+@@ -1,5 +1,7 @@
+ #!/usr/bin/env bash
+ 
++PATH=/usr/gnu/bin:/usr/bin
++
+ # Generate sample configuration for your project.
+ #
+ # Aside from the command line flags, it also respects a config file which
+@@ -97,6 +99,7 @@ fi
+ BASEDIRESC=`echo $BASEDIR | sed -e 's/\//\\\\\//g'`
+ find $TARGETDIR -type f -name "*.pyc" -delete
+ FILES=$(find $TARGETDIR -type f -name "*.py" ! -path "*/tests/*" \
++        ! -name test.py \
+         -exec grep -l "Opt(" {} + | sed -e "s/^$BASEDIRESC\///g" | sort -u)
+ 
+ RC_FILE="`dirname $0`/oslo.config.generator.rc"
+@@ -136,9 +139,3 @@ CONCAT_FILES=$(ls $BASEDIR/tools/config/
+ for CONCAT_FILE in $CONCAT_FILES; do
+     cat $CONCAT_FILE >> $OUTPUTFILE
+ done
+-
+-# Now we need to get externals
+-oslo-config-generator \
+---namespace oslo_concurrency --namespace oslo_db \
+---namespace oslo_messaging --namespace policy \
+---namespace keystonemiddleware.auth_token  >> $OUTPUTFILE
+--- cinder-2015.1.2/tools/config/oslo.config.generator.rc.orig	2015-10-13 09:27:35.000000000 -0700
++++ cinder-2015.1.2/tools/config/oslo.config.generator.rc	2016-01-31 22:29:40.025594671 -0800
+@@ -1,2 +1,9 @@
+-export CINDER_CONFIG_GENERATOR_EXTRA_MODULES="keystonemiddleware.auth_token"
+-export CINDER_CONFIG_GENERATOR_EXTRA_LIBRARIES="oslo_concurrency oslo.messaging oslo_db oslo.db.concurrency"
++export CINDER_CONFIG_GENERATOR_EXTRA_LIBRARIES=" \
++    keystonemiddleware.auth_token \
++    oslo.concurrency \
++    oslo.db \
++    oslo.db.concurrency \
++    oslo.log \
++    oslo.messaging \
++    oslo.middleware \
++"
--- a/components/openstack/common/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/common/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,13 +20,13 @@
 #
 
 #
-# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		openstack
-COMPONENT_VERSION=	2014.2.2
+COMPONENT_VERSION=	2015.1.2
 COMPONENT_PROJECT_URL=	http://www.openstack.org/
 COMPONENT_BUGDB=	service/nova
 IPS_COMPONENT_VERSION=	0.$(COMPONENT_VERSION)
--- a/components/openstack/common/files/openstack_common.py	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/common/files/openstack_common.py	Fri Feb 05 17:54:17 2016 -0500
@@ -153,10 +153,10 @@
                 new_section, new_key = old_section, old_key
 
             # Look for exceptions
-            if exception_list is not None:
+            if exception_list:
                 if (new_section, new_key) in exception_list:
                     if (new_section != 'DEFAULT' and
-                        not new.has_section(new_section)):
+                            not new.has_section(new_section)):
                         new.add_section(new_section)
                     print "Preserving [%s] %s = %s" % \
                         (new_section, new_key, value)
--- a/components/openstack/common/openstack-common.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/common/openstack-common.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,7 @@
 #
 
 #
-# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 set name=pkg.fmri \
@@ -28,7 +28,7 @@
 set name=pkg.summary value="OpenStack Common Package"
 set name=pkg.description \
     value="Library package for common data structures and functions used by other OpenStack projects within Solaris."
-set name=pkg.human-version value="Juno $(COMPONENT_VERSION)"
+set name=pkg.human-version value="Kilo $(COMPONENT_VERSION)"
 set name=info.classification \
     value="org.opensolaris.category.2008:System/Administration and Configuration" \
     value="org.opensolaris.category.2008:System/Enterprise Management" \
@@ -37,7 +37,7 @@
 set name=info.upstream value="OpenStack <[email protected]>"
 set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
 set name=org.opensolaris.arc-caseid value=PSARC/2013/350 value=PSARC/2015/110 \
-    value=PSARC/2015/233
+    value=PSARC/2015/233 value=PSARC/2015/535
 set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
 #
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_common.py
--- a/components/openstack/common/openstack.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/common/openstack.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,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.
 #
 
 set name=pkg.fmri \
@@ -28,7 +28,7 @@
 set name=pkg.summary value=OpenStack
 set name=pkg.description \
     value="OpenStack is a cloud operating system that controls large pools of compute, storage, and networking resources throughout a data center, all managed through a dashboard that gives administrators control while empowering their users to provision resources through a web interface."
-set name=pkg.human-version value="Juno $(COMPONENT_VERSION)"
+set name=pkg.human-version value="Kilo $(COMPONENT_VERSION)"
 set name=info.classification \
     value="org.opensolaris.category.2008:Meta Packages/Group Packages" \
     value="org.opensolaris.category.2008:System/Administration and Configuration" \
@@ -59,9 +59,13 @@
 depend type=group fmri=library/python/keystoneclient
 depend type=group fmri=library/python/neutronclient
 depend type=group fmri=library/python/novaclient
+depend type=group fmri=library/python/openstackclient
 depend type=group fmri=library/python/python-mysql
 depend type=group fmri=library/python/saharaclient
 depend type=group fmri=library/python/swiftclient
 depend type=group fmri=library/python/troveclient
 depend type=group fmri=network/amqp/rabbitmq
 depend type=group fmri=system/management/rad/module/rad-evs-controller
+
+# To upgrade to Kilo version, Juno version of the package must be on the system
+depend type=origin fmri=pkg:/cloud/[email protected] root-image=true
--- a/components/openstack/glance/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/glance/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,26 +20,26 @@
 #
 
 #
-# Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		glance
-COMPONENT_CODENAME=	juno
-COMPONENT_VERSION=	2014.2.2
-COMPONENT_BE_VERSION=	2014.2
+COMPONENT_CODENAME=	kilo
+COMPONENT_VERSION=	2015.1.2
+COMPONENT_BE_VERSION=	2015.1
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:bf7273ff9e89e9a7edda76e7a2235989a25109fb728edc4afa956e74ef54a08c
+    sha256:e46bc6648a74a643cef3825dcd44c7e275ed3385b96cab83ef50c4c514932541
 COMPONENT_ARCHIVE_URL=	http://launchpad.net/$(COMPONENT_NAME)/$(COMPONENT_CODENAME)/$(COMPONENT_VERSION)/+download/$(COMPONENT_ARCHIVE)
 COMPONENT_SIG_URL=	$(COMPONENT_ARCHIVE_URL).asc
 COMPONENT_PROJECT_URL=	http://www.openstack.org/
 COMPONENT_BUGDB=	service/glance
 IPS_COMPONENT_VERSION=	0.$(COMPONENT_VERSION)
 
-TPNO=			21820
+TPNO=			25785
 
 include $(WS_MAKE_RULES)/prep.mk
 include $(WS_MAKE_RULES)/setup.py.mk
@@ -77,15 +77,21 @@
 
 test:		$(NO_TESTS)
 
-system-test:    $(NO_TESTS)
+system-test:	$(NO_TESTS)
 
 
 REQUIRED_PACKAGES += cloud/openstack/openstack-common
 REQUIRED_PACKAGES += library/python/eventlet-27
+REQUIRED_PACKAGES += library/python/glance_store-27
 REQUIRED_PACKAGES += library/python/iniparse-27
 REQUIRED_PACKAGES += library/python/m2crypto-27
 REQUIRED_PACKAGES += library/python/oslo.config-27
-REQUIRED_PACKAGES += library/python/python-mysql-27
+REQUIRED_PACKAGES += library/python/oslo.messaging-27
+REQUIRED_PACKAGES += library/python/oslo.serialization-27
+REQUIRED_PACKAGES += library/python/oslo.utils-27
+REQUIRED_PACKAGES += library/python/osprofiler-27
+REQUIRED_PACKAGES += library/python/six-27
 REQUIRED_PACKAGES += library/python/sqlalchemy-27
 REQUIRED_PACKAGES += library/python/sqlalchemy-migrate-27
+REQUIRED_PACKAGES += library/python/webob-27
 REQUIRED_PACKAGES += system/core-os
--- a/components/openstack/glance/files/glance-api.conf	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/glance/files/glance-api.conf	Fri Feb 05 17:54:17 2016 -0500
@@ -1,650 +1,702 @@
 [DEFAULT]
-# Show more verbose log output (sets INFO log level output)
-#verbose = False
-
-# Show debugging output in logs (sets DEBUG log level output)
-#debug = False
-
-# Which backend scheme should Glance use by default is not specified
-# in a request to add a new image to Glance? Known schemes are determined
-# by the known_stores option below.
-# Default: 'file'
-default_store = file
 
-# Maximum image size (in bytes) that may be uploaded through the
-# Glance API server. Defaults to 1 TB.
-# WARNING: this value should only be increased after careful consideration
-# and must be set to a value under 8 EB (9223372036854775808).
-#image_size_cap = 1099511627776
-
-# Address to bind the API server
-bind_host = 0.0.0.0
-
-# Port the bind the API server to
-bind_port = 9292
-
-# Log to this file. Make sure you do not set the same log file for both the API
-# and registry servers!
+#
+# From glance.api
 #
-# If `log_file` is omitted and `use_syslog` is false, then log messages are
-# sent to stdout as a fallback.
-log_file = /var/log/glance/api.log
-
-# Backlog requests when creating socket
-backlog = 4096
-
-# TCP_KEEPIDLE value in seconds when creating socket.
-# Not supported on OS X.
-#tcp_keepidle = 600
 
-# API to use for accessing data. Default value points to sqlalchemy
-# package, it is also possible to use: glance.db.registry.api
-# data_api = glance.db.sqlalchemy.api
+# When true, this option sets the owner of an image to be the tenant.
+# Otherwise, the owner of the  image will be the authenticated user
+# issuing the request. (boolean value)
+#owner_is_tenant = true
 
-# The number of child process workers that will be
-# created to service API requests. The default will be
-# equal to the number of CPUs available. (integer value)
-workers = 1
-
-# 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)
-# max_header_line = 16384
-
-# Role used to identify an authenticated user as administrator
+# Role used to identify an authenticated user as administrator.
+# (string value)
 #admin_role = admin
 
 # Allow unauthenticated users to access the API with read-only
-# privileges. This only applies when using ContextMiddleware.
-#allow_anonymous_access = False
+# privileges. This only applies when using ContextMiddleware. (boolean
+# value)
+#allow_anonymous_access = false
+
+# Public url to use for versions endpoint. The default is None, which
+# will use the request's host_url attribute to populate the URL base.
+# If Glance is operating behind a proxy, you will want to change this
+# to represent the proxy's URL. (string value)
+#public_endpoint = <None>
 
-# Allow access to version 1 of glance api
-#enable_v1_api = True
+# Whether to allow users to specify image properties beyond what the
+# image schema provides (boolean value)
+#allow_additional_image_properties = true
+
+# Maximum number of image members per image. Negative values evaluate
+# to unlimited. (integer value)
+#image_member_quota = 128
 
-# Allow access to version 2 of glance api
-#enable_v2_api = True
+# Maximum number of properties allowed on an image. Negative values
+# evaluate to unlimited. (integer value)
+#image_property_quota = 128
+
+# Maximum number of tags allowed on an image. Negative values evaluate
+# to unlimited. (integer value)
+#image_tag_quota = 128
 
-# Return the URL that references where the data is stored on
-# the backend storage system.  For example, if using the
-# file system store a URL of 'file:///path/to/image' will
-# be returned to the user in the 'direct_url' meta-data field.
-# The default value is false.
-#show_image_direct_url = False
+# Maximum number of locations allowed on an image. Negative values
+# evaluate to unlimited. (integer value)
+#image_location_quota = 10
+
+# Python module path of data access API (string value)
+#data_api = glance.db.sqlalchemy.api
+
+# Default value for the number of items returned by a request if not
+# specified explicitly in the request (integer value)
+#limit_param_default = 25
 
-# Send headers containing user and tenant information when making requests to
-# the v1 glance registry. This allows the registry to function as if a user is
-# authenticated without the need to authenticate a user itself using the
-# auth_token middleware.
-# The default value is false.
-#send_identity_headers = False
+# Maximum permissible number of items that could be returned by a
+# request (integer value)
+#api_limit_max = 1000
 
-# Supported values for the 'container_format' image attribute
-container_formats=ami,ari,aki,bare,ovf,ova,uar
+# Whether to include the backend image storage location in image
+# properties. Revealing storage location can be a security risk, so
+# use this setting with caution! (boolean value)
+#show_image_direct_url = false
+
+# Whether to include the backend image locations in image properties.
+# For example, if using the file system store a URL of
+# "file:///path/to/image" will be returned to the user in the
+# 'direct_url' meta-data field. Revealing storage location can be a
+# security risk, so use this setting with caution!  The overrides
+# show_image_direct_url. (boolean value)
+#show_multiple_locations = false
 
-# Supported values for the 'disk_format' image attribute
-disk_formats=ami,ari,aki,vhd,vmdk,raw,qcow2,vdi,iso,zfs
+# Maximum size of image a user can upload in bytes. Defaults to
+# 1099511627776 bytes (1 TB).WARNING: this value should only be
+# increased after careful consideration and must be set to a value
+# under 8 EB (9223372036854775808). (integer value)
+#image_size_cap = 1099511627776
 
-# Directory to use for lock files. Default to a temp directory
-# (string value). This setting needs to be the same for both
-# glance-scrubber and glance-api.
-#lock_path=<None>
+# Set a system wide quota for every user. This value is the total
+# capacity that a user can use across all storage systems. A value of
+# 0 means unlimited.Optional unit can be specified for the value.
+# Accepted units are B, KB, MB, GB and TB representing Bytes,
+# KiloBytes, MegaBytes, GigaBytes and TeraBytes respectively. If no
+# unit is specified then Bytes is assumed. Note that there should not
+# be any space between value and unit and units are case sensitive.
+# (string value)
+#user_storage_quota = 0
+
+# Deploy the v1 OpenStack Images API. (boolean value)
+#enable_v1_api = true
+
+# Deploy the v2 OpenStack Images API. (boolean value)
+#enable_v2_api = true
+
+# Deploy the v1 OpenStack Registry API. (boolean value)
+#enable_v1_registry = true
 
-# Property Protections config file
-# This file contains the rules for property protections and the roles/policies
-# associated with it.
-# If this config value is not specified, by default, property protections
-# won't be enforced.
-# If a value is specified and the file is not found, then the glance-api
-# service will not start.
-#property_protection_file =
+# Deploy the v2 OpenStack Registry API. (boolean value)
+#enable_v2_registry = true
+
+# The hostname/IP of the pydev process listening for debug connections
+# (string value)
+#pydev_worker_debug_host = <None>
+
+# The port on which a pydev process is listening for connections.
+# (integer value)
+#pydev_worker_debug_port = 5678
 
-# Specify whether 'roles' or 'policies' are used in the
-# property_protection_file.
-# The default value for property_protection_rule_format is 'roles'.
-#property_protection_rule_format = roles
+# AES key for encrypting store 'location' metadata. This includes, if
+# used, Swift or S3 credentials. Should be set to a random string of
+# length 16, 24 or 32 bytes (string value)
+#metadata_encryption_key = <None>
 
-# This value sets what strategy will be used to determine the image location
-# order. Currently two strategies are packaged with Glance 'location_order'
-# and 'store_type'.
+# Digest algorithm which will be used for digital signature; the
+# default is sha1 the default in Kilo for a smooth upgrade process,
+# and it will be updated with sha256 in next release(L). Use the
+# command "openssl list-message-digest-algorithms" to get the
+# available algorithms supported by the version of OpenSSL on the
+# platform. Examples are "sha1", "sha256", "sha512", etc. (string
+# value)
+#digest_algorithm = sha1
+
+# This value sets what strategy will be used to determine the image
+# location order. Currently two strategies are packaged with Glance
+# 'location_order' and 'store_type'. (string value)
+# Allowed values: location_order, store_type
 #location_strategy = location_order
 
-# ================= Syslog Options ============================
-
-# Send logs to syslog (/dev/log) instead of to file specified
-# by `log_file`
-#use_syslog = False
+# The location of the property protection file.This file contains the
+# rules for property protections and the roles/policies associated
+# with it. If this config value is not specified, by default, property
+# protections won't be enforced. If a value is specified and the file
+# is not found, then the glance-api service will not start. (string
+# value)
+#property_protection_file = <None>
 
-# Facility to use. If unset defaults to LOG_USER.
-#syslog_log_facility = LOG_LOCAL0
-
-# ================= SSL Options ===============================
+# This config value indicates whether "roles" or "policies" are used
+# in the property protection file. (string value)
+# Allowed values: roles, policies
+#property_protection_rule_format = roles
 
-# Certificate file to use when starting API server securely
-#cert_file = /path/to/certfile
+# Modules of exceptions that are permitted to be recreated upon
+# receiving exception data from an rpc call. (list value)
+#allowed_rpc_exception_modules = openstack.common.exception,glance.common.exception,exceptions
 
-# Private key file to use when starting API server securely
-#key_file = /path/to/keyfile
+# Address to bind the server.  Useful when selecting a particular
+# network interface. (string value)
+#bind_host = 0.0.0.0
+
+# The port on which the server will listen. (integer value)
+#bind_port = <None>
 
-# CA certificate file to use to verify connecting clients
-#ca_file = /path/to/cafile
+# The number of child process workers that will be created to service
+# requests. The default will be equal to the number of CPUs available.
+# (integer value)
+workers = 1
 
-# ================= Security Options ==========================
+# 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
 
-# AES key for encrypting store 'location' metadata, including
-# -- if used -- Swift or S3 credentials
-# Should be set to a random string of length 16, 24 or 32 bytes
-#metadata_encryption_key = <16, 24 or 32 char registry metadata key>
+# If False, server will return the header "Connection: close", If
+# True, server will return "Connection: Keep-Alive" in its responses.
+# In order to close the client socket connection explicitly after the
+# response is sent and read successfully by the client, you simply
+# have to set this option to False when you create a wsgi server.
+# (boolean value)
+#http_keepalive = true
 
-# ============ Registry Options ===============================
+# 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 = 0
 
-# Address to find the registry server
-registry_host = 0.0.0.0
-
-# Port the registry server is listening on
-registry_port = 9191
+# The backlog value that will be used when creating the TCP listener
+# socket. (integer value)
+#backlog = 4096
 
-# What protocol to use when connecting to the registry server?
-# Set to https for secure HTTP communication
-registry_client_protocol = http
+# The value for the socket option TCP_KEEPIDLE.  This is the time in
+# seconds that the connection must be idle before TCP starts sending
+# keepalive probes. (integer value)
+#tcp_keepidle = 600
 
-# The path to the key file to use in SSL connections to the
-# registry server, if any. Alternately, you may set the
-# GLANCE_CLIENT_KEY_FILE environ variable to a filepath of the key file
-#registry_client_key_file = /path/to/key/file
+# CA certificate file to use to verify connecting clients. (string
+# value)
+#ca_file = <None>
 
-# The path to the cert file to use in SSL connections to the
-# registry server, if any. Alternately, you may set the
-# GLANCE_CLIENT_CERT_FILE environ variable to a filepath of the cert file
-#registry_client_cert_file = /path/to/cert/file
+# Certificate file to use when starting API server securely. (string
+# value)
+#cert_file = <None>
 
-# The path to the certifying authority cert file to use in SSL connections
-# to the registry server, if any. Alternately, you may set the
-# GLANCE_CLIENT_CA_FILE environ variable to a filepath of the CA cert file
-#registry_client_ca_file = /path/to/ca/file
+# Private key file to use when starting API server securely. (string
+# value)
+#key_file = <None>
+
+# The path to the sqlite file database that will be used for image
+# cache management. (string value)
+#image_cache_sqlite_db = cache.db
+
+# The driver to use for image cache management. (string value)
+#image_cache_driver = sqlite
 
-# When using SSL in connections to the registry server, do not require
-# validation via a certifying authority. This is the registry's equivalent of
-# specifying --insecure on the command line using glanceclient for the API
-# Default: False
-#registry_client_insecure = False
+# The upper limit (the maximum size of accumulated cache in bytes)
+# beyond which pruner, if running, starts cleaning the images cache.
+# (integer value)
+#image_cache_max_size = 10737418240
 
-# The period of time, in seconds, that the API server will wait for a registry
-# request to complete. A value of '0' implies no timeout.
-# Default: 600
-#registry_client_timeout = 600
+# The amount of time to let an image remain in the cache without being
+# accessed. (integer value)
+#image_cache_stall_time = 86400
+
+# Base directory that the Image Cache uses. (string value)
+#image_cache_dir = <None>
+
+# Default publisher_id for outgoing notifications. (string value)
+#default_publisher_id = image.localhost
 
-# Whether to automatically create the database tables.
-# Default: False
-#db_auto_create = False
+# List of disabled notifications. A notification can be given either
+# as a notification type to disable a single event, or as a
+# notification group prefix to disable all events within a group.
+# Example: if this config option is set to ["image.create",
+# "metadef_namespace"], then "image.create" notification will not be
+# sent after image is created and none of the notifications for
+# metadefinition namespaces will be sent. (list value)
+#disabled_notifications =
 
-# Enable DEBUG log messages from sqlalchemy which prints every database
-# query and response.
-# Default: False
-#sqlalchemy_debug = True
+# Address to find the registry server. (string value)
+#registry_host = 0.0.0.0
 
-# Pass the user's token through for API requests to the registry.
+# Port the registry server is listening on. (integer value)
+#registry_port = 9191
+
+# Whether to pass through the user token when making requests to the
+# registry. (boolean value)
 # WARNING: DO NOT CHANGE THIS VALUE.  Setting use_user_token to False
 # allows for unintended privilege escalation within the Glance API server.
 # See https://wiki.openstack.org/wiki/OSSN/OSSN-0060
-# Default: True
-#use_user_token = True
+#use_user_token = true
+
+# The administrators user name. If "use_user_token" is not in effect,
+# then admin credentials can be specified. (string value)
+#admin_user = <None>
+
+# The administrators password. If "use_user_token" is not in effect,
+# then admin credentials can be specified. (string value)
+#admin_password = <None>
+
+# The tenant name of the administrative user. If "use_user_token" is
+# not in effect, then admin tenant name can be specified. (string
+# value)
+#admin_tenant_name = <None>
+
+# The URL to the keystone service. If "use_user_token" is not in
+# effect and using keystone auth, then URL of keystone can be
+# specified. (string value)
+#auth_url = <None>
+
+# The strategy to use for authentication. If "use_user_token" is not
+# in effect, then auth strategy can be specified. (string value)
+#auth_strategy = noauth
 
-# If 'use_user_token' is not in effect then admin credentials
-# can be specified. Requests to the registry on behalf of
-# the API will use these credentials.
-# Admin user name
-#admin_user = None
-# Admin password
-#admin_password = None
-# Admin tenant name
-#admin_tenant_name = None
-# Keystone endpoint
-#auth_url = None
-# Keystone region
-#auth_region = None
-# Auth strategy
-#auth_strategy = keystone
+# The region for the authentication service. If "use_user_token" is
+# not in effect and using keystone auth, then region name can be
+# specified. (string value)
+#auth_region = <None>
+
+# The protocol to use for communication with the registry server.
+# Either http or https. (string value)
+#registry_client_protocol = http
+
+# The path to the key file to use in SSL connections to the registry
+# server, if any. Alternately, you may set the GLANCE_CLIENT_KEY_FILE
+# environment variable to a filepath of the key file (string value)
+#registry_client_key_file = <None>
 
-# ============ Notification System Options =====================
+# The path to the cert file to use in SSL connections to the registry
+# server, if any. Alternately, you may set the GLANCE_CLIENT_CERT_FILE
+# environment variable to a filepath of the CA cert file (string
+# value)
+#registry_client_cert_file = <None>
+
+# The path to the certifying authority cert file to use in SSL
+# connections to the registry server, if any. Alternately, you may set
+# the GLANCE_CLIENT_CA_FILE environment variable to a filepath of the
+# CA cert file. (string value)
+#registry_client_ca_file = <None>
+
+# When using SSL in connections to the registry server, do not require
+# validation via a certifying authority. This is the registry's
+# equivalent of specifying --insecure on the command line using
+# glanceclient for the API. (boolean value)
+#registry_client_insecure = false
 
-# Driver or drivers to handle sending notifications. Set to
-# 'messaging' to send notifications to a message queue.
-# notification_driver = noop
+# The period of time, in seconds, that the API server will wait for a
+# registry request to complete. A value of 0 implies no timeout.
+# (integer value)
+#registry_client_timeout = 600
+
+# Whether to pass through headers containing user and tenant
+# information when making requests to the registry. This allows the
+# registry to use the context middleware without keystonemiddleware's
+# auth_token middleware, removing calls to the keystone auth service.
+# It is recommended that when using this option, secure communication
+# between glance api and glance registry is ensured by means other
+# than auth_token middleware. (boolean value)
+#send_identity_headers = false
 
-# Default publisher_id for outgoing notifications.
-# default_publisher_id = image.localhost
+# Directory that the scrubber will use to track information about what
+# to delete. Make sure this is set in glance-api.conf and glance-
+# scrubber.conf. (string value)
+#scrubber_datadir = /var/lib/glance/scrubber
 
-# Messaging driver used for 'messaging' notifications driver
-# rpc_backend = 'rabbit'
+# The amount of time in seconds to delay before performing a delete.
+# (integer value)
+#scrub_time = 0
+
+# A boolean that determines if the scrubber should clean up the files
+# it uses for taking data. Only one server in your deployment should
+# be designated the cleanup host. (boolean value)
+#cleanup_scrubber = false
+
+# Turn on/off delayed delete. (boolean value)
+#delayed_delete = false
 
-# Configuration options if sending notifications via rabbitmq (these are
-# the defaults)
-rabbit_host = localhost
-rabbit_port = 5672
-rabbit_use_ssl = false
-rabbit_userid = guest
-rabbit_password = guest
-rabbit_virtual_host = /
-rabbit_notification_exchange = glance
-rabbit_notification_topic = notifications
-rabbit_durable_queues = False
+# Items must have a modified time that is older than this value in
+# order to be candidates for cleanup. (integer value)
+#cleanup_scrubber_time = 86400
+
+#
+# From 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
 
-# Configuration options if sending notifications via Qpid (these are
-# the defaults)
-qpid_notification_exchange = glance
-qpid_notification_topic = notifications
-qpid_hostname = localhost
-qpid_port = 5672
-qpid_username =
-qpid_password =
-qpid_sasl_mechanisms =
-qpid_reconnect_timeout = 0
-qpid_reconnect_limit = 0
-qpid_reconnect_interval_min = 0
-qpid_reconnect_interval_max = 0
-qpid_reconnect_interval = 0
-qpid_heartbeat = 5
-# Set to 'ssl' to enable SSL
-qpid_protocol = tcp
-qpid_tcp_nodelay = True
+# (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
 
-# ============ Delayed Delete Options =============================
+# 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
 
-# Turn on/off delayed delete
-delayed_delete = False
+# Enables or disables publication of error events. (boolean value)
+#publish_errors = false
+
+# Enables or disables fatal status of deprecations. (boolean value)
+#fatal_deprecations = false
 
-# Delayed delete time in seconds
-scrub_time = 43200
+# 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] "
+
+#
+# From oslo.messaging
+#
 
-# Directory that the scrubber will use to remind itself of what to delete
-# Make sure this is also set in glance-scrubber.conf
-scrubber_datadir = /var/lib/glance/scrubber
+# 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 = *
 
-# =============== Quota Options ==================================
+# 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
 
-# The maximum number of image members allowed per image
-#image_member_quota = 128
+# 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
 
-# The maximum number of image properties allowed per image
-#image_property_quota = 128
+# 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
 
-# The maximum number of tags allowed per image
-#image_tag_quota = 128
+# Seconds to wait before a cast expires (TTL). Only supported by
+# impl_zmq. (integer value)
+#rpc_cast_timeout = 30
 
-# The maximum number of locations allowed per image
-#image_location_quota = 10
+# 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
 
-# Set a system wide quota for every user.  This value is the total number
-# of bytes that a user can use across all storage systems.  A value of
-# 0 means unlimited.
-#user_storage_quota = 0
+# 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>
 
-# =============== Image Cache Options =============================
+# The messaging driver to use, defaults to rabbit. Other drivers
+# include qpid and zmq. (string value)
+#rpc_backend = rabbit
 
-# Base directory that the Image Cache uses
-image_cache_dir = /var/lib/glance/image-cache/
+# 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
 
-# =============== Database Options =================================
 
 [database]
-# The file name to use with SQLite (string value)
+
+#
+# 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)
-#sqlite_synchronous = True
+# If True, SQLite uses synchronous mode. (boolean value)
+# Deprecated group/name - [DEFAULT]/sqlite_synchronous
+#sqlite_synchronous = true
 
-# The backend to use for db (string value)
+# The back end to use for the database. (string value)
 # Deprecated group/name - [DEFAULT]/db_backend
 #backend = sqlalchemy
 
-# The SQLAlchemy connection string used to connect to the
-# database (string value)
+# 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/glance
 
-# 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)
+# 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)
+# 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)
+# 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)
+# 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 db connection retries during startup. (setting -1
-# implies an infinite retry count) (integer value)
+# 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)
+# 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)
+# 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)
+# 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)
+# Add Python stack traces to SQL as comment strings. (boolean value)
 # Deprecated group/name - [DEFAULT]/sql_connection_trace
-#connection_trace = False
+#connection_trace = false
 
-# If set, use this value for pool_timeout with sqlalchemy
-# (integer value)
+# 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
+# Enable the experimental use of database reconnect on connection
+# lost. (boolean value)
+#use_db_reconnect = false
 
-# seconds between db connection retries (integer value)
+# Seconds between retries of a database transaction. (integer value)
 #db_retry_interval = 1
 
-# Whether to increase interval between db connection retries,
-# up to db_max_retry_interval (boolean value)
-#db_inc_retry_interval = True
+# If True, increases the interval between retries of a database
+# operation up to db_max_retry_interval. (boolean value)
+#db_inc_retry_interval = true
 
-# max seconds between db connection retries, if
-# db_inc_retry_interval is enabled (integer value)
+# If db_inc_retry_interval is set, the maximum seconds between retries
+# of a database operation. (integer value)
 #db_max_retry_interval = 10
 
-# maximum db connection retries before error is raised.
-# (setting -1 implies an infinite retry count) (integer value)
+# 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
 
-[keystone_authtoken]
-auth_uri = http://127.0.0.1:5000/v2.0/
-identity_uri = http://127.0.0.1:35357/
-admin_tenant_name = %SERVICE_TENANT_NAME%
-admin_user = %SERVICE_USER%
-admin_password = %SERVICE_PASSWORD%
-revocation_cache_time = 10
-signing_dir = /var/lib/glance/keystone-signing
-
-[paste_deploy]
-# Name of the paste configuration file that defines the available pipelines
-#config_file = glance-api-paste.ini
-
-# Partial name of a pipeline in your paste configuration file with the
-# service name removed. For example, if your paste section name is
-# [pipeline:glance-api-keystone], you would configure the flavor below
-# as 'keystone'.
-flavor=keystone
+#
+# From oslo.db.concurrency
+#
 
-[store_type_location_strategy]
-# The scheme list to use to get store preference order. The scheme must be
-# registered by one of the stores defined by the 'known_stores' config option.
-# This option will be applied when you using 'store_type' option as image
-# location strategy defined by the 'location_strategy' config option.
-#store_type_preference =
-
-[profiler]
-# If False fully disable profiling feature.
-#enabled = False
-
-# If False doesn't trace SQL requests.
-#trace_sqlalchemy = False
+# Enable the experimental use of thread pooling for all DB API calls
+# (boolean value)
+# Deprecated group/name - [DEFAULT]/dbapi_use_tpool
+#use_tpool = false
 
-[task]
-# ================= Glance Tasks Options ============================
-
-# Specifies how long (in hours) a task is supposed to live in the tasks DB
-# after succeeding or failing before getting soft-deleted.
-# The default value for task_time_to_live is 48 hours.
-# task_time_to_live = 48
-
-# Specifies which task executor to be used to run the task scripts.
-# The default value for task_executor is eventlet.
-# task_executor = eventlet
-
-# Specifies the maximum number of eventlet threads which can be spun up by
-# the eventlet based task executor to perform execution of Glance tasks.
-# eventlet_executor_pool_size = 1000
 
 [glance_store]
-# List of which store classes and store class locations are
-# currently known to glance at startup.
-# Existing but disabled stores:
-#      glance.store.rbd.Store,
-#      glance.store.s3.Store,
-#      glance.store.swift.Store,
-#      glance.store.sheepdog.Store,
-#      glance.store.cinder.Store,
-#      glance.store.gridfs.Store,
-#      glance.store.vmware_datastore.Store,
-#stores = glance.store.filesystem.Store,
-#         glance.store.http.Store
 
-# ============ Filesystem Store Options ========================
-
-# Directory that the Filesystem backend store
-# writes image data to
-filesystem_store_datadir = /var/lib/glance/images/
+#
+# From glance.store
+#
 
-# A list of directories where image data can be stored.
-# This option may be specified multiple times for specifying multiple store
-# directories. Either one of filesystem_store_datadirs or
-# filesystem_store_datadir option is required. A priority number may be given
-# after each directory entry, separated by a ":".
-# When adding an image, the highest priority directory will be selected, unless
-# there is not enough space available in cases where the image size is already
-# known. If no priority is given, it is assumed to be zero and the directory
-# will be considered for selection last. If multiple directories have the same
-# priority, then the one with the most free space available is selected.
-# If same store is specified multiple times then BadStoreConfiguration
-# exception will be raised.
-#filesystem_store_datadirs = /var/lib/glance/images/:1
+# List of stores enabled (list value)
+#stores = file,http
 
-# A path to a JSON file that contains metadata describing the storage
-# system.  When show_multiple_locations is True the information in this
-# file will be returned with any location that is contained in this
-# store.
-#filesystem_store_metadata_file = None
-
-# ============ Swift Store Options =============================
+# Default scheme to use to store image data. The scheme must be
+# registered by one of the stores defined by the 'stores' config
+# option. (string value)
+#default_store = file
 
-# Version of the authentication service to use
-# Valid versions are '2' for keystone and '1' for swauth and rackspace
-swift_store_auth_version = 2
-
-# Address where the Swift authentication service lives
-# Valid schemes are 'http://' and 'https://'
-# If no scheme specified,  default to 'https://'
-# For swauth, use something like '127.0.0.1:8080/v1.0/'
-swift_store_auth_address = 127.0.0.1:5000/v2.0/
-
-# User to authenticate against the Swift authentication service
-# If you use Swift authentication service, set it to 'account':'user'
-# where 'account' is a Swift storage account and 'user'
-# is a user in that account
-swift_store_user = jdoe:jdoe
-
-# Auth key for the user authenticating against the
-# Swift authentication service
-swift_store_key = a86850deb2742ec3cb41518e26aa2d89
+# Minimum interval seconds to execute updating dynamic storage
+# capabilities based on backend status then. It's not a periodic
+# routine, the update logic will be executed only when interval
+# seconds elapsed and an operation of store has triggered. The feature
+# will be enabled only when the option value greater then zero.
+# (integer value)
+#store_capabilities_update_min_interval = 0
 
-# Container within the account that the account should use
-# for storing images in Swift
-swift_store_container = glance
-
-# Do we create the container if it does not exist?
-swift_store_create_container_on_put = False
+#
+# From glance.store
+#
 
-# What size, in MB, should Glance start chunking image files
-# and do a large object manifest in Swift? By default, this is
-# the maximum object size in Swift, which is 5GB
-swift_store_large_object_size = 5120
+# Images will be chunked into objects of this size (in megabytes). For
+# best performance, this should be a power of two. (integer value)
+#sheepdog_store_chunk_size = 64
 
-# swift_store_config_file = glance-swift.conf
-# This file contains references for each of the configured
-# Swift accounts/backing stores. If used, this option can prevent
-# credentials being stored in the database. Using Swift references
-# is disabled if this config is left blank.
+# Port of sheep daemon. (integer value)
+#sheepdog_store_port = 7000
 
-# The reference to the default Swift parameters to use for adding new images.
-# default_swift_reference = 'ref1'
+# IP address of sheep daemon. (string value)
+#sheepdog_store_address = localhost
 
-# When doing a large object manifest, what size, in MB, should
-# Glance write chunks to Swift? This amount of data is written
-# to a temporary disk buffer during the process of chunking
-# the image file, and the default is 200MB
-swift_store_large_object_chunk_size = 200
+# RADOS images will be chunked into objects of this size (in
+# megabytes). For best performance, this should be a power of two.
+# (integer value)
+#rbd_store_chunk_size = 8
 
-# Whether to use ServiceNET to communicate with the Swift storage servers.
-# (If you aren't RACKSPACE, leave this False!)
-#
-# To use ServiceNET for authentication, prefix hostname of
-# `swift_store_auth_address` with 'snet-'.
-# Ex. https://example.com/v1.0/ -> https://snet-example.com/v1.0/
-swift_enable_snet = False
-
-# If set to True enables multi-tenant storage mode which causes Glance images
-# to be stored in tenant specific Swift accounts.
-#swift_store_multi_tenant = False
+# RADOS pool in which images are stored. (string value)
+#rbd_store_pool = images
 
-# A list of swift ACL strings that will be applied as both read and
-# write ACLs to the containers created by Glance in multi-tenant
-# mode. This grants the specified tenants/users read and write access
-# to all newly created image objects. The standard swift ACL string
-# formats are allowed, including:
-# <tenant_id>:<username>
-# <tenant_name>:<username>
-# *:<username>
-# Multiple ACLs can be combined using a comma separated list, for
-# example: swift_store_admin_tenants = service:glance,*:admin
-#swift_store_admin_tenants =
+# RADOS user to authenticate as (only applicable if using Cephx. If
+# <None>, a default will be chosen based on the client. section in
+# rbd_store_ceph_conf) (string value)
+#rbd_store_user = <None>
 
-# The region of the swift endpoint to be used for single tenant. This setting
-# is only necessary if the tenant has multiple swift endpoints.
-#swift_store_region =
-
-# If set to False, disables SSL layer compression of https swift requests.
-# Setting to 'False' may improve performance for images which are already
-# in a compressed format, eg qcow2. If set to True, enables SSL layer
-# compression (provided it is supported by the target swift proxy).
-#swift_store_ssl_compression = True
+# Ceph configuration file path. If <None>, librados will locate the
+# default config. If using cephx authentication, this file should
+# include a reference to the right keyring in a client.<USER> section
+# (string value)
+#rbd_store_ceph_conf = /etc/ceph/ceph.conf
 
-# The number of times a Swift download will be retried before the
-# request fails
-#swift_store_retry_get_count = 0
+# The host where the S3 server is listening. (string value)
+#s3_store_host = <None>
 
-# Bypass SSL verification for Swift
-#swift_store_auth_insecure = False
-
-# ============ S3 Store Options =============================
+# The S3 query token access key. (string value)
+#s3_store_access_key = <None>
 
-# Address where the S3 authentication service lives
-# Valid schemes are 'http://' and 'https://'
-# If no scheme specified,  default to 'http://'
-s3_store_host = 127.0.0.1:8080/v1.0/
+# The S3 query token secret key. (string value)
+#s3_store_secret_key = <None>
 
-# User to authenticate against the S3 authentication service
-s3_store_access_key = <20-char AWS access key>
-
-# Auth key for the user authenticating against the
-# S3 authentication service
-s3_store_secret_key = <40-char AWS secret key>
+# The S3 bucket to be used to store the Glance data. (string value)
+#s3_store_bucket = <None>
 
-# Container within the account that the account should use
-# for storing images in S3. Note that S3 has a flat namespace,
-# so you need a unique bucket name for your glance images. An
-# easy way to do this is append your AWS access key to "glance".
-# S3 buckets in AWS *must* be lowercased, so remember to lowercase
-# your AWS access key if you use it in your bucket name below!
-s3_store_bucket = <lowercased 20-char aws access key>glance
+# The local directory where uploads will be staged before they are
+# transferred into S3. (string value)
+#s3_store_object_buffer_dir = <None>
 
-# Do we create the bucket if it does not exist?
-s3_store_create_bucket_on_put = False
+# A boolean to determine if the S3 bucket should be created on upload
+# if it does not exist or if an error should be returned to the user.
+# (boolean value)
+#s3_store_create_bucket_on_put = false
 
-# When sending images to S3, the data will first be written to a
-# temporary buffer on disk. By default the platform's temporary directory
-# will be used. If required, an alternative directory can be specified here.
-#s3_store_object_buffer_dir = /path/to/dir
-
-# When forming a bucket url, boto will either set the bucket name as the
-# subdomain or as the first token of the path. Amazon's S3 service will
-# accept it as the subdomain, but Swift's S3 middleware requires it be
-# in the path. Set this to 'path' or 'subdomain' - defaults to 'subdomain'.
+# The S3 calling format used to determine the bucket. Either subdomain
+# or path can be used. (string value)
 #s3_store_bucket_url_format = subdomain
 
-# Size, in MB, should S3 start chunking image files
-# and do a multipart upload in S3. The default is 100MB.
+# What size, in MB, should S3 start chunking image files and do a
+# multipart upload in S3. (integer value)
 #s3_store_large_object_size = 100
 
-# Multipart upload part size, in MB, should S3 use when uploading
-# parts. The size must be greater than or equal to
-# 5MB. The default is 10MB.
+# What multipart upload part size, in MB, should S3 use when uploading
+# parts. The size must be greater than or equal to 5M. (integer value)
 #s3_store_large_object_chunk_size = 10
 
-# The number of thread pools to perform a multipart upload
-# in S3. The default is 10.
+# The number of thread pools to perform a multipart upload in S3.
+# (integer value)
 #s3_store_thread_pools = 10
 
-# ============ RBD Store Options =============================
-
-# Ceph configuration file path
-# If using cephx authentication, this file should
-# include a reference to the right keyring
-# in a client.<USER> section
-#rbd_store_ceph_conf = /etc/ceph/ceph.conf
-
-# RADOS user to authenticate as (only applicable if using cephx)
-# If <None>, a default will be chosen based on the client. section
-# in rbd_store_ceph_conf
-#rbd_store_user = <None>
-
-# RADOS pool in which images are stored
-#rbd_store_pool = images
+# Hostname or IP address of the instance to connect to, or a mongodb
+# URI, or a list of hostnames / mongodb URIs. If host is an IPv6
+# literal it must be enclosed in '[' and ']' characters following the
+# RFC2732 URL syntax (e.g. '[::1]' for localhost) (string value)
+#mongodb_store_uri = <None>
 
-# RADOS images will be chunked into objects of this size (in megabytes).
-# For best performance, this should be a power of two
-#rbd_store_chunk_size = 8
-
-# ============ Sheepdog Store Options =============================
-
-sheepdog_store_address = localhost
+# Database to use (string value)
+#mongodb_store_db = <None>
 
-sheepdog_store_port = 7000
-
-# Images will be chunked into objects of this size (in megabytes).
-# For best performance, this should be a power of two
-sheepdog_store_chunk_size = 64
-
-# ============ Cinder Store Options ===============================
-
-# Info to match when looking for cinder in the service catalog
-# Format is : separated values of the form:
+# 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)
 #cinder_catalog_info = volume:cinder:publicURL
 
@@ -655,7 +707,7 @@
 # Region name of this node (string value)
 #os_region_name = <None>
 
-# Location of ca certicates file to use for cinder client requests
+# Location of ca certicates file to use for cinder client requests.
 # (string value)
 #cinder_ca_certificates_file = <None>
 
@@ -663,40 +715,766 @@
 #cinder_http_retries = 3
 
 # Allow to perform insecure SSL requests to cinder (boolean value)
-#cinder_api_insecure = False
+#cinder_api_insecure = false
+
+# Directory to which the Filesystem backend store writes images.
+# (string value)
+filesystem_store_datadir = /var/lib/glance/images/
+
+# List of directories and its priorities to which the Filesystem
+# backend store writes images. (multi valued)
+#filesystem_store_datadirs =
+
+# The path to a file which contains the metadata to be returned with
+# any location associated with this store.  The file must contain a
+# valid JSON object. The object should contain the keys 'id' and
+# 'mountpoint'. The value for both keys should be 'string'. (string
+# value)
+#filesystem_store_metadata_file = <None>
+
+# The required permission for created image file. In this way the user
+# other service used, e.g. Nova, who consumes the image could be the
+# exclusive member of the group that owns the files created. Assigning
+# it less then or equal to zero means don't change the default
+# permission of the file. This value will be decoded as an octal
+# digit. (integer value)
+#filesystem_store_file_perm = 0
+
+# Version of the authentication service to use. Valid versions are 2
+# for keystone and 1 for swauth and rackspace. (deprecated) (string
+# value)
+#swift_store_auth_version = 2
 
-# ============ VMware Datastore Store Options =====================
+# If True, swiftclient won't check for a valid SSL certificate when
+# authenticating. (boolean value)
+#swift_store_auth_insecure = false
+
+# A string giving the CA certificate file to use in SSL connections
+# for verifying certs. (string value)
+#swift_store_cacert = <None>
+
+# The region of the swift endpoint to be used for single tenant. This
+# setting is only necessary if the tenant has multiple swift
+# endpoints. (string value)
+#swift_store_region = <None>
+
+# If set, the configured endpoint will be used. If None, the storage
+# url from the auth response will be used. (string value)
+#swift_store_endpoint = <None>
+
+# A string giving the endpoint type of the swift service to use
+# (publicURL, adminURL or internalURL). This setting is only used if
+# swift_store_auth_version is 2. (string value)
+#swift_store_endpoint_type = publicURL
+
+# A string giving the service type of the swift service to use. This
+# setting is only used if swift_store_auth_version is 2. (string
+# value)
+#swift_store_service_type = object-store
+
+# Container within the account that the account should use for storing
+# images in Swift when using single container mode. In multiple
+# container mode, this will be the prefix for all containers. (string
+# value)
+#swift_store_container = glance
 
-# ESX/ESXi or vCenter Server target system.
-# The server value can be an IP address or a DNS name
-# e.g. 127.0.0.1, 127.0.0.1:443, www.vmware-infra.com
+# The size, in MB, that Glance will start chunking image files and do
+# a large object manifest in Swift. (integer value)
+#swift_store_large_object_size = 5120
+
+# The amount of data written to a temporary disk buffer during the
+# process of chunking the image file. (integer value)
+#swift_store_large_object_chunk_size = 200
+
+# A boolean value that determines if we create the container if it
+# does not exist. (boolean value)
+#swift_store_create_container_on_put = false
+
+# If set to True, enables multi-tenant storage mode which causes
+# Glance images to be stored in tenant specific Swift accounts.
+# (boolean value)
+#swift_store_multi_tenant = false
+
+# When set to 0, a single-tenant store will only use one container to
+# store all images. When set to an integer value between 1 and 32, a
+# single-tenant store will use multiple containers to store images,
+# and this value will determine how many containers are created.Used
+# only when swift_store_multi_tenant is disabled. The total number of
+# containers that will be used is equal to 16^N, so if this config
+# option is set to 2, then 16^2=256 containers will be used to store
+# images. (integer value)
+#swift_store_multiple_containers_seed = 0
+
+# A list of tenants that will be granted read/write access on all
+# Swift containers created by Glance in multi-tenant mode. (list
+# value)
+#swift_store_admin_tenants =
+
+# If set to False, disables SSL layer compression of https swift
+# requests. Setting to False may improve performance for images which
+# are already in a compressed format, eg qcow2. (boolean value)
+#swift_store_ssl_compression = true
+
+# The number of times a Swift download will be retried before the
+# request fails. (integer value)
+#swift_store_retry_get_count = 0
+
+# The reference to the default swift account/backing store parameters
+# to use for adding new images. (string value)
+#default_swift_reference = ref1
+
+# The address where the Swift authentication service is
+# listening.(deprecated) (string value)
+#swift_store_auth_address = <None>
+
+# The user to authenticate against the Swift authentication service
+# (deprecated) (string value)
+#swift_store_user = <None>
+
+# Auth key for the user authenticating against the Swift
+# authentication service. (deprecated) (string value)
+#swift_store_key = <None>
+
+# The config file that has the swift account(s)configs. (string value)
+#swift_store_config_file = <None>
+
+# ESX/ESXi or vCenter Server target system. The server value can be an
+# IP address or a DNS name. (string value)
 #vmware_server_host = <None>
 
-# Server username (string value)
+# Username for authenticating with VMware ESX/VC server. (string
+# value)
 #vmware_server_username = <None>
 
-# Server password (string value)
+# Password for authenticating with VMware ESX/VC server. (string
+# value)
 #vmware_server_password = <None>
 
-# Inventory path to a datacenter (string value)
-# Value optional when vmware_server_ip is an ESX/ESXi host: if specified
-# should be `ha-datacenter`.
-#vmware_datacenter_path = <None>
+# DEPRECATED. Inventory path to a datacenter. If the
+# vmware_server_host specified is an ESX/ESXi, the
+# vmware_datacenter_path is optional. If specified, it should be "ha-
+# datacenter". This option is deprecated in favor of vmware_datastores
+# and will be removed in the Liberty release. (string value)
+#vmware_datacenter_path = ha-datacenter
 
-# Datastore associated with the datacenter (string value)
+# DEPRECATED. Datastore associated with the datacenter. This option is
+# deprecated in favor of vmware_datastores and will be removed in the
+# Liberty release. (string value)
 #vmware_datastore_name = <None>
 
-# The number of times we retry on failures
-# e.g., socket error, etc (integer value)
+# Number of times VMware ESX/VC server API must be retried upon
+# connection related issues. (integer value)
 #vmware_api_retry_count = 10
 
-# The interval used for polling remote tasks
-# invoked on VMware ESX/VC server in seconds (integer value)
+# The interval used for polling remote tasks invoked on VMware ESX/VC
+# server. (integer value)
 #vmware_task_poll_interval = 5
 
-# Absolute path of the folder containing the images in the datastore
-# (string value)
+# The name of the directory where the glance images will be stored in
+# the VMware datastore. (string value)
 #vmware_store_image_dir = /openstack_glance
 
-# Allow to perform insecure SSL requests to the target system (boolean value)
-#vmware_api_insecure = False
+# Allow to perform insecure SSL requests to ESX/VC. (boolean value)
+#vmware_api_insecure = false
+
+# A list of datastores where the image can be stored. This option may
+# be specified multiple times for specifying multiple datastores.
+# Either one of vmware_datastore_name or vmware_datastores is
+# required. The datastore name should be specified after its
+# datacenter path, seperated by ":". An optional weight may be given
+# after the datastore name, seperated again by ":". Thus, the required
+# format becomes <datacenter_path>:<datastore_name>:<optional_weight>.
+# When adding an image, the datastore with highest weight will be
+# selected, unless there is not enough free space available in cases
+# where the image size is already known. If no weight is given, it is
+# assumed to be zero and the directory will be considered for
+# selection last. If multiple datastores have the same weight, then
+# the one with the most free space available is selected. (multi
+# valued)
+#vmware_datastores =
+
+
+[image_format]
+
+#
+# From glance.api
+#
+
+# Supported values for the 'container_format' image attribute (list
+# value)
+# Deprecated group/name - [DEFAULT]/container_formats
+#container_formats = ami,ari,aki,bare,ovf,ova,uar
+
+# Supported values for the 'disk_format' image attribute (list value)
+# Deprecated group/name - [DEFAULT]/disk_formats
+#disk_formats = ami,ari,aki,vhd,vmdk,raw,qcow2,vdi,iso,zfs
+
+
+[keystone_authtoken]
+
+#
+# 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 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
+
+# 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>
+
+# Verify HTTPS connections. (boolean value)
+#insecure = false
+
+# Directory used to cache files related to PKI tokens. (string value)
+signing_dir = /var/lib/glance/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 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/ (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>
+
+# Service username. (string value)
+admin_user = %SERVICE_USER%
+
+# Service user password. (string value)
+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>
+
+
+[matchmaker_redis]
+
+#
+# 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
+
+# Password for Redis server (optional). (string value)
+#password = <None>
+
+
+[matchmaker_ring]
+
+#
+# From oslo.messaging
+#
+
+# Matchmaker ring file (JSON). (string value)
+# Deprecated group/name - [DEFAULT]/matchmaker_ringfile
+#ringfile = /etc/oslo/matchmaker_ring.json
+
+
+[oslo_concurrency]
+
+#
+# From oslo.concurrency
+#
+
+# Enables or disables inter-process locks. (boolean value)
+# Deprecated group/name - [DEFAULT]/disable_process_locking
+#disable_process_locking = false
+
+# Directory to use for lock files.  For security, the 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 = <None>
+
+
+[oslo_messaging_amqp]
+
+#
+# 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)
+# 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)
+# Deprecated group/name - [amqp1]/trace
+#trace = false
+
+# CA certificate PEM file for verifing 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)
+# Deprecated group/name - [amqp1]/allow_insecure_clients
+#allow_insecure_clients = false
+
+
+[oslo_messaging_qpid]
+
+#
+# From 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)
+# Deprecated group/name - [DEFAULT]/amqp_auto_delete
+#amqp_auto_delete = false
+
+# Size of RPC connection pool. (integer value)
+# Deprecated group/name - [DEFAULT]/rpc_conn_pool_size
+#rpc_conn_pool_size = 30
+
+# Qpid broker hostname. (string value)
+# Deprecated group/name - [DEFAULT]/qpid_hostname
+#qpid_hostname = localhost
+
+# Qpid broker port. (integer value)
+# Deprecated group/name - [DEFAULT]/qpid_port
+#qpid_port = 5672
+
+# Qpid HA cluster host:port pairs. (list value)
+# Deprecated group/name - [DEFAULT]/qpid_hosts
+#qpid_hosts = $qpid_hostname:$qpid_port
+
+# Username for Qpid connection. (string value)
+# Deprecated group/name - [DEFAULT]/qpid_username
+#qpid_username =
+
+# Password for Qpid connection. (string value)
+# Deprecated group/name - [DEFAULT]/qpid_password
+#qpid_password =
+
+# Space separated list of SASL mechanisms to use for auth. (string
+# value)
+# Deprecated group/name - [DEFAULT]/qpid_sasl_mechanisms
+#qpid_sasl_mechanisms =
+
+# Seconds between connection keepalive heartbeats. (integer value)
+# Deprecated group/name - [DEFAULT]/qpid_heartbeat
+#qpid_heartbeat = 60
+
+# Transport to use, either 'tcp' or 'ssl'. (string value)
+# Deprecated group/name - [DEFAULT]/qpid_protocol
+#qpid_protocol = tcp
+
+# Whether to disable the Nagle algorithm. (boolean value)
+# Deprecated group/name - [DEFAULT]/qpid_tcp_nodelay
+#qpid_tcp_nodelay = true
+
+# The number of prefetched messages held by receiver. (integer value)
+# Deprecated group/name - [DEFAULT]/qpid_receiver_capacity
+#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)
+# Deprecated group/name - [DEFAULT]/qpid_topology_version
+#qpid_topology_version = 1
+
+
+[oslo_messaging_rabbit]
+
+#
+# From 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)
+# Deprecated group/name - [DEFAULT]/amqp_auto_delete
+#amqp_auto_delete = false
+
+# Size of RPC connection pool. (integer value)
+# Deprecated group/name - [DEFAULT]/rpc_conn_pool_size
+#rpc_conn_pool_size = 30
+
+# SSL version to use (valid only if SSL enabled). Valid values are
+# TLSv1 and SSLv23. SSLv2, SSLv3, TLSv1_1, and TLSv1_2 may be
+# available on some distributions. (string value)
+# Deprecated group/name - [DEFAULT]/kombu_ssl_version
+#kombu_ssl_version =
+
+# SSL key file (valid only if SSL enabled). (string value)
+# Deprecated group/name - [DEFAULT]/kombu_ssl_keyfile
+#kombu_ssl_keyfile =
+
+# SSL cert file (valid only if SSL enabled). (string value)
+# Deprecated group/name - [DEFAULT]/kombu_ssl_certfile
+#kombu_ssl_certfile =
+
+# SSL certification authority file (valid only if SSL enabled).
+# (string value)
+# Deprecated group/name - [DEFAULT]/kombu_ssl_ca_certs
+#kombu_ssl_ca_certs =
+
+# How long to wait before reconnecting in response to an AMQP consumer
+# cancel notification. (floating point value)
+# Deprecated group/name - [DEFAULT]/kombu_reconnect_delay
+#kombu_reconnect_delay = 1.0
+
+# The RabbitMQ broker address where a single node is used. (string
+# value)
+# Deprecated group/name - [DEFAULT]/rabbit_host
+#rabbit_host = localhost
+
+# The RabbitMQ broker port where a single node is used. (integer
+# value)
+# Deprecated group/name - [DEFAULT]/rabbit_port
+#rabbit_port = 5672
+
+# RabbitMQ HA cluster host:port pairs. (list value)
+# Deprecated group/name - [DEFAULT]/rabbit_hosts
+#rabbit_hosts = $rabbit_host:$rabbit_port
+
+# Connect over SSL for RabbitMQ. (boolean value)
+# Deprecated group/name - [DEFAULT]/rabbit_use_ssl
+#rabbit_use_ssl = false
+
+# The RabbitMQ userid. (string value)
+# Deprecated group/name - [DEFAULT]/rabbit_userid
+#rabbit_userid = guest
+
+# The RabbitMQ password. (string value)
+# Deprecated group/name - [DEFAULT]/rabbit_password
+#rabbit_password = guest
+
+# The RabbitMQ login method. (string value)
+# Deprecated group/name - [DEFAULT]/rabbit_login_method
+#rabbit_login_method = AMQPLAIN
+
+# The RabbitMQ virtual host. (string value)
+# Deprecated group/name - [DEFAULT]/rabbit_virtual_host
+#rabbit_virtual_host = /
+
+# How frequently to retry connecting with RabbitMQ. (integer 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 number of RabbitMQ connection retries. Default is 0
+# (infinite retry count). (integer value)
+# Deprecated group/name - [DEFAULT]/rabbit_max_retries
+#rabbit_max_retries = 0
+
+# Use HA queues in RabbitMQ (x-ha-policy: all). If you change this
+# option, you must wipe the RabbitMQ database. (boolean value)
+# Deprecated group/name - [DEFAULT]/rabbit_ha_queues
+#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)
+# Deprecated group/name - [DEFAULT]/fake_rabbit
+#fake_rabbit = false
+
+
+[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
+
+
+[paste_deploy]
+
+#
+# From glance.api
+#
+
+# Partial name of a pipeline in your paste configuration file with the
+# service name removed. For example, if your paste section name is
+# [pipeline:glance-api-keystone] use the value "keystone" (string
+# value)
+flavor = keystone
+
+# Name of the paste configuration file. (string value)
+#config_file = <None>
+
+
+[profiler]
+
+#
+# From glance.api
+#
+
+# If False fully disable profiling feature. (boolean value)
+#enabled = false
+
+# If False doesn't trace SQL requests. (boolean value)
+#trace_sqlalchemy = false
+
+
+[store_type_location_strategy]
+
+#
+# From glance.api
+#
+
+# The store names to use to get store preference order. The name must
+# be registered by one of the stores defined by the 'stores' config
+# option. This option will be applied when you using 'store_type'
+# option as image location strategy defined by the 'location_strategy'
+# config option. (list value)
+#store_type_preference =
+
+
+[task]
+
+#
+# From glance.api
+#
+
+# Time in hours for which a task lives after, either succeeding or
+# failing (integer value)
+# Deprecated group/name - [DEFAULT]/task_time_to_live
+#task_time_to_live = 48
+
+# Specifies which task executor to be used to run the task scripts.
+# (string value)
+#task_executor = taskflow
+
+# Work dir for asynchronous task operations. The directory set here
+# will be used to operate over images - normally before they are
+# imported in the destination store. When providing work dir, make
+# sure enough space is provided for concurrent tasks to run
+# efficiently without running out of space. A rough estimation can be
+# done by multiplying the number of `max_workers` - or the N of
+# workers running - by an average image size (e.g 500MB). The image
+# size estimation should be done based on the average size in your
+# deployment. Note that depending on the tasks running you may need to
+# multiply this number by some factor depending on what the task does.
+# For example, you may want to double the available size if image
+# conversion is enabled. All this being said, remember these are just
+# estimations and you should do them based on the worst case scenario
+# and be prepared to act in case they were wrong. (string value)
+#work_dir = <None>
+
+
+[taskflow_executor]
+
+#
+# From glance.api
+#
+
+# The mode in which the engine will run. Can be 'serial' or
+# 'parallel'. (string value)
+# Allowed values: serial, parallel
+#engine_mode = parallel
+
+# The number of parallel activities executed at the same time by the
+# engine. The value can be greater than one when the engine mode is
+# 'parallel'. (integer value)
+# Deprecated group/name - [task]/eventlet_executor_pool_size
+#max_workers = 10
--- a/components/openstack/glance/files/glance-cache.conf	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/glance/files/glance-cache.conf	Fri Feb 05 17:54:17 2016 -0500
@@ -1,200 +1,268 @@
 [DEFAULT]
-# Show more verbose log output (sets INFO log level output)
-#verbose = False
+
+#
+# From glance.cache
+#
+
+# Whether to allow users to specify image properties beyond what the
+# image schema provides (boolean value)
+#allow_additional_image_properties = true
+
+# Maximum number of image members per image. Negative values evaluate
+# to unlimited. (integer value)
+#image_member_quota = 128
 
-# Show debugging output in logs (sets DEBUG log level output)
-#debug = False
+# Maximum number of properties allowed on an image. Negative values
+# evaluate to unlimited. (integer value)
+#image_property_quota = 128
+
+# Maximum number of tags allowed on an image. Negative values evaluate
+# to unlimited. (integer value)
+#image_tag_quota = 128
+
+# Maximum number of locations allowed on an image. Negative values
+# evaluate to unlimited. (integer value)
+#image_location_quota = 10
+
+# Python module path of data access API (string value)
+#data_api = glance.db.sqlalchemy.api
+
+# Default value for the number of items returned by a request if not
+# specified explicitly in the request (integer value)
+#limit_param_default = 25
 
-# Log to this file. Make sure you do not set the same log file for both the API
-# and registry servers!
-#
-# If `log_file` is omitted and `use_syslog` is false, then log messages are
-# sent to stdout as a fallback.
-log_file = /var/log/glance/image-cache.log
+# Maximum permissible number of items that could be returned by a
+# request (integer value)
+#api_limit_max = 1000
+
+# Whether to include the backend image storage location in image
+# properties. Revealing storage location can be a security risk, so
+# use this setting with caution! (boolean value)
+#show_image_direct_url = false
+
+# Whether to include the backend image locations in image properties.
+# For example, if using the file system store a URL of
+# "file:///path/to/image" will be returned to the user in the
+# 'direct_url' meta-data field. Revealing storage location can be a
+# security risk, so use this setting with caution!  The overrides
+# show_image_direct_url. (boolean value)
+#show_multiple_locations = false
 
-# Send logs to syslog (/dev/log) instead of to file specified by `log_file`
-#use_syslog = False
+# Maximum size of image a user can upload in bytes. Defaults to
+# 1099511627776 bytes (1 TB).WARNING: this value should only be
+# increased after careful consideration and must be set to a value
+# under 8 EB (9223372036854775808). (integer value)
+#image_size_cap = 1099511627776
+
+# Set a system wide quota for every user. This value is the total
+# capacity that a user can use across all storage systems. A value of
+# 0 means unlimited.Optional unit can be specified for the value.
+# Accepted units are B, KB, MB, GB and TB representing Bytes,
+# KiloBytes, MegaBytes, GigaBytes and TeraBytes respectively. If no
+# unit is specified then Bytes is assumed. Note that there should not
+# be any space between value and unit and units are case sensitive.
+# (string value)
+#user_storage_quota = 0
+
+# Deploy the v1 OpenStack Images API. (boolean value)
+#enable_v1_api = true
 
-# Directory that the Image Cache writes data to
-image_cache_dir = /var/lib/glance/image-cache/
+# Deploy the v2 OpenStack Images API. (boolean value)
+#enable_v2_api = true
+
+# Deploy the v1 OpenStack Registry API. (boolean value)
+#enable_v1_registry = true
+
+# Deploy the v2 OpenStack Registry API. (boolean value)
+#enable_v2_registry = true
+
+# The hostname/IP of the pydev process listening for debug connections
+# (string value)
+#pydev_worker_debug_host = <None>
+
+# The port on which a pydev process is listening for connections.
+# (integer value)
+#pydev_worker_debug_port = 5678
 
-# Number of seconds after which we should consider an incomplete image to be
-# stalled and eligible for reaping
-image_cache_stall_time = 86400
+# AES key for encrypting store 'location' metadata. This includes, if
+# used, Swift or S3 credentials. Should be set to a random string of
+# length 16, 24 or 32 bytes (string value)
+#metadata_encryption_key = <None>
 
-# Max cache size in bytes
-image_cache_max_size = 10737418240
+# Digest algorithm which will be used for digital signature; the
+# default is sha1 the default in Kilo for a smooth upgrade process,
+# and it will be updated with sha256 in next release(L). Use the
+# command "openssl list-message-digest-algorithms" to get the
+# available algorithms supported by the version of OpenSSL on the
+# platform. Examples are "sha1", "sha256", "sha512", etc. (string
+# value)
+#digest_algorithm = sha1
+
+# The path to the sqlite file database that will be used for image
+# cache management. (string value)
+#image_cache_sqlite_db = cache.db
 
-# Address to find the registry server
-registry_host = 0.0.0.0
+# The driver to use for image cache management. (string value)
+#image_cache_driver = sqlite
+
+# The upper limit (the maximum size of accumulated cache in bytes)
+# beyond which pruner, if running, starts cleaning the images cache.
+# (integer value)
+#image_cache_max_size = 10737418240
+
+# The amount of time to let an image remain in the cache without being
+# accessed. (integer value)
+#image_cache_stall_time = 86400
+
+# Base directory that the Image Cache uses. (string value)
+#image_cache_dir = <None>
 
-# Port the registry server is listening on
-registry_port = 9191
+# Address to find the registry server. (string value)
+#registry_host = 0.0.0.0
+
+# Port the registry server is listening on. (integer value)
+#registry_port = 9191
 
-# Auth settings if using Keystone
-auth_url = http://127.0.0.1:5000/v2.0/
-admin_tenant_name = %SERVICE_TENANT_NAME%
+# Whether to pass through the user token when making requests to the
+# registry. (boolean value)
+# WARNING: DO NOT CHANGE THIS VALUE.  Setting use_user_token to False
+# allows for unintended privilege escalation within the Glance API server.
+# See https://wiki.openstack.org/wiki/OSSN/OSSN-0060
+#use_user_token = true
+
+# The administrators user name. If "use_user_token" is not in effect,
+# then admin credentials can be specified. (string value)
 admin_user = %SERVICE_USER%
+
+# The administrators password. If "use_user_token" is not in effect,
+# then admin credentials can be specified. (string value)
 admin_password = %SERVICE_PASSWORD%
 
-# List of which store classes and store class locations are
-# currently known to glance at startup.
-# known_stores = glance.store.filesystem.Store,
-#                glance.store.http.Store,
-#                glance.store.rbd.Store,
-#                glance.store.s3.Store,
-#                glance.store.swift.Store,
-#                glance.store.sheepdog.Store,
-#                glance.store.cinder.Store,
-#                glance.store.vmware_datastore.Store,
+# The tenant name of the administrative user. If "use_user_token" is
+# not in effect, then admin tenant name can be specified. (string
+# value)
+admin_tenant_name = %SERVICE_TENANT_NAME%
 
-# ============ Filesystem Store Options ========================
+# The URL to the keystone service. If "use_user_token" is not in
+# effect and using keystone auth, then URL of keystone can be
+# specified. (string value)
+auth_url = http://127.0.0.1:5000/v2.0/
 
-# Directory that the Filesystem backend store
-# writes image data to
-filesystem_store_datadir = /var/lib/glance/images/
-
-# ============ Swift Store Options =============================
+# The strategy to use for authentication. If "use_user_token" is not
+# in effect, then auth strategy can be specified. (string value)
+#auth_strategy = noauth
 
-# Version of the authentication service to use
-# Valid versions are '2' for keystone and '1' for swauth and rackspace
-swift_store_auth_version = 2
-
-# Address where the Swift authentication service lives
-# Valid schemes are 'http://' and 'https://'
-# If no scheme specified,  default to 'https://'
-# For swauth, use something like '127.0.0.1:8080/v1.0/'
-swift_store_auth_address = 127.0.0.1:5000/v2.0/
+# The region for the authentication service. If "use_user_token" is
+# not in effect and using keystone auth, then region name can be
+# specified. (string value)
+#auth_region = <None>
 
-# User to authenticate against the Swift authentication service
-# If you use Swift authentication service, set it to 'account':'user'
-# where 'account' is a Swift storage account and 'user'
-# is a user in that account
-swift_store_user = jdoe:jdoe
+#
+# From oslo.log
+#
 
-# Auth key for the user authenticating against the
-# Swift authentication service
-swift_store_key = a86850deb2742ec3cb41518e26aa2d89
+# 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
 
-# Container within the account that the account should use
-# for storing images in Swift
-swift_store_container = glance
-
-# Do we create the container if it does not exist?
-swift_store_create_container_on_put = 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>
 
-# What size, in MB, should Glance start chunking image files
-# and do a large object manifest in Swift? By default, this is
-# the maximum object size in Swift, which is 5GB
-swift_store_large_object_size = 5120
-
-# When doing a large object manifest, what size, in MB, should
-# Glance write chunks to Swift? This amount of data is written
-# to a temporary disk buffer during the process of chunking
-# the image file, and the default is 200MB
-swift_store_large_object_chunk_size = 200
+# 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>
 
-# Whether to use ServiceNET to communicate with the Swift storage servers.
-# (If you aren't RACKSPACE, leave this False!)
-#
-# To use ServiceNET for authentication, prefix hostname of
-# `swift_store_auth_address` with 'snet-'.
-# Ex. https://example.com/v1.0/ -> https://snet-example.com/v1.0/
-swift_enable_snet = False
+# Format string for %%(asctime)s in log records. Default: %(default)s
+# . (string value)
+#log_date_format = %Y-%m-%d %H:%M:%S
 
-# ============ S3 Store Options =============================
+# (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>
 
-# Address where the S3 authentication service lives
-# Valid schemes are 'http://' and 'https://'
-# If no scheme specified,  default to 'http://'
-s3_store_host = 127.0.0.1:8080/v1.0/
+# (Optional) The base directory used for relative --log-file paths.
+# (string value)
+# Deprecated group/name - [DEFAULT]/logdir
+#log_dir = <None>
 
-# User to authenticate against the S3 authentication service
-s3_store_access_key = <20-char AWS access key>
-
-# Auth key for the user authenticating against the
-# S3 authentication service
-s3_store_secret_key = <40-char AWS secret key>
+# Use syslog for logging. Existing syslog format is DEPRECATED during
+# I, and will change in J to honor RFC5424. (boolean value)
+#use_syslog = false
 
-# Container within the account that the account should use
-# for storing images in S3. Note that S3 has a flat namespace,
-# so you need a unique bucket name for your glance images. An
-# easy way to do this is append your AWS access key to "glance".
-# S3 buckets in AWS *must* be lowercased, so remember to lowercase
-# your AWS access key if you use it in your bucket name below!
-s3_store_bucket = <lowercased 20-char aws access key>glance
+# (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
 
-# Do we create the bucket if it does not exist?
-s3_store_create_bucket_on_put = False
+# Syslog facility to receive log lines. (string value)
+#syslog_log_facility = LOG_USER
 
-# When sending images to S3, the data will first be written to a
-# temporary buffer on disk. By default the platform's temporary directory
-# will be used. If required, an alternative directory can be specified here.
-# s3_store_object_buffer_dir = /path/to/dir
+# Log output to standard error. (boolean value)
+#use_stderr = true
 
-# ============ Cinder Store Options ===========================
+# 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
 
-# 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)
-#cinder_catalog_info = volume:cinder:publicURL
+# 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
 
-# Override service catalog lookup with template for cinder endpoint
-# e.g. http://localhost:8776/v1/%(project_id)s (string value)
-#cinder_endpoint_template = <None>
+# Data to append to log format when level is DEBUG. (string value)
+#logging_debug_format_suffix = %(funcName)s %(pathname)s:%(lineno)d
 
-# Region name of this node (string value)
-#os_region_name = <None>
+# 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
 
-# Location of ca certicates file to use for cinder client requests
-# (string value)
-#cinder_ca_certificates_file = <None>
+# 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
 
-# Number of cinderclient retries on failed http calls (integer value)
-#cinder_http_retries = 3
-
-# Allow to perform insecure SSL requests to cinder (boolean value)
-#cinder_api_insecure = False
+# Enables or disables publication of error events. (boolean value)
+#publish_errors = false
 
-# ============ VMware Datastore Store Options =====================
+# Enables or disables fatal status of deprecations. (boolean value)
+#fatal_deprecations = false
 
-# ESX/ESXi or vCenter Server target system.
-# The server value can be an IP address or a DNS name
-# e.g. 127.0.0.1, 127.0.0.1:443, www.vmware-infra.com
-#vmware_server_host = <None>
-
-# Server username (string value)
-#vmware_server_username = <None>
+# The format for an instance that is passed with the log message.
+# (string value)
+#instance_format = "[instance: %(uuid)s] "
 
-# Server password (string value)
-#vmware_server_password = <None>
+# The format for an instance UUID that is passed with the log message.
+# (string value)
+#instance_uuid_format = "[instance: %(uuid)s] "
 
-# Inventory path to a datacenter (string value)
-# Value optional when vmware_server_ip is an ESX/ESXi host: if specified
-# should be `ha-datacenter`.
-#vmware_datacenter_path = <None>
 
-# Datastore associated with the datacenter (string value)
-#vmware_datastore_name = <None>
+[oslo_policy]
 
-# The number of times we retry on failures
-# e.g., socket error, etc (integer value)
-#vmware_api_retry_count = 10
+#
+# From oslo.policy
+#
 
-# The interval used for polling remote tasks
-# invoked on VMware ESX/VC server in seconds (integer value)
-#vmware_task_poll_interval = 5
+# The JSON file that defines policies. (string value)
+# Deprecated group/name - [DEFAULT]/policy_file
+#policy_file = policy.json
 
-# Absolute path of the folder containing the images in the datastore
-# (string value)
-#vmware_store_image_dir = /openstack_glance
-
-# Allow to perform insecure SSL requests to the target system (boolean value)
-#vmware_api_insecure = False
+# Default rule. Enforced when a requested rule is not found. (string
+# value)
+# Deprecated group/name - [DEFAULT]/policy_default_rule
+#policy_default_rule = default
 
-# ================= Security Options ==========================
-
-# AES key for encrypting store 'location' metadata, including
-# -- if used -- Swift or S3 credentials
-# Should be set to a random string of length 16, 24 or 32 bytes
-# metadata_encryption_key = <16, 24 or 32 char registry metadata key>
+# 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/glance/files/glance-manage.conf	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,209 @@
+#
+# Options set in glance-manage.conf will override options of the same
+# section and name set in glance-registry.conf and glance-api.conf.
+# Similarly, options in glance-api.conf will override options set in
+# glance-registry.conf.
+#
+
+[DEFAULT]
+
+#
+# From 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] "
+
+
+[database]
+
+#
+# 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)
+# Deprecated group/name - [DEFAULT]/sql_connection
+# Deprecated group/name - [DATABASE]/sql_connection
+# Deprecated group/name - [sql]/connection
+#connection = mysql://%SERVICE_USER%:%SERVICE_PASSWORD%@localhost/glance
+
+# 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 = <None>
+
+# 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
--- a/components/openstack/glance/files/glance-registry.conf	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/glance/files/glance-registry.conf	Fri Feb 05 17:54:17 2016 -0500
@@ -1,246 +1,1220 @@
 [DEFAULT]
-# Show more verbose log output (sets INFO log level output)
-#verbose = False
-
-# Show debugging output in logs (sets DEBUG log level output)
-#debug = False
-
-# Address to bind the registry server
-bind_host = 0.0.0.0
 
-# Port the bind the registry server to
-bind_port = 9191
-
-# Log to this file. Make sure you do not set the same log file for both the API
-# and registry servers!
 #
-# If `log_file` is omitted and `use_syslog` is false, then log messages are
-# sent to stdout as a fallback.
-log_file = /var/log/glance/registry.log
-
-# Backlog requests when creating socket
-backlog = 4096
+# From glance.registry
+#
 
-# TCP_KEEPIDLE value in seconds when creating socket.
-# Not supported on OS X.
-#tcp_keepidle = 600
-
-# API to use for accessing data. Default value points to sqlalchemy
-# package.
-#data_api = glance.db.sqlalchemy.api
-
-# The number of child process workers that will be
-# created to service Registry requests. The default will be
-# equal to the number of CPUs available. (integer value)
-workers = 1
+# When true, this option sets the owner of an image to be the tenant.
+# Otherwise, the owner of the  image will be the authenticated user
+# issuing the request. (boolean value)
+#owner_is_tenant = true
 
-# Enable Registry API versions individually or simultaneously
-#enable_v1_registry = True
-#enable_v2_registry = True
-
-# Limit the api to return `param_limit_max` items in a call to a container. If
-# a larger `limit` query param is provided, it will be reduced to this value.
-api_limit_max = 1000
-
-# If a `limit` query param is not provided in an api request, it will
-# default to `limit_param_default`
-limit_param_default = 25
-
-# Role used to identify an authenticated user as administrator
+# Role used to identify an authenticated user as administrator.
+# (string value)
 #admin_role = admin
 
-# Whether to automatically create the database tables.
-# Default: False
-#db_auto_create = False
+# Allow unauthenticated users to access the API with read-only
+# privileges. This only applies when using ContextMiddleware. (boolean
+# value)
+#allow_anonymous_access = false
+
+# Whether to allow users to specify image properties beyond what the
+# image schema provides (boolean value)
+#allow_additional_image_properties = true
+
+# Maximum number of image members per image. Negative values evaluate
+# to unlimited. (integer value)
+#image_member_quota = 128
+
+# Maximum number of properties allowed on an image. Negative values
+# evaluate to unlimited. (integer value)
+#image_property_quota = 128
+
+# Maximum number of tags allowed on an image. Negative values evaluate
+# to unlimited. (integer value)
+#image_tag_quota = 128
+
+# Maximum number of locations allowed on an image. Negative values
+# evaluate to unlimited. (integer value)
+#image_location_quota = 10
+
+# Python module path of data access API (string value)
+#data_api = glance.db.sqlalchemy.api
+
+# Default value for the number of items returned by a request if not
+# specified explicitly in the request (integer value)
+#limit_param_default = 25
+
+# Maximum permissible number of items that could be returned by a
+# request (integer value)
+#api_limit_max = 1000
 
-# Enable DEBUG log messages from sqlalchemy which prints every database
-# query and response.
-# Default: False
-#sqlalchemy_debug = True
+# Whether to include the backend image storage location in image
+# properties. Revealing storage location can be a security risk, so
+# use this setting with caution! (boolean value)
+#show_image_direct_url = false
+
+# Whether to include the backend image locations in image properties.
+# For example, if using the file system store a URL of
+# "file:///path/to/image" will be returned to the user in the
+# 'direct_url' meta-data field. Revealing storage location can be a
+# security risk, so use this setting with caution!  The overrides
+# show_image_direct_url. (boolean value)
+#show_multiple_locations = false
+
+# Maximum size of image a user can upload in bytes. Defaults to
+# 1099511627776 bytes (1 TB).WARNING: this value should only be
+# increased after careful consideration and must be set to a value
+# under 8 EB (9223372036854775808). (integer value)
+#image_size_cap = 1099511627776
 
-# ================= Syslog Options ============================
+# Set a system wide quota for every user. This value is the total
+# capacity that a user can use across all storage systems. A value of
+# 0 means unlimited.Optional unit can be specified for the value.
+# Accepted units are B, KB, MB, GB and TB representing Bytes,
+# KiloBytes, MegaBytes, GigaBytes and TeraBytes respectively. If no
+# unit is specified then Bytes is assumed. Note that there should not
+# be any space between value and unit and units are case sensitive.
+# (string value)
+#user_storage_quota = 0
 
-# Send logs to syslog (/dev/log) instead of to file specified
-# by `log_file`
-#use_syslog = False
+# Deploy the v1 OpenStack Images API. (boolean value)
+#enable_v1_api = true
+
+# Deploy the v2 OpenStack Images API. (boolean value)
+#enable_v2_api = true
+
+# Deploy the v1 OpenStack Registry API. (boolean value)
+#enable_v1_registry = true
 
-# Facility to use. If unset defaults to LOG_USER.
-#syslog_log_facility = LOG_LOCAL1
+# Deploy the v2 OpenStack Registry API. (boolean value)
+#enable_v2_registry = true
+
+# The hostname/IP of the pydev process listening for debug connections
+# (string value)
+#pydev_worker_debug_host = <None>
+
+# The port on which a pydev process is listening for connections.
+# (integer value)
+#pydev_worker_debug_port = 5678
+
+# AES key for encrypting store 'location' metadata. This includes, if
+# used, Swift or S3 credentials. Should be set to a random string of
+# length 16, 24 or 32 bytes (string value)
+#metadata_encryption_key = <None>
 
-# ================= SSL Options ===============================
+# Digest algorithm which will be used for digital signature; the
+# default is sha1 the default in Kilo for a smooth upgrade process,
+# and it will be updated with sha256 in next release(L). Use the
+# command "openssl list-message-digest-algorithms" to get the
+# available algorithms supported by the version of OpenSSL on the
+# platform. Examples are "sha1", "sha256", "sha512", etc. (string
+# value)
+#digest_algorithm = sha1
 
-# Certificate file to use when starting registry server securely
-#cert_file = /path/to/certfile
+# Address to bind the server.  Useful when selecting a particular
+# network interface. (string value)
+#bind_host = 0.0.0.0
+
+# The port on which the server will listen. (integer value)
+#bind_port = <None>
+
+# The backlog value that will be used when creating the TCP listener
+# socket. (integer value)
+#backlog = 4096
 
-# Private key file to use when starting registry server securely
-#key_file = /path/to/keyfile
+# The value for the socket option TCP_KEEPIDLE.  This is the time in
+# seconds that the connection must be idle before TCP starts sending
+# keepalive probes. (integer value)
+#tcp_keepidle = 600
 
-# CA certificate file to use to verify connecting clients
-#ca_file = /path/to/cafile
+# CA certificate file to use to verify connecting clients. (string
+# value)
+#ca_file = <None>
+
+# Certificate file to use when starting API server securely. (string
+# value)
+#cert_file = <None>
+
+# Private key file to use when starting API server securely. (string
+# value)
+#key_file = <None>
 
-# ============ Notification System Options =====================
+# The number of child process workers that will be created to service
+# requests. The default will be equal to the number of CPUs available.
+# (integer value)
+workers = 1
+
+# 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
 
-# Driver or drivers to handle sending notifications. Set to
-# 'messaging' to send notifications to a message queue.
-# notification_driver = noop
+# If False, server will return the header "Connection: close", If
+# True, server will return "Connection: Keep-Alive" in its responses.
+# In order to close the client socket connection explicitly after the
+# response is sent and read successfully by the client, you simply
+# have to set this option to False when you create a wsgi server.
+# (boolean value)
+#http_keepalive = 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 = 0
 
-# Default publisher_id for outgoing notifications.
-# default_publisher_id = image.localhost
+#
+# From 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
 
-# Messaging driver used for 'messaging' notifications driver
-# rpc_backend = 'rabbit'
+# 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>
 
-# Configuration options if sending notifications via rabbitmq (these are
-# the defaults)
-rabbit_host = localhost
-rabbit_port = 5672
-rabbit_use_ssl = false
-rabbit_userid = guest
-rabbit_password = guest
-rabbit_virtual_host = /
-rabbit_notification_exchange = glance
-rabbit_notification_topic = notifications
-rabbit_durable_queues = False
+# (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
 
-# Configuration options if sending notifications via Qpid (these are
-# the defaults)
-qpid_notification_exchange = glance
-qpid_notification_topic = notifications
-qpid_hostname = localhost
-qpid_port = 5672
-qpid_username =
-qpid_password =
-qpid_sasl_mechanisms =
-qpid_reconnect_timeout = 0
-qpid_reconnect_limit = 0
-qpid_reconnect_interval_min = 0
-qpid_reconnect_interval_max = 0
-qpid_reconnect_interval = 0
-qpid_heartbeat = 5
-# Set to 'ssl' to enable SSL
-qpid_protocol = tcp
-qpid_tcp_nodelay = True
+# 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] "
+
+#
+# From 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 = localhost
+
+# 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
 
 
-# ================= Database Options ==========================
+[database]
+
+#
+# From oslo.db
+#
 
-[database]
-# The file name to use with SQLite (string value)
-#sqlite_db = glance.sqlite
+# 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)
-#sqlite_synchronous = True
+# If True, SQLite uses synchronous mode. (boolean value)
+# Deprecated group/name - [DEFAULT]/sqlite_synchronous
+#sqlite_synchronous = true
 
-# The backend to use for db (string value)
+# The back end to use for the database. (string value)
 # Deprecated group/name - [DEFAULT]/db_backend
 #backend = sqlalchemy
 
-# The SQLAlchemy connection string used to connect to the
-# database (string value)
+# 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/glance
 
-# 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)
+# 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)
+# 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)
+# 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)
+# 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 db connection retries during startup. (setting -1
-# implies an infinite retry count) (integer value)
+# 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)
+# 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)
+# 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)
+# 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)
+# Add Python stack traces to SQL as comment strings. (boolean value)
 # Deprecated group/name - [DEFAULT]/sql_connection_trace
-#connection_trace = False
+#connection_trace = false
 
-# If set, use this value for pool_timeout with sqlalchemy
-# (integer value)
+# 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
+# Enable the experimental use of database reconnect on connection
+# lost. (boolean value)
+#use_db_reconnect = false
 
-# seconds between db connection retries (integer value)
+# Seconds between retries of a database transaction. (integer value)
 #db_retry_interval = 1
 
-# Whether to increase interval between db connection retries,
-# up to db_max_retry_interval (boolean value)
-#db_inc_retry_interval = True
+# If True, increases the interval between retries of a database
+# operation up to db_max_retry_interval. (boolean value)
+#db_inc_retry_interval = true
 
-# max seconds between db connection retries, if
-# db_inc_retry_interval is enabled (integer value)
+# If db_inc_retry_interval is set, the maximum seconds between retries
+# of a database operation. (integer value)
 #db_max_retry_interval = 10
 
-# maximum db connection retries before error is raised.
-# (setting -1 implies an infinite retry count) (integer value)
+# 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
+
+
+[glance_store]
+
+#
+# From glance.store
+#
+
+# List of stores enabled (list value)
+#stores = file,http
+
+# Default scheme to use to store image data. The scheme must be
+# registered by one of the stores defined by the 'stores' config
+# option. (string value)
+#default_store = file
+
+# Minimum interval seconds to execute updating dynamic storage
+# capabilities based on backend status then. It's not a periodic
+# routine, the update logic will be executed only when interval
+# seconds elapsed and an operation of store has triggered. The feature
+# will be enabled only when the option value greater then zero.
+# (integer value)
+#store_capabilities_update_min_interval = 0
+
+#
+# From glance.store
+#
+
+# Images will be chunked into objects of this size (in megabytes). For
+# best performance, this should be a power of two. (integer value)
+#sheepdog_store_chunk_size = 64
+
+# Port of sheep daemon. (integer value)
+#sheepdog_store_port = 7000
+
+# IP address of sheep daemon. (string value)
+#sheepdog_store_address = localhost
+
+# RADOS images will be chunked into objects of this size (in
+# megabytes). For best performance, this should be a power of two.
+# (integer value)
+#rbd_store_chunk_size = 8
+
+# RADOS pool in which images are stored. (string value)
+#rbd_store_pool = images
+
+# RADOS user to authenticate as (only applicable if using Cephx. If
+# <None>, a default will be chosen based on the client. section in
+# rbd_store_ceph_conf) (string value)
+#rbd_store_user = <None>
+
+# Ceph configuration file path. If <None>, librados will locate the
+# default config. If using cephx authentication, this file should
+# include a reference to the right keyring in a client.<USER> section
+# (string value)
+#rbd_store_ceph_conf = /etc/ceph/ceph.conf
+
+# The host where the S3 server is listening. (string value)
+#s3_store_host = <None>
+
+# The S3 query token access key. (string value)
+#s3_store_access_key = <None>
+
+# The S3 query token secret key. (string value)
+#s3_store_secret_key = <None>
+
+# The S3 bucket to be used to store the Glance data. (string value)
+#s3_store_bucket = <None>
+
+# The local directory where uploads will be staged before they are
+# transferred into S3. (string value)
+#s3_store_object_buffer_dir = <None>
+
+# A boolean to determine if the S3 bucket should be created on upload
+# if it does not exist or if an error should be returned to the user.
+# (boolean value)
+#s3_store_create_bucket_on_put = false
+
+# The S3 calling format used to determine the bucket. Either subdomain
+# or path can be used. (string value)
+#s3_store_bucket_url_format = subdomain
+
+# What size, in MB, should S3 start chunking image files and do a
+# multipart upload in S3. (integer value)
+#s3_store_large_object_size = 100
+
+# What multipart upload part size, in MB, should S3 use when uploading
+# parts. The size must be greater than or equal to 5M. (integer value)
+#s3_store_large_object_chunk_size = 10
+
+# The number of thread pools to perform a multipart upload in S3.
+# (integer value)
+#s3_store_thread_pools = 10
+
+# Hostname or IP address of the instance to connect to, or a mongodb
+# URI, or a list of hostnames / mongodb URIs. If host is an IPv6
+# literal it must be enclosed in '[' and ']' characters following the
+# RFC2732 URL syntax (e.g. '[::1]' for localhost) (string value)
+#mongodb_store_uri = <None>
+
+# Database to use (string value)
+#mongodb_store_db = <None>
+
+# 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)
+#cinder_catalog_info = volume:cinder:publicURL
+
+# Override service catalog lookup with template for cinder endpoint
+# e.g. http://localhost:8776/v1/%(project_id)s (string value)
+#cinder_endpoint_template = <None>
+
+# Region name of this node (string value)
+#os_region_name = <None>
+
+# Location of ca certicates file to use for cinder client requests.
+# (string value)
+#cinder_ca_certificates_file = <None>
+
+# Number of cinderclient retries on failed http calls (integer value)
+#cinder_http_retries = 3
+
+# Allow to perform insecure SSL requests to cinder (boolean value)
+#cinder_api_insecure = false
+
+# Directory to which the Filesystem backend store writes images.
+# (string value)
+filesystem_store_datadir = /var/lib/glance/images/
+
+# List of directories and its priorities to which the Filesystem
+# backend store writes images. (multi valued)
+#filesystem_store_datadirs =
+
+# The path to a file which contains the metadata to be returned with
+# any location associated with this store.  The file must contain a
+# valid JSON object. The object should contain the keys 'id' and
+# 'mountpoint'. The value for both keys should be 'string'. (string
+# value)
+#filesystem_store_metadata_file = <None>
+
+# The required permission for created image file. In this way the user
+# other service used, e.g. Nova, who consumes the image could be the
+# exclusive member of the group that owns the files created. Assigning
+# it less then or equal to zero means don't change the default
+# permission of the file. This value will be decoded as an octal
+# digit. (integer value)
+#filesystem_store_file_perm = 0
+
+# Version of the authentication service to use. Valid versions are 2
+# for keystone and 1 for swauth and rackspace. (deprecated) (string
+# value)
+#swift_store_auth_version = 2
+
+# If True, swiftclient won't check for a valid SSL certificate when
+# authenticating. (boolean value)
+#swift_store_auth_insecure = false
+
+# A string giving the CA certificate file to use in SSL connections
+# for verifying certs. (string value)
+#swift_store_cacert = <None>
+
+# The region of the swift endpoint to be used for single tenant. This
+# setting is only necessary if the tenant has multiple swift
+# endpoints. (string value)
+#swift_store_region = <None>
+
+# If set, the configured endpoint will be used. If None, the storage
+# url from the auth response will be used. (string value)
+#swift_store_endpoint = <None>
+
+# A string giving the endpoint type of the swift service to use
+# (publicURL, adminURL or internalURL). This setting is only used if
+# swift_store_auth_version is 2. (string value)
+#swift_store_endpoint_type = publicURL
+
+# A string giving the service type of the swift service to use. This
+# setting is only used if swift_store_auth_version is 2. (string
+# value)
+#swift_store_service_type = object-store
+
+# Container within the account that the account should use for storing
+# images in Swift when using single container mode. In multiple
+# container mode, this will be the prefix for all containers. (string
+# value)
+#swift_store_container = glance
+
+# The size, in MB, that Glance will start chunking image files and do
+# a large object manifest in Swift. (integer value)
+#swift_store_large_object_size = 5120
+
+# The amount of data written to a temporary disk buffer during the
+# process of chunking the image file. (integer value)
+#swift_store_large_object_chunk_size = 200
+
+# A boolean value that determines if we create the container if it
+# does not exist. (boolean value)
+#swift_store_create_container_on_put = false
+
+# If set to True, enables multi-tenant storage mode which causes
+# Glance images to be stored in tenant specific Swift accounts.
+# (boolean value)
+#swift_store_multi_tenant = false
+
+# When set to 0, a single-tenant store will only use one container to
+# store all images. When set to an integer value between 1 and 32, a
+# single-tenant store will use multiple containers to store images,
+# and this value will determine how many containers are created.Used
+# only when swift_store_multi_tenant is disabled. The total number of
+# containers that will be used is equal to 16^N, so if this config
+# option is set to 2, then 16^2=256 containers will be used to store
+# images. (integer value)
+#swift_store_multiple_containers_seed = 0
+
+# A list of tenants that will be granted read/write access on all
+# Swift containers created by Glance in multi-tenant mode. (list
+# value)
+#swift_store_admin_tenants =
+
+# If set to False, disables SSL layer compression of https swift
+# requests. Setting to False may improve performance for images which
+# are already in a compressed format, eg qcow2. (boolean value)
+#swift_store_ssl_compression = true
+
+# The number of times a Swift download will be retried before the
+# request fails. (integer value)
+#swift_store_retry_get_count = 0
+
+# The reference to the default swift account/backing store parameters
+# to use for adding new images. (string value)
+#default_swift_reference = ref1
+
+# The address where the Swift authentication service is
+# listening.(deprecated) (string value)
+#swift_store_auth_address = <None>
+
+# The user to authenticate against the Swift authentication service
+# (deprecated) (string value)
+#swift_store_user = <None>
+
+# Auth key for the user authenticating against the Swift
+# authentication service. (deprecated) (string value)
+#swift_store_key = <None>
+
+# The config file that has the swift account(s)configs. (string value)
+#swift_store_config_file = <None>
+
+# ESX/ESXi or vCenter Server target system. The server value can be an
+# IP address or a DNS name. (string value)
+#vmware_server_host = <None>
+
+# Username for authenticating with VMware ESX/VC server. (string
+# value)
+#vmware_server_username = <None>
+
+# Password for authenticating with VMware ESX/VC server. (string
+# value)
+#vmware_server_password = <None>
+
+# DEPRECATED. Inventory path to a datacenter. If the
+# vmware_server_host specified is an ESX/ESXi, the
+# vmware_datacenter_path is optional. If specified, it should be "ha-
+# datacenter". This option is deprecated in favor of vmware_datastores
+# and will be removed in the Liberty release. (string value)
+#vmware_datacenter_path = ha-datacenter
+
+# DEPRECATED. Datastore associated with the datacenter. This option is
+# deprecated in favor of vmware_datastores and will be removed in the
+# Liberty release. (string value)
+#vmware_datastore_name = <None>
+
+# Number of times VMware ESX/VC server API must be retried upon
+# connection related issues. (integer value)
+#vmware_api_retry_count = 10
+
+# The interval used for polling remote tasks invoked on VMware ESX/VC
+# server. (integer value)
+#vmware_task_poll_interval = 5
+
+# The name of the directory where the glance images will be stored in
+# the VMware datastore. (string value)
+#vmware_store_image_dir = /openstack_glance
+
+# Allow to perform insecure SSL requests to ESX/VC. (boolean value)
+#vmware_api_insecure = false
+
+# A list of datastores where the image can be stored. This option may
+# be specified multiple times for specifying multiple datastores.
+# Either one of vmware_datastore_name or vmware_datastores is
+# required. The datastore name should be specified after its
+# datacenter path, seperated by ":". An optional weight may be given
+# after the datastore name, seperated again by ":". Thus, the required
+# format becomes <datacenter_path>:<datastore_name>:<optional_weight>.
+# When adding an image, the datastore with highest weight will be
+# selected, unless there is not enough free space available in cases
+# where the image size is already known. If no weight is given, it is
+# assumed to be zero and the directory will be considered for
+# selection last. If multiple datastores have the same weight, then
+# the one with the most free space available is selected. (multi
+# valued)
+#vmware_datastores =
+
+
 [keystone_authtoken]
+
+#
+# From keystonemiddleware.auth_token
+#
+
+# Complete public Identity API endpoint. (string value)
 auth_uri = http://127.0.0.1:5000/v2.0/
-identity_uri = http://127.0.0.1:35357/
-admin_tenant_name = %SERVICE_TENANT_NAME%
-admin_user = %SERVICE_USER%
-admin_password = %SERVICE_PASSWORD%
+
+# 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)
+#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>
+
+# Verify HTTPS connections. (boolean value)
+#insecure = false
+
+# Directory used to cache files related to PKI tokens. (string value)
 signing_dir = /var/lib/glance/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 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/ (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>
+
+# Service username. (string value)
+admin_user = %SERVICE_USER%
+
+# Service user password. (string value)
+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>
+
+
+[matchmaker_redis]
+
+#
+# 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
+
+# Password for Redis server (optional). (string value)
+#password = <None>
+
+
+[matchmaker_ring]
+
+#
+# From oslo.messaging
+#
+
+# Matchmaker ring file (JSON). (string value)
+# Deprecated group/name - [DEFAULT]/matchmaker_ringfile
+#ringfile = /etc/oslo/matchmaker_ring.json
+
+
+[oslo_messaging_amqp]
+
+#
+# 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)
+# 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)
+# Deprecated group/name - [amqp1]/trace
+#trace = false
+
+# CA certificate PEM file for verifing 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)
+# Deprecated group/name - [amqp1]/allow_insecure_clients
+#allow_insecure_clients = false
+
+
+[oslo_messaging_qpid]
+
+#
+# From 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)
+# Deprecated group/name - [DEFAULT]/amqp_auto_delete
+#amqp_auto_delete = false
+
+# Size of RPC connection pool. (integer value)
+# Deprecated group/name - [DEFAULT]/rpc_conn_pool_size
+#rpc_conn_pool_size = 30
+
+# Qpid broker hostname. (string value)
+# Deprecated group/name - [DEFAULT]/qpid_hostname
+#qpid_hostname = localhost
+
+# Qpid broker port. (integer value)
+# Deprecated group/name - [DEFAULT]/qpid_port
+#qpid_port = 5672
+
+# Qpid HA cluster host:port pairs. (list value)
+# Deprecated group/name - [DEFAULT]/qpid_hosts
+#qpid_hosts = $qpid_hostname:$qpid_port
+
+# Username for Qpid connection. (string value)
+# Deprecated group/name - [DEFAULT]/qpid_username
+#qpid_username =
+
+# Password for Qpid connection. (string value)
+# Deprecated group/name - [DEFAULT]/qpid_password
+#qpid_password =
+
+# Space separated list of SASL mechanisms to use for auth. (string
+# value)
+# Deprecated group/name - [DEFAULT]/qpid_sasl_mechanisms
+#qpid_sasl_mechanisms =
+
+# Seconds between connection keepalive heartbeats. (integer value)
+# Deprecated group/name - [DEFAULT]/qpid_heartbeat
+#qpid_heartbeat = 60
+
+# Transport to use, either 'tcp' or 'ssl'. (string value)
+# Deprecated group/name - [DEFAULT]/qpid_protocol
+#qpid_protocol = tcp
+
+# Whether to disable the Nagle algorithm. (boolean value)
+# Deprecated group/name - [DEFAULT]/qpid_tcp_nodelay
+#qpid_tcp_nodelay = true
+
+# The number of prefetched messages held by receiver. (integer value)
+# Deprecated group/name - [DEFAULT]/qpid_receiver_capacity
+#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)
+# Deprecated group/name - [DEFAULT]/qpid_topology_version
+#qpid_topology_version = 1
+
+
+[oslo_messaging_rabbit]
+
+#
+# From 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)
+# Deprecated group/name - [DEFAULT]/amqp_auto_delete
+#amqp_auto_delete = false
+
+# Size of RPC connection pool. (integer value)
+# Deprecated group/name - [DEFAULT]/rpc_conn_pool_size
+#rpc_conn_pool_size = 30
+
+# SSL version to use (valid only if SSL enabled). Valid values are
+# TLSv1 and SSLv23. SSLv2, SSLv3, TLSv1_1, and TLSv1_2 may be
+# available on some distributions. (string value)
+# Deprecated group/name - [DEFAULT]/kombu_ssl_version
+#kombu_ssl_version =
+
+# SSL key file (valid only if SSL enabled). (string value)
+# Deprecated group/name - [DEFAULT]/kombu_ssl_keyfile
+#kombu_ssl_keyfile =
+
+# SSL cert file (valid only if SSL enabled). (string value)
+# Deprecated group/name - [DEFAULT]/kombu_ssl_certfile
+#kombu_ssl_certfile =
+
+# SSL certification authority file (valid only if SSL enabled).
+# (string value)
+# Deprecated group/name - [DEFAULT]/kombu_ssl_ca_certs
+#kombu_ssl_ca_certs =
+
+# How long to wait before reconnecting in response to an AMQP consumer
+# cancel notification. (floating point value)
+# Deprecated group/name - [DEFAULT]/kombu_reconnect_delay
+#kombu_reconnect_delay = 1.0
+
+# The RabbitMQ broker address where a single node is used. (string
+# value)
+# Deprecated group/name - [DEFAULT]/rabbit_host
+#rabbit_host = localhost
+
+# The RabbitMQ broker port where a single node is used. (integer
+# value)
+# Deprecated group/name - [DEFAULT]/rabbit_port
+#rabbit_port = 5672
+
+# RabbitMQ HA cluster host:port pairs. (list value)
+# Deprecated group/name - [DEFAULT]/rabbit_hosts
+#rabbit_hosts = $rabbit_host:$rabbit_port
+
+# Connect over SSL for RabbitMQ. (boolean value)
+# Deprecated group/name - [DEFAULT]/rabbit_use_ssl
+#rabbit_use_ssl = false
+
+# The RabbitMQ userid. (string value)
+# Deprecated group/name - [DEFAULT]/rabbit_userid
+#rabbit_userid = guest
+
+# The RabbitMQ password. (string value)
+# Deprecated group/name - [DEFAULT]/rabbit_password
+#rabbit_password = guest
+
+# The RabbitMQ login method. (string value)
+# Deprecated group/name - [DEFAULT]/rabbit_login_method
+#rabbit_login_method = AMQPLAIN
+
+# The RabbitMQ virtual host. (string value)
+# Deprecated group/name - [DEFAULT]/rabbit_virtual_host
+#rabbit_virtual_host = /
+
+# How frequently to retry connecting with RabbitMQ. (integer 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 number of RabbitMQ connection retries. Default is 0
+# (infinite retry count). (integer value)
+# Deprecated group/name - [DEFAULT]/rabbit_max_retries
+#rabbit_max_retries = 0
+
+# Use HA queues in RabbitMQ (x-ha-policy: all). If you change this
+# option, you must wipe the RabbitMQ database. (boolean value)
+# Deprecated group/name - [DEFAULT]/rabbit_ha_queues
+#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)
+# Deprecated group/name - [DEFAULT]/fake_rabbit
+#fake_rabbit = false
+
+
+[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
+
+
 [paste_deploy]
-# Name of the paste configuration file that defines the available pipelines
-#config_file = glance-registry-paste.ini
+
+#
+# From glance.registry
+#
 
 # Partial name of a pipeline in your paste configuration file with the
 # service name removed. For example, if your paste section name is
-# [pipeline:glance-registry-keystone], you would configure the flavor below
-# as 'keystone'.
-flavor=keystone
+# [pipeline:glance-api-keystone] use the value "keystone" (string
+# value)
+flavor = keystone
+
+# Name of the paste configuration file. (string value)
+#config_file = <None>
+
 
 [profiler]
-# If False fully disable profiling feature.
-#enabled = False
+
+#
+# From glance.registry
+#
 
-# If False doesn't trace SQL requests.
-#trace_sqlalchemy = False
+# If False fully disable profiling feature. (boolean value)
+#enabled = false
+
+# If False doesn't trace SQL requests. (boolean value)
+#trace_sqlalchemy = false
--- a/components/openstack/glance/files/glance-scrubber.conf	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/glance/files/glance-scrubber.conf	Fri Feb 05 17:54:17 2016 -0500
@@ -1,116 +1,410 @@
 [DEFAULT]
-# Show more verbose log output (sets INFO log level output)
-#verbose = False
 
-# Show debugging output in logs (sets DEBUG log level output)
-#debug = False
-
-# Log to this file. Make sure you do not set the same log file for both the API
-# and registry servers!
+#
+# From glance.scrubber
 #
-# If `log_file` is omitted and `use_syslog` is false, then log messages are
-# sent to stdout as a fallback.
-log_file = /var/log/glance/scrubber.log
+
+# Whether to allow users to specify image properties beyond what the
+# image schema provides (boolean value)
+#allow_additional_image_properties = true
+
+# Maximum number of image members per image. Negative values evaluate
+# to unlimited. (integer value)
+#image_member_quota = 128
+
+# Maximum number of properties allowed on an image. Negative values
+# evaluate to unlimited. (integer value)
+#image_property_quota = 128
+
+# Maximum number of tags allowed on an image. Negative values evaluate
+# to unlimited. (integer value)
+#image_tag_quota = 128
+
+# Maximum number of locations allowed on an image. Negative values
+# evaluate to unlimited. (integer value)
+#image_location_quota = 10
+
+# Python module path of data access API (string value)
+#data_api = glance.db.sqlalchemy.api
+
+# Default value for the number of items returned by a request if not
+# specified explicitly in the request (integer value)
+#limit_param_default = 25
+
+# Maximum permissible number of items that could be returned by a
+# request (integer value)
+#api_limit_max = 1000
 
-# Send logs to syslog (/dev/log) instead of to file specified by `log_file`
-#use_syslog = False
+# Whether to include the backend image storage location in image
+# properties. Revealing storage location can be a security risk, so
+# use this setting with caution! (boolean value)
+#show_image_direct_url = false
+
+# Whether to include the backend image locations in image properties.
+# For example, if using the file system store a URL of
+# "file:///path/to/image" will be returned to the user in the
+# 'direct_url' meta-data field. Revealing storage location can be a
+# security risk, so use this setting with caution!  The overrides
+# show_image_direct_url. (boolean value)
+#show_multiple_locations = false
 
-# Should we run our own loop or rely on cron/scheduler to run us
-daemon = True
+# Maximum size of image a user can upload in bytes. Defaults to
+# 1099511627776 bytes (1 TB).WARNING: this value should only be
+# increased after careful consideration and must be set to a value
+# under 8 EB (9223372036854775808). (integer value)
+#image_size_cap = 1099511627776
+
+# Set a system wide quota for every user. This value is the total
+# capacity that a user can use across all storage systems. A value of
+# 0 means unlimited.Optional unit can be specified for the value.
+# Accepted units are B, KB, MB, GB and TB representing Bytes,
+# KiloBytes, MegaBytes, GigaBytes and TeraBytes respectively. If no
+# unit is specified then Bytes is assumed. Note that there should not
+# be any space between value and unit and units are case sensitive.
+# (string value)
+#user_storage_quota = 0
+
+# Deploy the v1 OpenStack Images API. (boolean value)
+#enable_v1_api = true
 
-# Loop time between checking for new items to schedule for delete
-wakeup_time = 300
+# Deploy the v2 OpenStack Images API. (boolean value)
+#enable_v2_api = true
+
+# Deploy the v1 OpenStack Registry API. (boolean value)
+#enable_v1_registry = true
+
+# Deploy the v2 OpenStack Registry API. (boolean value)
+#enable_v2_registry = true
+
+# The hostname/IP of the pydev process listening for debug connections
+# (string value)
+#pydev_worker_debug_host = <None>
+
+# The port on which a pydev process is listening for connections.
+# (integer value)
+#pydev_worker_debug_port = 5678
 
-# Directory that the scrubber will use to remind itself of what to delete
-# Make sure this is also set in glance-api.conf
-scrubber_datadir = /var/lib/glance/scrubber
+# AES key for encrypting store 'location' metadata. This includes, if
+# used, Swift or S3 credentials. Should be set to a random string of
+# length 16, 24 or 32 bytes (string value)
+#metadata_encryption_key = <None>
 
-# Only one server in your deployment should be designated the cleanup host
-cleanup_scrubber = False
+# Digest algorithm which will be used for digital signature; the
+# default is sha1 the default in Kilo for a smooth upgrade process,
+# and it will be updated with sha256 in next release(L). Use the
+# command "openssl list-message-digest-algorithms" to get the
+# available algorithms supported by the version of OpenSSL on the
+# platform. Examples are "sha1", "sha256", "sha512", etc. (string
+# value)
+#digest_algorithm = sha1
+
+# Directory that the scrubber will use to track information about what
+# to delete. Make sure this is set in glance-api.conf and glance-
+# scrubber.conf. (string value)
+#scrubber_datadir = /var/lib/glance/scrubber
 
-# pending_delete items older than this time are candidates for cleanup
-cleanup_scrubber_time = 86400
+# The amount of time in seconds to delay before performing a delete.
+# (integer value)
+#scrub_time = 0
 
-# Address to find the registry server for cleanups
-registry_host = 0.0.0.0
+# A boolean that determines if the scrubber should clean up the files
+# it uses for taking data. Only one server in your deployment should
+# be designated the cleanup host. (boolean value)
+#cleanup_scrubber = false
+
+# Turn on/off delayed delete. (boolean value)
+#delayed_delete = false
+
+# Items must have a modified time that is older than this value in
+# order to be candidates for cleanup. (integer value)
+#cleanup_scrubber_time = 86400
 
-# Port the registry server is listening on
-registry_port = 9191
+# Loop time between checking for new items to schedule for delete.
+# (integer value)
+#wakeup_time = 300
+
+# Run as a long-running process. When not specified (the default) run
+# the scrub operation once and then exits. When specified do not exit
+# and run scrub on wakeup_time interval as specified in the config.
+# (boolean value)
+daemon = true
 
-# Auth settings if using Keystone
-auth_url = http://127.0.0.1:5000/v2.0/
-admin_tenant_name = %SERVICE_TENANT_NAME%
+# Whether to pass through the user token when making requests to the
+# registry. (boolean value)
+#use_user_token = true
+
+# The administrators user name. If "use_user_token" is not in effect,
+# then admin credentials can be specified. (string value)
 admin_user = %SERVICE_USER%
+
+# The administrators password. If "use_user_token" is not in effect,
+# then admin credentials can be specified. (string value)
 admin_password = %SERVICE_PASSWORD%
 
-# Directory to use for lock files. Default to a temp directory
-# (string value). This setting needs to be the same for both
-# glance-scrubber and glance-api.
-#lock_path=<None>
+# The tenant name of the administrative user. If "use_user_token" is
+# not in effect, then admin tenant name can be specified. (string
+# value)
+admin_tenant_name = %SERVICE_TENANT_NAME%
+
+# The URL to the keystone service. If "use_user_token" is not in
+# effect and using keystone auth, then URL of keystone can be
+# specified. (string value)
+auth_url = http://127.0.0.1:5000/v2.0/
+
+# The strategy to use for authentication. If "use_user_token" is not
+# in effect, then auth strategy can be specified. (string value)
+#auth_strategy = noauth
+
+# The region for the authentication service. If "use_user_token" is
+# not in effect and using keystone auth, then region name can be
+# specified. (string value)
+#auth_region = <None>
+
+# Address to find the registry server. (string value)
+#registry_host = 0.0.0.0
+
+# Port the registry server is listening on. (integer value)
+#registry_port = 9191
 
-# API to use for accessing data. Default value points to sqlalchemy
-# package, it is also possible to use: glance.db.registry.api
-#data_api = glance.db.sqlalchemy.api
+#
+# From 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
 
-# ================= Security Options ==========================
+# (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
 
-# AES key for encrypting store 'location' metadata, including
-# -- if used -- Swift or S3 credentials
-# Should be set to a random string of length 16, 24 or 32 bytes
-#metadata_encryption_key = <16, 24 or 32 char registry metadata key>
+# 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
 
-# ================= Database Options ===============+==========
+# 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] "
+
 
 [database]
 
-# The SQLAlchemy connection string used to connect to the
-# database (string value)
-connection=mysql://%SERVICE_USER%:%SERVICE_PASSWORD%@localhost/glance
+#
+# 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 used to connect to the
-# slave database (string value)
-#slave_connection=
+# 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/glance
 
-# timeout before idle sql connections are reaped (integer
-# value)
-#idle_timeout=3600
+# 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
 
-# Minimum number of SQL connections to keep open in a pool
-# (integer value)
-#min_pool_size=1
+# 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 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)
+# Deprecated group/name - [DEFAULT]/sql_max_retries
+# Deprecated group/name - [DATABASE]/sql_max_retries
+#max_retries = 10
 
-# maximum db connection retries during startup. (setting -1
-# implies an infinite retry count) (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
 
-# interval between retries of opening a sql connection
+# 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)
-#retry_interval=10
-
-# If set, use this value for max_overflow with sqlalchemy
-# (integer value)
-#max_overflow=<None>
+# Deprecated group/name - [DEFAULT]/sql_connection_debug
+#connection_debug = 0
 
-# 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)
+# Deprecated group/name - [DEFAULT]/sql_connection_trace
+#connection_trace = false
 
-# Add python stack traces to SQL as comment strings (boolean
+# If set, use this value for pool_timeout with SQLAlchemy. (integer
 # value)
-#connection_trace=false
+# 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 set, use this value for pool_timeout with sqlalchemy
+# 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)
-#pool_timeout=<None>
+#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
+
+
+[oslo_concurrency]
 
-[glance_store]
+#
+# From oslo.concurrency
+#
+
+# Enables or disables inter-process locks. (boolean value)
+# Deprecated group/name - [DEFAULT]/disable_process_locking
+#disable_process_locking = false
 
-# ============ Filesystem Store Options ========================
+# 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 = <None>
+
+
+[oslo_policy]
 
-# Directory that the Filesystem backend store
-# writes image data to
-filesystem_store_datadir = /var/lib/glance/images/
+#
+# 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
--- a/components/openstack/glance/files/glance-upgrade	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/glance/files/glance-upgrade	Fri Feb 05 17:54:17 2016 -0500
@@ -1,6 +1,6 @@
 #!/usr/bin/python2.7
 
-# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2015, 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
@@ -29,57 +29,36 @@
 
 GLANCE_API_MAPPINGS = {
     # Deprecated group/name
-    ('DEFAULT', 'db_backend'): ('database', 'backend'),
-    ('DEFAULT', 'sql_connection'): ('database', 'connection'),
-    ('DATABASE', 'sql_connection'): ('database', 'connection'),
-    ('sql', 'connection'): ('database', 'connection'),
-    ('DEFAULT', 'sql_idle_timeout'): ('database', 'idle_timeout'),
-    ('DATABASE', 'sql_idle_timeout'): ('database', 'idle_timeout'),
-    ('sql', 'idle_timeout'): ('database', 'idle_timeout'),
-    ('DEFAULT', 'sql_min_pool_size'): ('database', 'min_pool_size'),
-    ('DATABASE', 'sql_min_pool_size'): ('database', 'min_pool_size'),
-    ('DEFAULT', 'sql_max_pool_size'): ('database', 'max_pool_size'),
-    ('DATABASE', 'sql_max_pool_size'): ('database', 'max_pool_size'),
-    ('DEFAULT', 'sql_max_retries'): ('database', 'max_retries'),
-    ('DATABASE', 'sql_max_retries'): ('database', 'max_retries'),
-    ('DEFAULT', 'sql_retry_interval'): ('database', 'retry_interval'),
-    ('DATABASE', 'reconnect_interval'): ('database', 'retry_interval'),
-    ('DEFAULT', 'sql_max_overflow'): ('database', 'max_overflow'),
-    ('DATABASE', 'sqlalchemy_max_overflow'): ('database', 'max_overflow'),
-    ('DEFAULT', 'sql_connection_debug'): ('database', 'connection_debug'),
-    ('DEFAULT', 'sql_connection_trace'): ('database', 'connection_trace'),
-    ('DATABASE', 'sqlalchemy_pool_timeout'): ('database', 'pool_timeout'),
-    ('DEFAULT', 'filesystem_store_datadir'):
-        ('glance_store', 'filesystem_store_datadir'),
-    ('DEFAULT', 'swift_store_auth_version'):
-         ('glance_store', 'swift_store_auth_version'),
-    ('DEFAULT', 'swift_store_auth_address'):
-         ('glance_store', 'swift_store_auth_address'),
-    ('DEFAULT', 'swift_store_user'): ('glance_store', 'swift_store_user'),
-    ('DEFAULT', 'swift_store_key'): ('glance_store', 'swift_store_key'),
-    ('DEFAULT', 'swift_store_container'):
-         ('glance_store', 'swift_store_container'),
-    ('DEFAULT', 'swift_store_create_container_on_put'):
-         ('glance_store', 'swift_store_create_container_on_put'),
-    ('DEFAULT', 'swift_store_large_object_size'):
-         ('glance_store', 'swift_store_large_object_size'),
-    ('DEFAULT', 'swift_store_large_object_chunk_size'):
-         ('glance_store', 'swift_store_large_object_chunk_size'),
-    ('DEFAULT', 'swift_enable_snet'): ('glance_store', 'swift_enable_snet'),
-    ('DEFAULT', 's3_store_host'): ('glance_store', 's3_store_host'),
-    ('DEFAULT', 's3_store_access_key'):
-         ('glance_store', 's3_store_access_key'),
-    ('DEFAULT', 's3_store_secret_key'):
-         ('glance_store', 's3_store_secret_key'),
-    ('DEFAULT', 's3_store_bucket'): ('glance_store', 's3_store_bucket'),
-    ('DEFAULT', 's3_store_create_bucket_on_put'):
-         ('glance_store', 's3_store_create_bucket_on_put'),
-    ('DEFAULT', 'sheepdog_store_address'):
-         ('glance_store', 'sheepdog_store_address'),
-    ('DEFAULT', 'sheepdog_store_port'):
-         ('glance_store', 'sheepdog_store_port'),
-    ('DEFAULT', 'sheepdog_store_chunk_size'):
-         ('glance_store', 'sheepdog_store_chunk_size'),
+    ('DEFAULT', 'container_formats'): ('image_format', 'container_formats'),
+    ('DEFAULT', 'disk_formats'): ('image_format', 'disk_formats'),
+    ('DEFAULT', 'matchmaker_ringfile'): ('matchmaker_ring', 'ringfile'),
+    ('DEFAULT', 'rabbit_durable_queues'): ('oslo_messaging_qpid',
+                                           'amqp_durable_queues'),
+    ('DEFAULT', 'qpid_hostname'): ('oslo_messaging_qpid', 'qpid_hostname'),
+    ('DEFAULT', 'qpid_port'): ('oslo_messaging_qpid', 'qpid_port'),
+    ('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', 'rabbit_host'): ('oslo_messaging_rabbit', 'rabbit_host'),
+    ('DEFAULT', 'rabbit_port'): ('oslo_messaging_rabbit', 'rabbit_port'),
+    ('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_virtual_host'): ('oslo_messaging_rabbit',
+                                         'rabbit_virtual_host'),
+    ('task', 'eventlet_executor_pool_size'):
+        ('taskflow_executor', 'max_workers'),
+    ('DEFAULT', 'log-format'): (None, None),
+    ('DEFAULT', 'log_format'): (None, None),
+    ('DEFAULT', 'use-syslog'): (None, None),
+    ('glance_store', 'vmware_datacenter_path'): (None, None),
+    ('glance_store', 'vmware_datastore_name'): (None, None),
 }
 
 GLANCE_API_EXCEPTIONS = [
@@ -91,43 +70,18 @@
     ('DEFAULT', 'registry_host'),
     ('DEFAULT', 'registry_port'),
     ('DEFAULT', 'registry_client_protocol'),
-    ('DEFAULT', 'rabbit_host'),
-    ('DEFAULT', 'rabbit_port'),
-    ('DEFAULT', 'rabbit_use_ssl'),
-    ('DEFAULT', 'rabbit_userid'),
-    ('DEFAULT', 'rabbit_password'),
-    ('DEFAULT', 'rabbit_virtual_host'),
-    ('DEFAULT', 'rabbit_notification_exchange'),
-    ('DEFAULT', 'rabbit_notification_topic'),
-    ('DEFAULT', 'rabbit_durable_queues'),
-    ('DEFAULT', 'qpid_notification_exchange'),
-    ('DEFAULT', 'qpid_notification_topic'),
-    ('DEFAULT', 'qpid_hostname'),
-    ('DEFAULT', 'qpid_port'),
-    ('DEFAULT', 'qpid_usernamd'),
-    ('DEFAULT', 'qpid_password'),
-    ('DEFAULT', 'qpid_sasl_mechanisms'),
-    ('DEFAULT', 'qpid_reconnect_timeout'),
-    ('DEFAULT', 'qpid_reconnect_limit'),
-    ('DEFAULT', 'qpid_reconnect_interval_min'),
-    ('DEFAULT', 'qpid_reconnect_interval_max'),
-    ('DEFAULT', 'qpid_reconnect_interval'),
-    ('DEFAULT', 'qpid_heartbeat'),
-    ('DEFAULT', 'qpid_protocol'),
-    ('DEFAULT', 'qpid_tcp_nodelay'),
     ('DEFAULT', 'delayed_delete'),
     ('DEFAULT', 'scrub_time'),
     ('DEFAULT', 'scrubber_datadir'),
     ('DEFAULT', 'image_cache_dir'),
     ('database', 'connection'),
+    ('paste_deploy', 'flavor'),
     ('keystone_authtoken', 'auth_uri'),
     ('keystone_authtoken', 'identity_uri'),
     ('keystone_authtoken', 'admin_tenant_name'),
     ('keystone_authtoken', 'admin_user'),
     ('keystone_authtoken', 'admin_password'),
     ('keystone_authtoken', 'revocation_cache_time'),
-    ('keystone_authtoken', 'signing_dir'),
-    ('paste_deploy', 'flavor'),
     ('glance_store', 'filesystem_store_datadir'),
     ('glance_store', 'swift_store_auth_version'),
     ('glance_store', 'swift_store_auth_address'),
@@ -137,15 +91,35 @@
     ('glance_store', 'swift_store_create_container_on_put'),
     ('glance_store', 'swift_store_large_object_size'),
     ('glance_store', 'swift_store_large_object_chunk_size'),
-    ('glance_store', 'swift_enable_snet'),
     ('glance_store', 's3_store_host'),
-    ('glance_store', 's3_store_access_key'),
-    ('glance_store', 's3_store_secret_key'),
-    ('glance_store', 's3_store_bucket'),
     ('glance_store', 's3_store_create_bucket_on_put'),
     ('glance_store', 'sheepdog_store_address'),
     ('glance_store', 'sheepdog_store_port'),
     ('glance_store', 'sheepdog_store_chunk_size'),
+    ('oslo_messaging_rabbit', 'rabbit_host'),
+    ('oslo_messaging_rabbit', 'rabbit_port'),
+    ('oslo_messaging_rabbit', 'rabbit_use_ssl'),
+    ('oslo_messaging_rabbit', 'rabbit_userid'),
+    ('oslo_messaging_rabbit', 'rabbit_password'),
+    ('oslo_messaging_rabbit', 'rabbit_virtual_host'),
+    ('oslo_messaging_rabbit', 'rabbit_notification_exchange'),
+    ('oslo_messaging_rabbit', 'rabbit_notification_topic'),
+    ('oslo_messaging_rabbit', 'rabbit_durable_queues'),
+    ('oslo_messaging_qpid', 'qpid_notification_exchange'),
+    ('oslo_messaging_qpid', 'qpid_notification_topic'),
+    ('oslo_messaging_qpid', 'qpid_hostname'),
+    ('oslo_messaging_qpid', 'qpid_port'),
+    ('oslo_messaging_qpid', 'qpid_usernamd'),
+    ('oslo_messaging_qpid', 'qpid_password'),
+    ('oslo_messaging_qpid', 'qpid_sasl_mechanisms'),
+    ('oslo_messaging_qpid', 'qpid_reconnect_timeout'),
+    ('oslo_messaging_qpid', 'qpid_reconnect_limit'),
+    ('oslo_messaging_qpid', 'qpid_reconnect_interval_min'),
+    ('oslo_messaging_qpid', 'qpid_reconnect_interval_max'),
+    ('oslo_messaging_qpid', 'qpid_reconnect_interval'),
+    ('oslo_messaging_qpid', 'qpid_heartbeat'),
+    ('oslo_messaging_qpid', 'qpid_protocol'),
+    ('oslo_messaging_qpid', 'qpid_tcp_nodelay'),
 ]
 
 GLANCE_CACHE_EXCEPTIONS = [
@@ -160,78 +134,39 @@
     ('DEFAULT', 'admin_user'),
     ('DEFAULT', 'admin_password'),
     ('DEFAULT', 'filesystem_store_datadir'),
-    ('DEFAULT', 'swift_store_auth_version'),
-    ('DEFAULT', 'swift_store_auth_address'),
-    ('DEFAULT', 'swift_store_user'),
-    ('DEFAULT', 'swift_store_key'),
-    ('DEFAULT', 'swift_store_container'),
-    ('DEFAULT', 'swift_store_create_container_on_put'),
-    ('DEFAULT', 'swift_store_large_object_size'),
-    ('DEFAULT', 'swift_store_large_object_chunk_size'),
-    ('DEFAULT', 'swift_enable_snet'),
-    ('DEFAULT', 's3_store_host'),
-    ('DEFAULT', 's3_store_access_key'),
-    ('DEFAULT', 's3_store_secret_key'),
-    ('DEFAULT', 's3_store_bucket'),
-    ('DEFAULT', 's3_store_create_bucket_on_put'),
 ]
 
 GLANCE_REGISTRY_MAPPINGS = {
-    # Deprecated group/name
-    ('DEFAULT', 'db_backend'): ('database', 'backend'),
-    ('DEFAULT', 'sql_connection'): ('database', 'connection'),
-    ('DATABASE', 'sql_connection'): ('database', 'connection'),
-    ('sql', 'connection'): ('database', 'connection'),
-    ('DEFAULT', 'sql_idle_timeout'): ('database', 'idle_timeout'),
-    ('DATABASE', 'sql_idle_timeout'): ('database', 'idle_timeout'),
-    ('sql', 'idle_timeout'): ('database', 'idle_timeout'),
-    ('DEFAULT', 'sql_min_pool_size'): ('database', 'min_pool_size'),
-    ('DATABASE', 'sql_min_pool_size'): ('database', 'min_pool_size'),
-    ('DEFAULT', 'sql_max_pool_size'): ('database', 'max_pool_size'),
-    ('DATABASE', 'sql_max_pool_size'): ('database', 'max_pool_size'),
-    ('DEFAULT', 'sql_max_retries'): ('database', 'max_retries'),
-    ('DATABASE', 'sql_max_retries'): ('database', 'max_retries'),
-    ('DEFAULT', 'sql_retry_interval'): ('database', 'retry_interval'),
-    ('DATABASE', 'reconnect_interval'): ('database', 'retry_interval'),
-    ('DEFAULT', 'sql_max_overflow'): ('database', 'max_overflow'),
-    ('DATABASE', 'sqlalchemy_max_overflow'): ('database', 'max_overflow'),
-    ('DEFAULT', 'sql_connection_debug'): ('database', 'connection_debug'),
-    ('DEFAULT', 'sql_connection_trace'): ('database', 'connection_trace'),
-    ('DATABASE', 'sqlalchemy_pool_timeout'): ('database', 'pool_timeout'),
+    # Deprecate group/name
+    ('DEFAULT', 'rabbit_durable_queues'): ('oslo_messaging_qpid',
+                                           'rabbit_durable_queues'),
+    ('DEFAULT', 'qpid_hostname'): ('oslo_messaging_qpid', 'qpid_hostname'),
+    ('DEFAULT', 'qpid_port'): ('oslo_messaging_qpid', 'qpid_port'),
+    ('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', 'rabbit_host'): ('oslo_messaging_rabbit', 'rabbit_host'),
+    ('DEFAULT', 'rabbit_port'): ('oslo_messaging_rabbit', 'rabbit_port'),
+    ('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_virtual_host'): ('oslo_messaging_rabbit',
+                                         'rabbit_virtual_host'),
 }
 
 GLANCE_REGISTRY_EXCEPTIONS = [
     ('DEFAULT', 'bind_host'),
-    ('DEFAULT', 'bind_host'),
+    ('DEFAULT', 'bind_port'),
     ('DEFAULT', 'log_file'),
     ('DEFAULT', 'backlog'),
     ('DEFAULT', 'workers'),
-    ('DEFAULT', 'api_limit_max'),
     ('DEFAULT', 'limit_param_default'),
-    ('DEFAULT', 'rabbit_host'),
-    ('DEFAULT', 'rabbit_port'),
-    ('DEFAULT', 'rabbit_use_ssl'),
-    ('DEFAULT', 'rabbit_userid'),
-    ('DEFAULT', 'rabbit_password'),
-    ('DEFAULT', 'rabbit_virtual_host'),
-    ('DEFAULT', 'rabbit_notification_exchange'),
-    ('DEFAULT', 'rabbit_notification_topic'),
-    ('DEFAULT', 'rabbit_durable_queues'),
-    ('DEFAULT', 'qpid_notification_exchange'),
-    ('DEFAULT', 'qpid_notification_topic'),
-    ('DEFAULT', 'qpid_hostname'),
-    ('DEFAULT', 'qpid_port'),
-    ('DEFAULT', 'qpid_usernamd'),
-    ('DEFAULT', 'qpid_password'),
-    ('DEFAULT', 'qpid_sasl_mechanisms'),
-    ('DEFAULT', 'qpid_reconnect_timeout'),
-    ('DEFAULT', 'qpid_reconnect_limit'),
-    ('DEFAULT', 'qpid_reconnect_interval_min'),
-    ('DEFAULT', 'qpid_reconnect_interval_max'),
-    ('DEFAULT', 'qpid_reconnect_interval'),
-    ('DEFAULT', 'qpid_heartbeat'),
-    ('DEFAULT', 'qpid_protocol'),
-    ('DEFAULT', 'qpid_tcp_nodelay'),
     ('database', 'connection'),
     ('keystone_authtoken', 'auth_uri'),
     ('keystone_authtoken', 'identity_uri'),
@@ -239,14 +174,35 @@
     ('keystone_authtoken', 'admin_user'),
     ('keystone_authtoken', 'admin_password'),
     ('keystone_authtoken', 'signing_dir'),
+    ('oslo_messaging_rabbit', 'rabbit_host'),
+    ('oslo_messaging_rabbit', 'rabbit_port'),
+    ('oslo_messaging_rabbit', 'rabbit_use_ssl'),
+    ('oslo_messaging_rabbit', 'rabbit_userid'),
+    ('oslo_messaging_rabbit', 'rabbit_password'),
+    ('oslo_messaging_rabbit', 'rabbit_virtual_host'),
+    ('oslo_messaging_rabbit', 'rabbit_notification_exchange'),
+    ('oslo_messaging_rabbit', 'rabbit_notification_topic'),
+    ('oslo_messaging_rabbit', 'rabbit_durable_queues'),
+    ('oslo_messaging_qpid', 'qpid_notification_exchange'),
+    ('oslo_messaging_qpid', 'qpid_notification_topic'),
+    ('oslo_messaging_qpid', 'qpid_hostname'),
+    ('oslo_messaging_qpid', 'qpid_port'),
+    ('oslo_messaging_qpid', 'qpid_usernamd'),
+    ('oslo_messaging_qpid', 'qpid_password'),
+    ('oslo_messaging_qpid', 'qpid_sasl_mechanisms'),
+    ('oslo_messaging_qpid', 'qpid_reconnect_timeout'),
+    ('oslo_messaging_qpid', 'qpid_reconnect_limit'),
+    ('oslo_messaging_qpid', 'qpid_reconnect_interval_min'),
+    ('oslo_messaging_qpid', 'qpid_reconnect_interval_max'),
+    ('oslo_messaging_qpid', 'qpid_reconnect_interval'),
+    ('oslo_messaging_qpid', 'qpid_heartbeat'),
+    ('oslo_messaging_qpid', 'qpid_protocol'),
+    ('oslo_messaging_qpid', 'qpid_tcp_nodelay'),
     ('paste_deploy', 'flavor'),
 ]
 
-GLANCE_SCRUBBER_MAPPINGS = {
-    # Deprecated group/name
-    ('DEFAULT', 'filesystem_store_datadir'):
-        ('glance_store', 'filesystem_store_datadir'),
-}
+# TODO: Add mappings?
+# GLANCE_SCRUBBER_MAPPINGS
 
 GLANCE_SCRUBBER_EXCEPTIONS = [
     ('DEFAULT', 'log_file'),
@@ -261,7 +217,6 @@
     ('DEFAULT', 'admin_user'),
     ('DEFAULT', 'admin_password'),
     ('database', 'connection'),
-    ('glance_store', 'filesystem_store_datadir'),
 ]
 
 
@@ -298,12 +253,10 @@
                     exception_list=GLANCE_CACHE_EXCEPTIONS)
         modify_conf('/etc/glance/glance-registry.conf',
                     GLANCE_REGISTRY_MAPPINGS,
-                    GLANCE_REGISTRY_EXCEPTIONS)
+                    exception_list=GLANCE_REGISTRY_EXCEPTIONS)
         modify_conf('/etc/glance/glance-registry-paste.ini')
         modify_conf('/etc/glance/glance-scrubber.conf',
-                    GLANCE_SCRUBBER_MAPPINGS,
-                    GLANCE_SCRUBBER_EXCEPTIONS)
-        modify_conf('/etc/glance/logging.conf')
+                    exception_list=GLANCE_SCRUBBER_EXCEPTIONS)
 
     config = iniparse.RawConfigParser()
     config.read('/etc/glance/glance-api.conf')
--- a/components/openstack/glance/glance.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/glance/glance.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,7 @@
 #
 
 #
-# Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 set name=pkg.fmri \
@@ -28,7 +28,7 @@
 set name=pkg.summary value="OpenStack Glance (Image Service)"
 set name=pkg.description \
     value="OpenStack Glance provides services for discovering, registering, and retrieving virtual machine images. Glance has a RESTful API that allows querying of VM image metadata as well as retrieval of the actual image. VM images made available through Glance can be stored in a variety of locations from simple file systems to object-storage systems like OpenStack Swift."
-set name=pkg.human-version value="Juno $(COMPONENT_VERSION)"
+set name=pkg.human-version value="Kilo $(COMPONENT_VERSION)"
 set name=com.oracle.info.description value="Glance, the OpenStack image service"
 set name=com.oracle.info.tpno value=$(TPNO)
 set name=info.classification \
@@ -41,7 +41,7 @@
 set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
 set name=openstack.upgrade-id reboot-needed=true value=$(COMPONENT_BE_VERSION)
 set name=org.opensolaris.arc-caseid value=PSARC/2013/350 value=PSARC/2014/055 \
-    value=PSARC/2014/207 value=PSARC/2015/110
+    value=PSARC/2014/207 value=PSARC/2015/110 value=PSARC/2015/535
 set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
 #
 dir  path=etc/glance owner=glance group=glance mode=0700
@@ -51,6 +51,8 @@
     group=glance mode=0644 overlay=allow preserve=renamenew
 file files/glance-cache.conf path=etc/glance/glance-cache.conf owner=glance \
     group=glance mode=0644 overlay=allow preserve=renamenew
+file files/glance-manage.conf path=etc/glance/glance-manage.conf owner=glance \
+    group=glance mode=0644 overlay=allow preserve=renamenew
 file etc/glance-registry-paste.ini path=etc/glance/glance-registry-paste.ini \
     owner=glance group=glance mode=0644 overlay=allow preserve=renamenew
 file files/glance-registry.conf path=etc/glance/glance-registry.conf \
@@ -59,8 +61,6 @@
     owner=glance group=glance mode=0644 overlay=allow preserve=renamenew
 file etc/glance-swift.conf.sample path=etc/glance/glance-swift.conf \
     owner=glance group=glance mode=0644 overlay=allow preserve=renamenew
-file etc/logging.cnf.sample path=etc/glance/logging.conf owner=glance \
-    group=glance mode=0644 overlay=allow preserve=renamenew
 file etc/metadefs/README path=etc/glance/metadefs/README
 file etc/metadefs/compute-aggr-disk-filter.json \
     path=etc/glance/metadefs/compute-aggr-disk-filter.json owner=glance \
@@ -83,6 +83,9 @@
 file etc/metadefs/compute-instance-data.json \
     path=etc/glance/metadefs/compute-instance-data.json owner=glance \
     group=glance mode=0644 overlay=allow preserve=renamenew
+file etc/metadefs/compute-libvirt-image.json \
+    path=etc/glance/metadefs/compute-libvirt-image.json owner=glance \
+    group=glance mode=0644 overlay=allow preserve=renamenew
 file etc/metadefs/compute-libvirt.json \
     path=etc/glance/metadefs/compute-libvirt.json owner=glance group=glance \
     mode=0644 overlay=allow preserve=renamenew
@@ -98,6 +101,12 @@
 file etc/metadefs/compute-vcputopology.json \
     path=etc/glance/metadefs/compute-vcputopology.json owner=glance \
     group=glance mode=0644 overlay=allow preserve=renamenew
+file etc/metadefs/compute-vmware-flavor.json \
+    path=etc/glance/metadefs/compute-vmware-flavor.json owner=glance \
+    group=glance mode=0644 overlay=allow preserve=renamenew
+file etc/metadefs/compute-vmware-quota-flavor.json \
+    path=etc/glance/metadefs/compute-vmware-quota-flavor.json owner=glance \
+    group=glance mode=0644 overlay=allow preserve=renamenew
 file etc/metadefs/compute-vmware.json \
     path=etc/glance/metadefs/compute-vmware.json owner=glance group=glance \
     mode=0644 overlay=allow preserve=renamenew
@@ -110,6 +119,18 @@
 file etc/metadefs/glance-common-image-props.json \
     path=etc/glance/metadefs/glance-common-image-props.json owner=glance \
     group=glance mode=0644 overlay=allow preserve=renamenew
+file etc/metadefs/operating-system.json \
+    path=etc/glance/metadefs/operating-system.json owner=glance group=glance \
+    mode=0644 overlay=allow preserve=renamenew
+file etc/metadefs/software-databases.json \
+    path=etc/glance/metadefs/software-databases.json owner=glance \
+    group=glance mode=0644 overlay=allow preserve=renamenew
+file etc/metadefs/software-runtimes.json \
+    path=etc/glance/metadefs/software-runtimes.json owner=glance group=glance \
+    mode=0644 overlay=allow preserve=renamenew
+file etc/metadefs/software-webservers.json \
+    path=etc/glance/metadefs/software-webservers.json owner=glance \
+    group=glance mode=0644 overlay=allow preserve=renamenew
 file etc/policy.json path=etc/glance/policy.json owner=glance group=glance \
     mode=0644 overlay=allow preserve=renamenew
 file etc/property-protections-policies.conf.sample \
@@ -177,6 +198,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/api/v1/router.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/api/v1/upload_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/api/v2/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/api/v2/image_actions.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/api/v2/image_data.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/api/v2/image_members.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/api/v2/image_tags.py
@@ -185,44 +207,69 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/api/v2/metadef_objects.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/api/v2/metadef_properties.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/api/v2/metadef_resource_types.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/api/v2/metadef_tags.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/api/v2/model/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/api/v2/model/metadef_namespace.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/api/v2/model/metadef_object.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/api/v2/model/metadef_property_item_type.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/api/v2/model/metadef_property_type.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/api/v2/model/metadef_resource_type.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/api/v2/model/metadef_tag.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/api/v2/router.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/api/v2/schemas.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/api/v2/tasks.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/api/versions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/artifacts/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/async/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/glance/async/eventlet_executor.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/async/flows/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/async/flows/base_import.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/async/flows/convert.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/async/flows/introspect.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/async/taskflow_executor.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/async/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/cmd/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/cmd/agent_notification.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/cmd/api.py \
-    pkg.depend.bypass-generate=.*/glance_store.* \
-    pkg.depend.bypass-generate=.*/osprofiler.*
+    pkg.depend.bypass-generate=.*/oslo_log.* \
+    pkg.depend.bypass-generate=.*/oslo_messaging.*
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/cmd/cache_cleaner.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/cmd/cache_manage.py
 file \
     path=usr/lib/python$(PYVER)/vendor-packages/glance/cmd/cache_prefetcher.py \
-    pkg.depend.bypass-generate=.*/glance_store.*
+    pkg.depend.bypass-generate=.*/oslo_log.*
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/cmd/cache_pruner.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/cmd/control.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/cmd/index.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/cmd/manage.py \
-    pkg.depend.bypass-generate=.*/oslo/db.*
+    pkg.depend.bypass-generate=.*/oslo_db.* \
+    pkg.depend.bypass-generate=.*/oslo_log.*
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/cmd/registry.py \
-    pkg.depend.bypass-generate=.*/osprofiler.*
+    pkg.depend.bypass-generate=.*/oslo_log.* \
+    pkg.depend.bypass-generate=.*/oslo_messaging.*
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/cmd/replicator.py \
+    pkg.depend.bypass-generate=.*/oslo_log.* \
     pkg.depend.bypass-generate=.*/six.*
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/cmd/scrubber.py \
-    pkg.depend.bypass-generate=.*/glance_store.*
+    pkg.depend.bypass-generate=.*/oslo_log.*
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/cmd/search.py \
+    pkg.depend.bypass-generate=.*/oslo_log.* \
+    pkg.depend.bypass-generate=.*/oslo_messaging.*
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/artifacts/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/artifacts/declarative.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/artifacts/definitions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/artifacts/loader.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/artifacts/serialization.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/auth.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/client.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/config.py \
+    pkg.depend.bypass-generate=.*/oslo_concurrency.* \
+    pkg.depend.bypass-generate=.*/oslo_policy.* \
     pkg.depend.bypass-generate=.*/paste.*
-file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/crypt.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/crypt.py \
+    pkg.depend.bypass-generate=.*/six.*
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/exception.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/jsonpatchvalidator.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/location_strategy/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/location_strategy/location_order.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/location_strategy/store_type.py
@@ -232,12 +279,34 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/scripts/image_import/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/scripts/image_import/main.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/scripts/utils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/semver_db.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/store_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/swift_store_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/wsgi.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/common/wsme_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/context.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/contrib/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/contrib/plugins/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/contrib/plugins/artifacts_sample/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/contrib/plugins/artifacts_sample/base.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/contrib/plugins/artifacts_sample/setup.cfg
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/contrib/plugins/artifacts_sample/setup.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/contrib/plugins/artifacts_sample/v1/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/contrib/plugins/artifacts_sample/v1/artifact.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/contrib/plugins/artifacts_sample/v2/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/contrib/plugins/artifacts_sample/v2/artifact.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/contrib/plugins/image_artifact/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/contrib/plugins/image_artifact/requirements.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/contrib/plugins/image_artifact/setup.cfg
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/contrib/plugins/image_artifact/setup.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/contrib/plugins/image_artifact/v1/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/contrib/plugins/image_artifact/v1/image.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/contrib/plugins/image_artifact/v1_1/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/contrib/plugins/image_artifact/v1_1/image.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/contrib/plugins/image_artifact/v2/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/contrib/plugins/image_artifact/v2/image.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/contrib/plugins/image_artifact/version_selector.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/metadata.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/migration.py
@@ -247,6 +316,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/simple/api.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/api.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/artifacts.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/metadata.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/metadef_api/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/metadef_api/namespace.py
@@ -254,6 +324,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/metadef_api/property.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/metadef_api/resource_type.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/metadef_api/resource_type_association.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/metadef_api/tag.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/metadef_api/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/migrate_repo/README
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/migrate_repo/__init__.py
@@ -306,8 +377,16 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/migrate_repo/versions/034_add_virtual_size.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/migrate_repo/versions/035_add_metadef_tables.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/migrate_repo/versions/036_rename_metadef_schema_columns.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/migrate_repo/versions/037_add_changes_to_satisfy_models.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/migrate_repo/versions/037_sqlite_downgrade.sql
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/migrate_repo/versions/037_sqlite_upgrade.sql
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/migrate_repo/versions/038_add_metadef_tags_table.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/migrate_repo/versions/039_add_changes_to_satisfy_models_metadef.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/migrate_repo/versions/040_add_changes_to_satisfy_metadefs_tags.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/migrate_repo/versions/041_add_artifact_tables.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/migrate_repo/versions/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/models.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/models_artifacts.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/db/sqlalchemy/models_metadef.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/domain/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/domain/proxy.py
@@ -325,26 +404,20 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/image_cache/drivers/xattr.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/image_cache/prefetcher.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/image_cache/pruner.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/listener.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/location.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/notifier.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/openstack/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/openstack/common/README
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/openstack/common/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/glance/openstack/common/excutils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/openstack/common/_i18n.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/openstack/common/eventlet_backdoor.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/openstack/common/fileutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/glance/openstack/common/gettextutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/glance/openstack/common/importutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/glance/openstack/common/jsonutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/openstack/common/local.py
-file path=usr/lib/python$(PYVER)/vendor-packages/glance/openstack/common/lockutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/glance/openstack/common/log.py
-file path=usr/lib/python$(PYVER)/vendor-packages/glance/openstack/common/network_utils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/glance/openstack/common/policy.py
-file path=usr/lib/python$(PYVER)/vendor-packages/glance/openstack/common/processutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/glance/openstack/common/strutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/glance/openstack/common/test.py
-file path=usr/lib/python$(PYVER)/vendor-packages/glance/openstack/common/timeutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/glance/openstack/common/units.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/openstack/common/loopingcall.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/openstack/common/service.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/openstack/common/systemd.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/openstack/common/threadgroup.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/opts.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/quota/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/registry/__init__.py
@@ -363,6 +436,19 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/registry/client/v2/client.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/schema.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/scrubber.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/search/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/search/api/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/search/api/v0_1/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/search/api/v0_1/router.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/search/api/v0_1/search.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/search/plugins/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/search/plugins/base.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/search/plugins/images.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/search/plugins/images_notification_handler.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/search/plugins/metadefs.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/search/plugins/metadefs_notification_handler.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance/service.py \
+    pkg.depend.bypass-generate=.*/oslo_log.*
 file path=usr/lib/python$(PYVER)/vendor-packages/glance/version.py
 dir  path=var/lib/glance owner=glance group=glance mode=0700
 dir  path=var/log/glance owner=glance group=glance mode=0700
@@ -373,10 +459,6 @@
 #
 license glance.license license="Apache v2.0"
 
-# force a group dependency on the optional anyjson; pkgdepend work is needed to
-# flush this out.
-depend type=group fmri=library/python/anyjson-$(PYV)
-
 # force a group dependency on the optional dnspython; pkgdepend work is needed
 # to flush this out.
 depend type=group fmri=library/python/dnspython-$(PYV)
@@ -385,34 +467,35 @@
 # to flush this out.
 depend type=group fmri=library/python/pysendfile-$(PYV)
 
-# force a group dependency on the optional simplejson; pkgdepend work is needed
-# to flush this out.
-depend type=group fmri=library/python/simplejson-$(PYV)
+# 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
+
+# force a dependency on enum; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/enum-$(PYV)
 
-# force a dependency on babel; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/babel-$(PYV)
+# force a dependency on glanceclient; pkgdepend work is needed to flush this
+# out.
+depend type=require fmri=library/python/glanceclient-$(PYV)
 
-# force a dependency on glance_store; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/glance_store-$(PYV)
+# force a dependency on greenlet; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/greenlet-$(PYV)
 
 # force a dependency on httplib2; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/httplib2-$(PYV)
 
-# force a dependency on iso8601; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/iso8601-$(PYV)
-
 # force a dependency on jsonschema; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/jsonschema-$(PYV)
 
-# force a dependency on keystoneclient; pkgdepend work is needed to flush this
-# out.
-depend type=require fmri=library/python/keystoneclient-$(PYV)
-
 # force a dependency on keystonemiddleware; used via a paste.deploy filter
 depend type=require fmri=library/python/keystonemiddleware-$(PYV)
 
-# force a dependency on netaddr; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/netaddr-$(PYV)
+# force a dependency on oslo.concurrency; pkgdepend work is needed to flush this
+# out.
+depend type=require fmri=library/python/oslo.concurrency-$(PYV)
+
+# force a dependency on oslo.context; pkgdepend work is needed to flush this
+# out.
+depend type=require fmri=library/python/oslo.context-$(PYV)
 
 # force a dependency on oslo.db; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/oslo.db-$(PYV)
@@ -420,15 +503,11 @@
 # 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.messaging; pkgdepend work is needed to flush this
-# out.
-depend type=require fmri=library/python/oslo.messaging-$(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.utils; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/oslo.utils-$(PYV)
-
-# force a dependency on osprofiler; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/osprofiler-$(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 paste; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/paste-$(PYV)
@@ -440,9 +519,6 @@
 # force a dependency on pbr; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/pbr-$(PYV)
 
-# force a dependency on posix_ipc; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/posix_ipc-$(PYV)
-
 # force a dependency on pyopenssl; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/pyopenssl-$(PYV)
 
@@ -452,14 +528,18 @@
 # 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 six; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/six-$(PYV)
+# force a dependency on semantic-version; pkgdepend work is needed to flush this
+# out.
+depend type=require fmri=library/python/semantic-version-$(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 stevedore; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/stevedore-$(PYV)
 
-# force a dependency on webob; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/webob-$(PYV)
+# force a dependency on taskflow; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/taskflow-$(PYV)
 
 # force a dependency on wsme; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/wsme-$(PYV)
--- a/components/openstack/glance/patches/01-nopycrypto.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/glance/patches/01-nopycrypto.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -4,31 +4,24 @@
 Convert urlsafe_encrypt() and urlsafe_decrypt() to use M2Crypto instead
 of PyCrypto.
 
---- glance-2014.2.2/glance/common/crypt.py.~1~	2014-08-07 12:01:58.000000000 -0700
-+++ glance-2014.2.2/glance/common/crypt.py	2014-08-09 21:36:53.351345980 -0700
-@@ -3,6 +3,8 @@
- # Copyright 2011 OpenStack Foundation
- # All Rights Reserved.
- #
-+# Copyright (c) 2014, 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
-@@ -20,10 +22,26 @@
+--- glance-2015.1.2/glance/common/crypt.py.~1~	2015-10-13 09:38:23.000000000 -0700
++++ glance-2015.1.2/glance/common/crypt.py	2016-01-24 16:48:24.788282369 -0800
+@@ -20,14 +20,30 @@ Routines for URL-safe encrypting/decrypt
  """
  
  import base64
 +import os
-+
-+from M2Crypto.EVP import Cipher
-+
-+from glance.common import exception
-+
  
 -from Crypto.Cipher import AES
 -from Crypto import Random
 -from Crypto.Random import random
++from glance.common import exception
++
++from M2Crypto.EVP import Cipher
+ # NOTE(jokke): simplified transition to py3, behaves like py2 xrange
+ from six.moves import range
+ 
+ 
 +def _key_to_alg(key):
 +    """Return a M2Crypto-compatible AES-CBC algorithm name given a key."""
 +    aes_algs = {
@@ -42,10 +35,12 @@
 +        msg = ('Invalid AES key length, %d bits') % keylen
 +        raise exception.Invalid(msg)
 +    return aes_algs[keylen]
- 
- 
++
++
  def urlsafe_encrypt(key, plaintext, blocksize=16):
-@@ -35,20 +53,12 @@
+     """
+     Encrypts plaintext. Resulting ciphertext will contain URL-safe characters
+@@ -37,20 +53,12 @@ def urlsafe_encrypt(key, plaintext, bloc
  
      :returns : Resulting ciphertext
      """
@@ -70,7 +65,7 @@
      return base64.urlsafe_b64encode(init_vector + padded)
  
  
-@@ -62,6 +72,7 @@
+@@ -64,6 +72,7 @@ def urlsafe_decrypt(key, ciphertext):
      """
      # Cast from unicode
      ciphertext = base64.urlsafe_b64decode(str(ciphertext))
--- a/components/openstack/glance/patches/02-zfs-uar-formats.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/glance/patches/02-zfs-uar-formats.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,9 +1,9 @@
 In-house patch to add 'uar' and 'zfs' container and disk formats to
 registered image types.  Patch has not yet been submitted upstream.
 
---- glance-2014.2.2/glance/common/config.py.orig        2014-06-16 14:14:21.107758750 -0600
-+++ glance-2014.2.2/glance/common/config.py   2014-06-16 14:14:34.374672756 -0600
-@@ -41,14 +41,14 @@
+--- glance-2015.1.2/glance/common/config.py.~1~	2015-10-13 09:38:23.000000000 -0700
++++ glance-2015.1.2/glance/common/config.py	2016-01-19 12:23:11.283140667 -0800
+@@ -47,14 +47,14 @@ paste_deploy_opts = [
  ]
  image_format_opts = [
      cfg.ListOpt('container_formats',
@@ -20,4 +20,3 @@
                  help=_("Supported values for the 'disk_format' "
                         "image attribute"),
                  deprecated_opts=[cfg.DeprecatedOpt('disk_formats',
-
--- a/components/openstack/glance/patches/03-Partial_Content.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/glance/patches/03-Partial_Content.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -5,9 +5,9 @@
  https://bugs.launchpad.net/glance/+bug/1399851
  https://bugs.launchpad.net/glance/+bug/1417069
 
---- glance-2014.2.2/glance/api/v2/image_data.py.~1~	2015-02-05 07:19:44.000000000 -0800
-+++ glance-2014.2.2/glance/api/v2/image_data.py	2015-02-23 14:04:17.091921881 -0800
-@@ -199,6 +199,8 @@ class ResponseSerializer(wsgi.JSONRespon
+--- glance-2015.1.2/glance/api/v2/image_data.py.~1~	2015-10-13 09:38:23.000000000 -0700
++++ glance-2015.1.2/glance/api/v2/image_data.py	2016-01-19 12:23:11.296863244 -0800
+@@ -211,6 +211,8 @@ class ResponseSerializer(wsgi.JSONRespon
  
      def download(self, response, image):
          offset, chunk_size = 0, None
@@ -16,7 +16,7 @@
          range_val = response.request.get_content_range()
  
          if range_val:
-@@ -210,6 +212,21 @@ class ResponseSerializer(wsgi.JSONRespon
+@@ -222,6 +224,21 @@ class ResponseSerializer(wsgi.JSONRespon
              if range_val.stop is not None:
                  chunk_size = range_val.stop - offset
  
@@ -38,9 +38,9 @@
          response.headers['Content-Type'] = 'application/octet-stream'
  
          try:
-@@ -229,7 +246,9 @@ class ResponseSerializer(wsgi.JSONRespon
+@@ -246,7 +263,9 @@ class ResponseSerializer(wsgi.JSONRespon
              response.headers['Content-MD5'] = image.checksum
-         #NOTE(markwash): "response.app_iter = ..." also erroneously resets the
+         # NOTE(markwash): "response.app_iter = ..." also erroneously resets the
          # content-length
 -        response.headers['Content-Length'] = str(image.size)
 +        # NOTE(mattk): Should be set to chunk_size or image.size
@@ -49,9 +49,9 @@
  
      def upload(self, response, result):
          response.status_int = 204
---- glance-2014.2.2/glance/common/wsgi.py.~1~	2015-02-05 07:19:44.000000000 -0800
-+++ glance-2014.2.2/glance/common/wsgi.py	2015-02-23 14:04:17.092284573 -0800
-@@ -556,7 +556,7 @@ class Request(webob.Request):
+--- glance-2015.1.2/glance/common/wsgi.py.~1~	2015-10-13 09:38:23.000000000 -0700
++++ glance-2015.1.2/glance/common/wsgi.py	2016-01-19 12:23:11.297682604 -0800
+@@ -752,7 +752,7 @@ class Request(webob.Request):
          return self.accept_language.best_match(langs)
  
      def get_content_range(self):
@@ -60,7 +60,7 @@
          range_str = self.headers.get('Content-Range')
          if range_str is not None:
              range_ = webob.byterange.ContentRange.parse(range_str)
-@@ -565,6 +565,16 @@ class Request(webob.Request):
+@@ -761,6 +761,16 @@ class Request(webob.Request):
                  raise webob.exc.HTTPBadRequest(explanation=msg)
              return range_
  
@@ -76,4 +76,4 @@
 +
  
  class JSONRequestDeserializer(object):
-     def has_body(self, request):
+     valid_transfer_encoding = frozenset(['chunked', 'compress', 'deflate',
--- a/components/openstack/glance/patches/04-requirements.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/glance/patches/04-requirements.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,93 +1,91 @@
 In-house patch to remove unnecessary dependencies from Glance's
 requirements files. The specific reasons are as follows:
 
-boto		Not applicable
+anyjson			Not applicable
 
-cinderclient	Not applicable
+iso8601			Not applicable
 
-greenlet	Not applicable
+kombu			Not applicable
 
-kombu		Not applicable
+oslo.vmware		Not applicable
 
-oslo.vmware	Not applicable
+posix-ipc		Not applicable
 
-pycrypto	Not applicable to Solaris (M2Crypto used instead)
+pycrypto		Not applicable to Solaris (M2Crypto used instead)
 
-swiftclient	Not applicable
+python-keystoneclient	Not applicable
 
---- glance-2014.2.2/glance.egg-info/requires.txt.~1~	2015-02-05 07:21:46.000000000 -0800
-+++ glance-2014.2.2/glance.egg-info/requires.txt	2015-02-23 14:39:12.013101917 -0800
-@@ -1,5 +1,4 @@
- pbr>=0.6,!=0.7,<1.0
--greenlet>=0.3.2
- SQLAlchemy>=0.8.4,<=0.9.99,!=0.9.0,!=0.9.1,!=0.9.2,!=0.9.3,!=0.9.4,!=0.9.5,!=0.9.6
- anyjson>=0.3.3
- eventlet>=0.15.1,<0.16.0
-@@ -7,11 +6,8 @@ PasteDeploy>=1.5.0
- Routes>=1.12.3,!=2.0
+python-swiftclient	Not applicable
+
+--- glance-2015.1.2/glance.egg-info/requires.txt.~1~	2015-10-13 09:41:01.000000000 -0700
++++ glance-2015.1.2/glance.egg-info/requires.txt	2016-01-24 20:34:20.750596736 -0800
+@@ -1,16 +1,12 @@
+ pbr!=0.7,<1.0,>=0.6
+ greenlet>=0.3.2
+ SQLAlchemy<=0.9.99,>=0.9.7
+-anyjson>=0.3.3
+ eventlet!=0.17.0,>=0.16.1
+ PasteDeploy>=1.5.0
+ Routes!=2.0,>=1.12.3
  WebOb>=1.2.3
- argparse
--boto>=2.32.1,<2.35.0
- sqlalchemy-migrate==0.9.1
+ sqlalchemy-migrate!=0.9.8,<0.10.0,>=0.9.5
  httplib2>=0.7.5
 -kombu>=2.5.0
 -pycrypto>=2.6
- iso8601>=0.1.9
- ordereddict
- oslo.config>=1.4.0  # Apache-2.0
-@@ -20,11 +16,8 @@ netaddr>=0.7.12
- keystonemiddleware>=1.0.0
- WSME>=0.6
- posix_ipc
--python-swiftclient>=2.2.0
--oslo.vmware>=0.6.0,<0.9.0               # Apache-2.0
+-iso8601>=0.1.9
+ oslo.config<1.10.0,>=1.9.3 # Apache-2.0
+ oslo.concurrency<1.9.0,>=1.8.2 # Apache-2.0
+ oslo.context<0.3.0,>=0.2.0 # Apache-2.0
+@@ -19,12 +15,8 @@ stevedore<1.4.0,>=1.3.0 # Apache-2.0
+ taskflow<0.8.0,>=0.7.1
+ keystonemiddleware<1.6.0,>=1.5.0
+ WSME<0.7,>=0.6
+-posix-ipc
+-python-swiftclient<2.5.0,>=2.2.0
+-oslo.vmware<0.12.0,>=0.11.1 # Apache-2.0
  Paste
- jsonschema>=2.0.0,<3.0.0
--python-cinderclient>=1.1.0
- python-keystoneclient>=0.10.0
+ jsonschema<3.0.0,>=2.0.0
+-python-keystoneclient<1.4.0,>=1.2.0
  pyOpenSSL>=0.11
- six>=1.7.0
---- glance-2014.2.2/requirements.txt.~1~	2015-02-05 07:19:44.000000000 -0800
-+++ glance-2014.2.2/requirements.txt	2015-02-23 14:39:03.037319077 -0800
-@@ -3,11 +3,6 @@
- # process, which may cause wedges in the gate later.
- 
- pbr>=0.6,!=0.7,<1.0
--#
--# The greenlet package must be compiled with gcc and needs
--# the Python.h headers. Make sure you install the python-dev
--# package to get the right headers...
--greenlet>=0.3.2
+ six>=1.9.0
+ oslo.db<1.8.0,>=1.7.0 # Apache-2.0
+--- glance-2015.1.2/requirements.txt.~1~	2015-10-13 09:38:23.000000000 -0700
++++ glance-2015.1.2/requirements.txt	2016-01-24 20:43:04.064101395 -0800
+@@ -11,16 +11,12 @@ greenlet>=0.3.2
  
  # < 0.8.0/0.8 does not work, see https://bugs.launchpad.net/bugs/1153983
- SQLAlchemy>=0.8.4,<=0.9.99,!=0.9.0,!=0.9.1,!=0.9.2,!=0.9.3,!=0.9.4,!=0.9.5,!=0.9.6
-@@ -17,11 +12,8 @@ PasteDeploy>=1.5.0
- Routes>=1.12.3,!=2.0
+ SQLAlchemy<=0.9.99,>=0.9.7
+-anyjson>=0.3.3
+ eventlet!=0.17.0,>=0.16.1
+ PasteDeploy>=1.5.0
+ Routes!=2.0,>=1.12.3
  WebOb>=1.2.3
- argparse
--boto>=2.32.1,<2.35.0
- sqlalchemy-migrate==0.9.1
+ sqlalchemy-migrate!=0.9.8,<0.10.0,>=0.9.5
  httplib2>=0.7.5
 -kombu>=2.5.0
 -pycrypto>=2.6
- iso8601>=0.1.9
- ordereddict
- oslo.config>=1.4.0  # Apache-2.0
-@@ -32,17 +24,10 @@ WSME>=0.6
- # For openstack/common/lockutils
- posix_ipc
- 
+-iso8601>=0.1.9
+ oslo.config<1.10.0,>=1.9.3 # Apache-2.0
+ oslo.concurrency<1.9.0,>=1.8.2 # Apache-2.0
+ oslo.context<0.3.0,>=0.2.0 # Apache-2.0
+@@ -29,20 +25,11 @@ stevedore<1.4.0,>=1.3.0 # Apache-2.0
+ taskflow<0.8.0,>=0.7.1
+ keystonemiddleware<1.6.0,>=1.5.0
+ WSME<0.7,>=0.6
+-# For openstack/common/lockutils
+-posix-ipc
+-
 -# For Swift storage backend.
--python-swiftclient>=2.2.0
+-python-swiftclient<2.5.0,>=2.2.0
 -
 -# For VMware storage backed.
--oslo.vmware>=0.6.0,<0.9.0               # Apache-2.0
--
+-oslo.vmware<0.12.0,>=0.11.1 # Apache-2.0
+ 
  # For paste.util.template used in keystone.common.template
  Paste
  
- jsonschema>=2.0.0,<3.0.0
--python-cinderclient>=1.1.0
- python-keystoneclient>=0.10.0
+ jsonschema<3.0.0,>=2.0.0
+-python-keystoneclient<1.4.0,>=1.2.0
  pyOpenSSL>=0.11
- 
+ # Required by openstack.common libraries
+ six>=1.9.0
--- a/components/openstack/glance/patches/05-CVE-2015-1881.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-Errata patch for CVE-2015-1881
-https://review.openstack.org/156553
-git fetch https://review.openstack.org/openstack/glance refs/changes/53/156553/1 && git format-patch -1 --stdout FETCH_HEAD
-Fixed upstream and in a future release.
----
-From: abhishekkekane <[email protected]>
-Date: Thu, 12 Feb 2015 04:09:14 -0800
-Subject: [PATCH] Image data remains in backend for deleted image
-
-Trying to delete image created using task api (import-from) image gets
-deleted from the database, but image data remains in the backend. Import
-task does not update the location of the image and it remains None even
-image becomes active. Location entry is not added in the database in
-image_locations table.
-
-Added location information to the image before saving the image in
-the database.
-
-SecurityImpact
-
-Conflicts:
-    glance/common/scripts/image_import/main.py
-
-Change-Id: Ie389de6538a9b98dc51c7d781b81b3ab10b83842
-Closes-Bug: #1420696
-(cherry picked from commit 78b5b0a9575cd5e9c4543ec0e8fd6072af1f0ebb) 
---- glance-2014.2.2/glance/common/scripts/image_import/main.py
-+++ glance-2014.2.2/glance/common/scripts/image_import/main.py
-@@ -84,29 +84,29 @@ def import_image(image_repo, image_factory, task_input, task_id, uri):
-     # NOTE: set image status to saving just before setting data
-     original_image.status = 'saving'
-     image_repo.save(original_image)
--    set_image_data(original_image, uri, None)
--
--    # NOTE: Check if the Image is not deleted after setting the data
--    # before setting it's status to active. We need to set the status
--    # explicitly here using the Image object returned from image_repo .The
--    # Image object returned from create_image method does not have appropriate
--    # factories wrapped around it.
-     image_id = original_image.image_id
-+
-+    # NOTE: Retrieving image from the database because the Image object
-+    # returned from create_image method does not have appropriate factories
-+    # wrapped around it.
-     new_image = image_repo.get(image_id)
--    if new_image.status in ['saving']:
--        new_image.status = 'active'
--        new_image.size = original_image.size
--        new_image.virtual_size = original_image.virtual_size
--        new_image.checksum = original_image.checksum
-+    set_image_data(new_image, uri, None)
-+
-+    # NOTE: Check if the Image is not deleted after setting the data
-+    # before saving the active image. Here if image status is
-+    # saving, then new_image is saved as it contains updated location,
-+    # size, virtual_size and checksum information and the status of
-+    # new_image is already set to active in set_image_data() call.
-+    image = image_repo.get(image_id)
-+    if image.status == 'saving':
-+        image_repo.save(new_image)
-+        return image_id
-     else:
-         msg = _LE("The Image %(image_id)s object being created by this task "
-                   "%(task_id)s, is no longer in valid status for further "
-                   "processing." % {"image_id": new_image.image_id,
-                                    "task_id": task_id})
-         raise exception.Conflict(msg)
--    image_repo.save(new_image)
--
--    return image_id
- 
- 
- def create_image(image_repo, image_factory, image_properties, task_id):
---- glance-2014.2.2/glance/tests/unit/common/scripts/image_import/test_main.py
-+++ glance-2014.2.2/glance/tests/unit/common/scripts/image_import/test_main.py
-@@ -56,7 +56,8 @@ class TestImageImport(test_utils.BaseTestCase):
-                     image_id,
-                     image_import_script.import_image(image_repo, image_factory,
-                                                      task_input, None, uri))
--                self.assertEqual('active', image.status)
-+                # Check image is in saving state before image_repo.save called
-+                self.assertEqual('saving', image.status)
-                 self.assertTrue(image_repo.save.called)
-                 mock_set_img_data.assert_called_once_with(image, uri, None)
-                 self.assertTrue(image_repo.get.called)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/glance/patches/05-launchpad-1496012.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,45 @@
+This patch has been integrated into Glance 11.0.0 in Liberty but has
+not yet been back-ported to Kilo.
+
+commit fa30891cf659360207b71d9345666478d4554582
+Author: Erno Kuvaja <[email protected]>
+Date:   Tue Sep 15 14:57:29 2015 +0000
+
+    Update Glance example configs to reflect Liberty
+    
+    Adding taskflow_executor_opts into the opts so they will be included.
+    
+    Closes-bug: #1496012
+    
+    Depends-On: I52ebf810f4699826baa2bdf91d28e24d902cf950
+    Change-Id: I9c0988a70f691482258f5f3ba9a5cf5601a81ddf
+
+diff --git a/glance/opts.py b/glance/opts.py
+index 1542d13..a626a3b 100644
+--- a/glance/opts.py
++++ b/glance/opts.py
+@@ -25,6 +25,7 @@ import itertools
+ 
+ import glance.api.middleware.context
+ import glance.api.versions
++import glance.async.taskflow_executor
+ import glance.common.config
+ import glance.common.location_strategy
+ import glance.common.location_strategy.store_type
+@@ -51,6 +52,7 @@ _api_opts = [
+         glance.common.wsgi.bind_opts,
+         glance.common.wsgi.eventlet_opts,
+         glance.common.wsgi.socket_opts,
++        glance.common.wsgi.profiler_opts,
+         glance.image_cache.drivers.sqlite.sqlite_opts,
+         glance.image_cache.image_cache_opts,
+         glance.notifier.notifier_opts,
+@@ -61,6 +63,8 @@ _api_opts = [
+         glance.scrubber.scrubber_opts))),
+     ('image_format', glance.common.config.image_format_opts),
+     ('task', glance.common.config.task_opts),
++    ('taskflow_executor',
++     glance.async.taskflow_executor.taskflow_executor_opts),
+     ('store_type_location_strategy',
+      glance.common.location_strategy.store_type.store_type_opts),
+     ('paste_deploy', glance.common.config.paste_deploy_opts)
--- a/components/openstack/glance/patches/06-CVE-2014-9684.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-Errata patch for CVE-2014-9684
-https://review.openstack.org/157067 
-git fetch https://review.openstack.org/openstack/glance refs/changes/67/157067/3 && git format-patch -1 --stdout FETCH_HEAD
-Fixed upstream and in a future release.
----
-From: Mike Fedosin <[email protected]>
-Date: Thu, 18 Sep 2014 18:07:42 +0400
-Subject: [PATCH] Initiate deletion of image files if the import was
- interrupted
-
-If the image is deleted by appropriate API call while its content
-is still being uploaded in import task in v2, an exception is raised
-and it is not handled in the API code. This leads to the fact that
-the uploaded image file stays in a storage and clogs it.
-
-There existed code that safely removes image files if the exception
-occurs.
-
-SecurityImpact
-
-Conflicts:
-    glance/common/scripts/image_import/main.py
-
-Closes-Bug: 1371118
-Change-Id: I4f7d1aa103f4ce7abf4026e7097b9e76c24135fa
-(cherry picked from commit 7858d4d95154c8596720365e465cca7858cfec5c) 
---- glance-2014.2.2/glance/common/scripts/image_import/main.py
-+++ glance-2014.2.2/glance/common/scripts/image_import/main.py
-@@ -22,6 +22,7 @@ import six
- from glance.api.v2 import images as v2_api
- from glance.common import exception
- from glance.common.scripts import utils as script_utils
-+from glance.common import store_utils
- from glance.common import utils as common_utils
- from glance import i18n
- from glance.openstack.common import excutils
-@@ -92,21 +93,30 @@ def import_image(image_repo, image_factory, task_input, task_id, uri):
-     new_image = image_repo.get(image_id)
-     set_image_data(new_image, uri, None)
- 
--    # NOTE: Check if the Image is not deleted after setting the data
--    # before saving the active image. Here if image status is
--    # saving, then new_image is saved as it contains updated location,
--    # size, virtual_size and checksum information and the status of
--    # new_image is already set to active in set_image_data() call.
--    image = image_repo.get(image_id)
--    if image.status == 'saving':
--        image_repo.save(new_image)
--        return image_id
--    else:
--        msg = _LE("The Image %(image_id)s object being created by this task "
--                  "%(task_id)s, is no longer in valid status for further "
--                  "processing." % {"image_id": new_image.image_id,
--                                   "task_id": task_id})
--        raise exception.Conflict(msg)
-+    try:
-+        # NOTE: Check if the Image is not deleted after setting the data
-+        # before saving the active image. Here if image status is
-+        # saving, then new_image is saved as it contains updated location,
-+        # size, virtual_size and checksum information and the status of
-+        # new_image is already set to active in set_image_data() call.
-+        image = image_repo.get(image_id)
-+        if image.status == 'saving':
-+            image_repo.save(new_image)
-+            return image_id
-+        else:
-+            msg = _("The Image %(image_id)s object being created by this task "
-+                    "%(task_id)s, is no longer in valid status for further "
-+                    "processing.") % {"image_id": image_id,
-+                                      "task_id": task_id}
-+            raise exception.Conflict(msg)
-+    except (exception.Conflict, exception.NotFound):
-+        with excutils.save_and_reraise_exception():
-+            if new_image.locations:
-+                for location in new_image.locations:
-+                    store_utils.delete_image_location_from_backend(
-+                        new_image.context,
-+                        image_id,
-+                        location)
- 
- 
- def create_image(image_repo, image_factory, image_properties, task_id):
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/glance/patches/06-launchpad-1500361.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,39 @@
+This patch has been integrated into Glance 11.0.0 in Liberty but has
+not yet been back-ported to Kilo.
+
+commit b7fb5bf0f89f657ead98024ee0168f2c2fa7a776
+Author: Erno Kuvaja <[email protected]>
+Date:   Mon Sep 28 10:44:38 2015 +0000
+
+    Return missing authtoken options
+    
+    Example configs were missing keystone_authtoken section after moving
+    to generated config files. This change returns that to generation.
+    
+    Closes-Bug: #1500361
+    
+    Change-Id: I6ee82c38061d483cea7254d155d9a72436880e84
+    (cherry picked from commit b1d2d938d282ccd51986e57a638f8ea5bec56b0f)
+
+diff --git a/etc/oslo-config-generator/glance-api.conf b/etc/oslo-config-generator/glance-api.conf
+index d60dc12..3f24718 100644
+--- a/etc/oslo-config-generator/glance-api.conf
++++ b/etc/oslo-config-generator/glance-api.conf
+@@ -7,5 +7,5 @@ namespace = oslo.messaging
+ namespace = oslo.db
+ namespace = oslo.db.concurrency
+ namespace = oslo.policy
+-namespace = keystoneclient.middleware.auth_token
++namespace = keystonemiddleware.auth_token
+ namespace = oslo.log
+diff --git a/etc/oslo-config-generator/glance-registry.conf b/etc/oslo-config-generator/glance-registry.conf
+index 0663fc1..961abd9 100644
+--- a/etc/oslo-config-generator/glance-registry.conf
++++ b/etc/oslo-config-generator/glance-registry.conf
+@@ -6,5 +6,5 @@ namespace = oslo.messaging
+ namespace = oslo.db
+ namespace = oslo.db.concurrency
+ namespace = oslo.policy
+-namespace = keystoneclient.middleware.auth_token
++namespace = keystonemiddleware.auth_token
+ namespace = oslo.log
--- a/components/openstack/glance/patches/07-CVE-2015-5251.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,206 +0,0 @@
-From 45be8e1c620c50f3cbca76f561945200a8843bc8 Mon Sep 17 00:00:00 2001
-From: Stuart McLaren <[email protected]>
-Date: Tue, 11 Aug 2015 10:37:09 +0000
-Subject: [PATCH] Prevent image status being directly modified via v1
-
-Users shouldn't be able to change an image's status directly via the
-v1 API.
-
-Some existing consumers of Glance set the x-image-meta-status header in
-requests to the Glance API, eg:
-
-https://github.com/openstack/nova/blob/master/plugins/xenserver/xenapi/etc/xapi.d/plugins/glance#L184
-
-We should try to prevent users setting 'status' via v1, but without breaking
-existing benign API calls such as these.
-
-I've adopted the following approach (which has some prior art in 'protected properties').
-
-If a PUT request is received which contains an x-image-meta-status header:
-
-* The user provided status is ignored if it matches the current image
-  status (this prevents benign calls such as the nova one above from
-  breaking). The usual code (eg 200) will be returned.
-
-* If the user provided status doesn't match the current image status (ie
-  there is a real attempt to change the value) 403 will be returned. This
-  will break any calls which currently intentionally change the status.
-
-APIImpact
-
-Closes-bug: 1482371
-
-Change-Id: I44fadf32abb57c962b67467091c3f51c1ccc25e6
-(cherry picked from commit 4d08db5b6d42323ac1958ef3b7417d875e7bea8c)
-(cherry picked from commit 9beca533f42ae1fc87418de0c360e19bc59b24b5)
----
- glance/api/v1/__init__.py                          |  3 +
- glance/api/v1/images.py                            |  9 +++
- glance/tests/functional/v1/test_api.py             | 89 ++++++++++++++++++++++
- .../integration/legacy_functional/test_v1_api.py   |  2 +
- test-requirements.txt                              |  5 ++
- 5 files changed, 108 insertions(+)
-
-diff --git a/glance/api/v1/__init__.py b/glance/api/v1/__init__.py
-index 74de9aa..9306bbb 100644
---- a/glance/api/v1/__init__.py
-+++ b/glance/api/v1/__init__.py
-@@ -21,3 +21,6 @@ SUPPORTED_PARAMS = ('limit', 'marker', 'sort_key', 'sort_dir')
- 
- # Metadata which only an admin can change once the image is active
- ACTIVE_IMMUTABLE = ('size', 'checksum')
-+
-+# Metadata which cannot be changed (irrespective of the current image state)
-+IMMUTABLE = ('status',)
-diff --git a/glance/api/v1/images.py b/glance/api/v1/images.py
-index 746f8cd..f976f9d 100644
---- a/glance/api/v1/images.py
-+++ b/glance/api/v1/images.py
-@@ -56,6 +56,7 @@ _LW = gettextutils._LW
- SUPPORTED_PARAMS = glance.api.v1.SUPPORTED_PARAMS
- SUPPORTED_FILTERS = glance.api.v1.SUPPORTED_FILTERS
- ACTIVE_IMMUTABLE = glance.api.v1.ACTIVE_IMMUTABLE
-+IMMUTABLE = glance.api.v1.IMMUTABLE
- 
- CONF = cfg.CONF
- CONF.import_opt('disk_formats', 'glance.common.config', group='image_format')
-@@ -895,6 +896,14 @@ class Controller(controller.BaseController):
-                                         request=req,
-                                         content_type="text/plain")
- 
-+        for key in IMMUTABLE:
-+            if (image_meta.get(key) is not None and
-+                    image_meta.get(key) != orig_image_meta.get(key)):
-+                msg = _("Forbidden to modify '%s' of image.") % key
-+                raise HTTPForbidden(explanation=msg,
-+                                    request=req,
-+                                    content_type="text/plain")
-+
-         # The default behaviour for a PUT /images/<IMAGE_ID> is to
-         # override any properties that were previously set. This, however,
-         # leads to a number of issues for the common use case where a caller
-diff --git a/glance/tests/functional/v1/test_api.py b/glance/tests/functional/v1/test_api.py
-index 1486fb3..ad54005 100644
---- a/glance/tests/functional/v1/test_api.py
-+++ b/glance/tests/functional/v1/test_api.py
-@@ -765,3 +765,92 @@ class TestApi(functional.FunctionalTest):
-         self.assertEqual(200, response.status)
- 
-         self.stop_servers()
-+
-+    def test_status_cannot_be_manipulated_directly(self):
-+        self.cleanup()
-+        self.start_servers(**self.__dict__.copy())
-+        headers = minimal_headers('Image1')
-+
-+        # Create a 'queued' image
-+        http = httplib2.Http()
-+        headers = {'Content-Type': 'application/octet-stream',
-+                   'X-Image-Meta-Disk-Format': 'raw',
-+                   'X-Image-Meta-Container-Format': 'bare'}
-+        path = "http://%s:%d/v1/images" % ("127.0.0.1", self.api_port)
-+        response, content = http.request(path, 'POST', headers=headers,
-+                                         body=None)
-+        self.assertEqual(201, response.status)
-+        image = jsonutils.loads(content)['image']
-+        self.assertEqual('queued', image['status'])
-+
-+        # Ensure status of 'queued' image can't be changed
-+        path = "http://%s:%d/v1/images/%s" % ("127.0.0.1", self.api_port,
-+                                              image['id'])
-+        http = httplib2.Http()
-+        headers = {'X-Image-Meta-Status': 'active'}
-+        response, content = http.request(path, 'PUT', headers=headers)
-+        self.assertEqual(403, response.status)
-+        response, content = http.request(path, 'HEAD')
-+        self.assertEqual(200, response.status)
-+        self.assertEqual('queued', response['x-image-meta-status'])
-+
-+        # We allow 'setting' to the same status
-+        http = httplib2.Http()
-+        headers = {'X-Image-Meta-Status': 'queued'}
-+        response, content = http.request(path, 'PUT', headers=headers)
-+        self.assertEqual(200, response.status)
-+        response, content = http.request(path, 'HEAD')
-+        self.assertEqual(200, response.status)
-+        self.assertEqual('queued', response['x-image-meta-status'])
-+
-+        # Make image active
-+        http = httplib2.Http()
-+        headers = {'Content-Type': 'application/octet-stream'}
-+        response, content = http.request(path, 'PUT', headers=headers,
-+                                         body='data')
-+        self.assertEqual(200, response.status)
-+        image = jsonutils.loads(content)['image']
-+        self.assertEqual('active', image['status'])
-+
-+        # Ensure status of 'active' image can't be changed
-+        http = httplib2.Http()
-+        headers = {'X-Image-Meta-Status': 'queued'}
-+        response, content = http.request(path, 'PUT', headers=headers)
-+        self.assertEqual(403, response.status)
-+        response, content = http.request(path, 'HEAD')
-+        self.assertEqual(200, response.status)
-+        self.assertEqual('active', response['x-image-meta-status'])
-+
-+        # We allow 'setting' to the same status
-+        http = httplib2.Http()
-+        headers = {'X-Image-Meta-Status': 'active'}
-+        response, content = http.request(path, 'PUT', headers=headers)
-+        self.assertEqual(200, response.status)
-+        response, content = http.request(path, 'HEAD')
-+        self.assertEqual(200, response.status)
-+        self.assertEqual('active', response['x-image-meta-status'])
-+
-+        # Create a 'queued' image, ensure 'status' header is ignored
-+        http = httplib2.Http()
-+        path = "http://%s:%d/v1/images" % ("127.0.0.1", self.api_port)
-+        headers = {'Content-Type': 'application/octet-stream',
-+                   'X-Image-Meta-Status': 'active'}
-+        response, content = http.request(path, 'POST', headers=headers,
-+                                         body=None)
-+        self.assertEqual(201, response.status)
-+        image = jsonutils.loads(content)['image']
-+        self.assertEqual('queued', image['status'])
-+
-+        # Create an 'active' image, ensure 'status' header is ignored
-+        http = httplib2.Http()
-+        path = "http://%s:%d/v1/images" % ("127.0.0.1", self.api_port)
-+        headers = {'Content-Type': 'application/octet-stream',
-+                   'X-Image-Meta-Disk-Format': 'raw',
-+                   'X-Image-Meta-Status': 'queued',
-+                   'X-Image-Meta-Container-Format': 'bare'}
-+        response, content = http.request(path, 'POST', headers=headers,
-+                                         body='data')
-+        self.assertEqual(201, response.status)
-+        image = jsonutils.loads(content)['image']
-+        self.assertEqual('active', image['status'])
-+        self.stop_servers()
-diff --git a/glance/tests/integration/legacy_functional/test_v1_api.py b/glance/tests/integration/legacy_functional/test_v1_api.py
-index 66455a2..0e5b339 100644
---- a/glance/tests/integration/legacy_functional/test_v1_api.py
-+++ b/glance/tests/integration/legacy_functional/test_v1_api.py
-@@ -357,6 +357,8 @@ class TestApi(base.ApiTest):
-         path = "/v1/images"
-         response, content = self.http.request(path, 'POST', headers=headers)
-         self.assertEqual(response.status, 201)
-+        image = jsonutils.loads(content)['image']
-+        self.assertEqual('active', image['status'])
- 
-         # 2. HEAD image-location
-         # Verify image size is zero and the status is active
-diff --git a/test-requirements.txt b/test-requirements.txt
-index 6d435f2..97affae 100644
---- a/test-requirements.txt
-+++ b/test-requirements.txt
-@@ -29,3 +29,8 @@ xattr>=0.4
- 
- # Documentation
- oslosphinx>=2.2.0  # Apache-2.0
-+
-+# Gate is failing because of an older version of oslo.vmware is installing
-+# PyYAML 3.11. Adding this line here will help moving this patch forward and
-+# fixing Glance's stable/juno gate
-+PyYAML<=3.10,>=3.1.0
--- 
-1.9.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/glance/patches/07-profiler_opts.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,32 @@
+This internal patch is cherry picked from commit
+3bdb51e947e0595d4a0514f3cf29b321cd6f9483 and addresses an issue where
+the [profiler] options appears in the wrong section. This change will
+appear in the initial Mitaka release but has not yet been back-ported
+to Kilo.
+
+--- glance-2015.1.2/glance/opts.py.~2~	2016-01-24 16:51:48.000000000 -0800
++++ glance-2015.1.2/glance/opts.py	2016-01-25 19:10:40.596155047 -0800
+@@ -52,7 +52,6 @@ _api_opts = [
+         glance.common.wsgi.bind_opts,
+         glance.common.wsgi.eventlet_opts,
+         glance.common.wsgi.socket_opts,
+-        glance.common.wsgi.profiler_opts,
+         glance.image_cache.drivers.sqlite.sqlite_opts,
+         glance.image_cache.image_cache_opts,
+         glance.notifier.notifier_opts,
+@@ -67,6 +66,7 @@ _api_opts = [
+      glance.async.taskflow_executor.taskflow_executor_opts),
+     ('store_type_location_strategy',
+      glance.common.location_strategy.store_type.store_type_opts),
++    ('profiler', glance.common.wsgi.profiler_opts),
+     ('paste_deploy', glance.common.config.paste_deploy_opts)
+ ]
+ _registry_opts = [
+@@ -76,6 +76,7 @@ _registry_opts = [
+         glance.common.wsgi.bind_opts,
+         glance.common.wsgi.socket_opts,
+         glance.common.wsgi.eventlet_opts))),
++    ('profiler', glance.common.wsgi.profiler_opts),
+     ('paste_deploy', glance.common.config.paste_deploy_opts)
+ ]
+ _scrubber_opts = [
--- a/components/openstack/glance/patches/08-CVE-2015-5286.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +0,0 @@
-From 5447e8419d92f0cbb14de53b207e772ce9067933 Mon Sep 17 00:00:00 2001
-From: Mike Fedosin <[email protected]>
-Date: Sun, 20 Sep 2015 17:01:22 +0300
-Subject: [PATCH] Cleanup chunks for deleted image if token expired
-
-In patch I47229b366c25367ec1bd48aec684e0880f3dfe60 it was
-introduced the logic that if image was deleted during file
-upload when we want to update image status from 'saving'
-to 'active' it's expected to get Duplicate error and delete
-stale chunks after that. But if user's token is expired
-there will be Unathorized exception and chunks will stay
-in store and clog it.
-And when, the upload operation for such an image is
-completed the operator configured quota can be exceeded.
-
-This patch fixes the issue of left over chunks for an image
-which was deleted from saving status, by correcly handle
-auth exceptions from registry server.
-
-This patch fixes the issue of left over chunks for an image
-which was deleted from saving status, by correctly handle
-auth exceptions from registry server.
-
-Partial-bug: #1498163
-
-Conflicts:
-	glance/api/v1/upload_utils.py
-        (Kilo catches NotFound instead of ImagenotFound)
-
-Change-Id: I17a66eca55bfb83107046910e69c4da01415deec
-(cherry picked from commit 50e3a7c58a9862206d92fef577540c5b144ecbf0)
----
- glance/api/v1/upload_utils.py                    |  8 ++++++++
- glance/api/v2/image_data.py                      | 14 ++++++++++++-
- glance/tests/unit/v1/test_upload_utils.py        | 26 ++++++++++++++++++++++++
- glance/tests/unit/v2/test_image_data_resource.py | 17 ++++++++++++++++
- 4 files changed, 64 insertions(+), 1 deletion(-)
-
-diff --git a/glance/api/v1/upload_utils.py b/glance/api/v1/upload_utils.py
-index e587319..f9bdc29 100644
---- a/glance/api/v1/upload_utils.py
-+++ b/glance/api/v1/upload_utils.py
-@@ -171,6 +171,14 @@ def upload_data_to_store(req, image_meta, image_data, store, notifier):
-                     raise exception.NotFound()
-                 else:
-                     raise
-+
-+        except exception.NotAuthenticated as e:
-+            # Delete image data due to possible token expiration.
-+            LOG.debug("Authentication error - the token may have "
-+                      "expired during file upload. Deleting image data for "
-+                      " %s " % image_id)
-+            initiate_deletion(req, location_data, image_id)
-+            raise webob.exc.HTTPUnauthorized(explanation=e.msg, request=req)
-         except exception.NotFound:
-             msg = _LI("Image %s could not be found after upload. The image may"
-                       " have been deleted during the upload.") % image_id
-diff --git a/glance/api/v2/image_data.py b/glance/api/v2/image_data.py
-index cdfa34b..ee9d0ba 100644
---- a/glance/api/v2/image_data.py
-+++ b/glance/api/v2/image_data.py
-@@ -90,7 +90,19 @@ class ImageDataController(object):
-                 raise webob.exc.HTTPGone(explanation=msg,
-                                          request=req,
-                                          content_type='text/plain')
--
-+            except exception.NotAuthenticated:
-+                msg = (_("Authentication error - the token may have "
-+                         "expired during file upload. Deleting image data for "
-+                         "%s.") % image_id)
-+                LOG.debug(msg)
-+                try:
-+                    image.delete()
-+                except exception.NotAuthenticated:
-+                    # NOTE: Ignore this exception
-+                    pass
-+                raise webob.exc.HTTPUnauthorized(explanation=msg,
-+                                                 request=req,
-+                                                 content_type='text/plain')
-         except ValueError as e:
-             LOG.debug("Cannot save data for image %(id)s: %(e)s",
-                       {'id': image_id, 'e': utils.exception_to_str(e)})
-diff --git a/glance/tests/unit/v1/test_upload_utils.py b/glance/tests/unit/v1/test_upload_utils.py
-index 083cda3..f561dbe 100644
---- a/glance/tests/unit/v1/test_upload_utils.py
-+++ b/glance/tests/unit/v1/test_upload_utils.py
-@@ -323,3 +323,29 @@ class TestUploadUtils(base.StoreClearingUnitTest):
-                                   'metadata': {}}, image_meta['id'])
-                         mock_safe_kill.assert_called_once_with(
-                             req, image_meta['id'], 'saving')
-+
-+    @mock.patch.object(registry, 'update_image_metadata',
-+                       side_effect=exception.NotAuthenticated)
-+    @mock.patch.object(upload_utils, 'initiate_deletion')
-+    def test_activate_image_with_expired_token(
-+            self, mocked_delete, mocked_update):
-+        """Test token expiration during image upload.
-+
-+        If users token expired before image was uploaded then if auth error
-+        was caught from registry during changing image status from 'saving'
-+        to 'active' then it's required to delete all image data.
-+        """
-+        context = mock.Mock()
-+        req = mock.Mock()
-+        req.context = context
-+        with self._get_store_and_notifier() as (location, checksum, image_meta,
-+                                                image_data, store, notifier,
-+                                                update_data):
-+            self.assertRaises(webob.exc.HTTPUnauthorized,
-+                              upload_utils.upload_data_to_store,
-+                              req, image_meta, image_data, store, notifier)
-+            self.assertEqual(2, mocked_update.call_count)
-+            mocked_delete.assert_called_once_with(
-+                req,
-+                {'url': 'file://foo/bar', 'status': 'active', 'metadata': {}},
-+                'c80a1a6c-bd1f-41c5-90ee-81afedb1d58d')
-diff --git a/glance/tests/unit/v2/test_image_data_resource.py b/glance/tests/unit/v2/test_image_data_resource.py
-index a121e82..b7bacab 100644
---- a/glance/tests/unit/v2/test_image_data_resource.py
-+++ b/glance/tests/unit/v2/test_image_data_resource.py
-@@ -183,6 +183,23 @@ class TestImagesController(base.StoreClearingUnitTest):
-         self.assertRaises(webob.exc.HTTPBadRequest, self.controller.upload,
-                           request, unit_test_utils.UUID1, 'YYYY', 4)
- 
-+    def test_upload_with_expired_token(self):
-+        def side_effect(image, from_state=None):
-+            if from_state == 'saving':
-+                raise exception.NotAuthenticated()
-+
-+        mocked_save = mock.Mock(side_effect=side_effect)
-+        mocked_delete = mock.Mock()
-+        request = unit_test_utils.get_fake_request()
-+        image = FakeImage('abcd')
-+        image.delete = mocked_delete
-+        self.image_repo.result = image
-+        self.image_repo.save = mocked_save
-+        self.assertRaises(webob.exc.HTTPUnauthorized, self.controller.upload,
-+                          request, unit_test_utils.UUID1, 'YYYY', 4)
-+        self.assertEqual(3, mocked_save.call_count)
-+        mocked_delete.assert_called_once_with()
-+
-     def test_upload_non_existent_image_during_save_initiates_deletion(self):
-         def fake_save_not_found(self):
-             raise exception.NotFound()
--- 
-1.9.1
-
--- a/components/openstack/glance/patches/09-CVE-2015-5286.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-From 868d9161c60f839cbf53393b804d7c0c41338e5b Mon Sep 17 00:00:00 2001
-From: Mike Fedosin <[email protected]>
-Date: Thu, 1 Oct 2015 18:28:48 +0300
-Subject: [PATCH] Catch NotAuthenticated exception in import task
-
-If glance uses registry as data_api then it's possible
-that token may expire during image import task and Glance
-will have NotUauthenticated exception.
-
-This code adds a correct handling of this exception and
-allows Glance to remove stale chunks from store.
-
-Partial-Bug: #1498163
-
-Change-Id: Ia6e1fe0d27b13b920ee7e728feb5305dec77e066
-(cherry picked from ebdf076cc9bd5d9239cdc96c6e7cecc72f852bbb)
----
- glance/common/scripts/image_import/main.py         |  3 ++-
- .../unit/common/scripts/image_import/test_main.py  | 26 ++++++++++++++++++++++
- 2 files changed, 28 insertions(+), 1 deletion(-)
-
-diff --git a/glance/common/scripts/image_import/main.py b/glance/common/scripts/image_import/main.py
-index ced93c9..5e9dc5c 100644
---- a/glance/common/scripts/image_import/main.py
-+++ b/glance/common/scripts/image_import/main.py
-@@ -109,7 +109,8 @@ def import_image(image_repo, image_factory, task_input, task_id, uri):
-                     "processing.") % {"image_id": image_id,
-                                       "task_id": task_id}
-             raise exception.Conflict(msg)
--    except (exception.Conflict, exception.NotFound):
-+    except (exception.Conflict, exception.NotFound,
-+            exception.NotAuthenticated):
-         with excutils.save_and_reraise_exception():
-             if new_image.locations:
-                 for location in new_image.locations:
-diff --git a/glance/tests/unit/common/scripts/image_import/test_main.py b/glance/tests/unit/common/scripts/image_import/test_main.py
-index a81a66c..78ba8a2 100644
---- a/glance/tests/unit/common/scripts/image_import/test_main.py
-+++ b/glance/tests/unit/common/scripts/image_import/test_main.py
-@@ -16,7 +16,10 @@
- import mock
- import urllib2
- 
-+import glance.common.exception as exception
- from glance.common.scripts.image_import import main as image_import_script
-+from glance.common import store_utils
-+
- import glance.tests.utils as test_utils
- 
- 
-@@ -91,3 +94,26 @@ class TestImageImport(test_utils.BaseTestCase):
-         image = mock.Mock()
-         self.assertRaises(urllib2.URLError,
-                           image_import_script.set_image_data, image, uri, None)
-+
-+    @mock.patch.object(image_import_script, 'create_image')
-+    @mock.patch.object(image_import_script, 'set_image_data')
-+    @mock.patch.object(store_utils, 'delete_image_location_from_backend')
-+    def test_import_image_failed_with_expired_token(
-+            self, mock_delete_data, mock_set_img_data, mock_create_image):
-+        image_id = mock.ANY
-+        locations = ['location']
-+        image = mock.Mock(image_id=image_id, locations=locations)
-+        image_repo = mock.Mock()
-+        image_repo.get.side_effect = [image, exception.NotAuthenticated]
-+        image_factory = mock.ANY
-+        task_input = mock.Mock(image_properties=mock.ANY)
-+        uri = mock.ANY
-+
-+        mock_create_image.return_value = image
-+        self.assertRaises(exception.NotAuthenticated,
-+                          image_import_script.import_image,
-+                          image_repo, image_factory,
-+                          task_input, None, uri)
-+        self.assertEqual(1, mock_set_img_data.call_count)
-+        mock_delete_data.assert_called_once_with(
-+            mock_create_image().context, image_id, 'location')
--- 
-1.9.1
-
--- a/components/openstack/heat/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/heat/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,26 +20,26 @@
 #
 
 #
-# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		heat
-COMPONENT_CODENAME=	juno
-COMPONENT_VERSION=	2014.2.2
-COMPONENT_BE_VERSION=	2014.2
+COMPONENT_CODENAME=	kilo
+COMPONENT_VERSION=	2015.1.2
+COMPONENT_BE_VERSION=	2015.1
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:ac9ad74d9571ec2441d2eec22dbe3ef9f39f7378f62238ad70911e26435d516f
+    sha256:5cf5dab1496304d81b060f1ce58f0c2d36a91c5a3305a4f91ec3057ac229d6ae
 COMPONENT_ARCHIVE_URL=	http://launchpad.net/$(COMPONENT_NAME)/$(COMPONENT_CODENAME)/$(COMPONENT_VERSION)/+download/$(COMPONENT_ARCHIVE)
 COMPONENT_SIG_URL=	$(COMPONENT_ARCHIVE_URL).asc
 COMPONENT_PROJECT_URL=	http://www.openstack.org/
 COMPONENT_BUGDB=	service/heat
 IPS_COMPONENT_VERSION=	0.$(COMPONENT_VERSION)
 
-TPNO=			21821
+TPNO=			25786
 
 include $(WS_MAKE_RULES)/prep.mk
 include $(WS_MAKE_RULES)/setup.py.mk
@@ -61,15 +61,15 @@
 # into the proto directory for pkgdepend(1) to find.
 #
 COMPONENT_POST_INSTALL_ACTION += \
-        ($(MKDIR) $(PROTO_DIR)/lib/svc/manifest/application/openstack; \
-         $(CP) \
-             files/heat-api-cfn.xml \
-             files/heat-api-cloudwatch.xml \
-             files/heat-api.xml \
-             files/heat-db.xml \
-             files/heat-engine.xml \
-             files/heat-upgrade.xml \
-             $(PROTO_DIR)/lib/svc/manifest/application/openstack)
+    ($(MKDIR) $(PROTO_DIR)/lib/svc/manifest/application/openstack; \
+     $(CP) \
+	 files/heat-api-cfn.xml \
+	 files/heat-api-cloudwatch.xml \
+	 files/heat-api.xml \
+	 files/heat-db.xml \
+	 files/heat-engine.xml \
+	 files/heat-upgrade.xml \
+	 $(PROTO_DIR)/lib/svc/manifest/application/openstack)
 
 # common targets
 build:		$(BUILD_NO_ARCH)
@@ -88,10 +88,9 @@
 REQUIRED_PACKAGES += library/python/eventlet-27
 REQUIRED_PACKAGES += library/python/iniparse-27
 REQUIRED_PACKAGES += library/python/oslo.config-27
-REQUIRED_PACKAGES += library/python/python-mysql-27
+REQUIRED_PACKAGES += library/python/oslo.i18n-27
 REQUIRED_PACKAGES += library/python/setuptools-27
 REQUIRED_PACKAGES += library/python/six-27
 REQUIRED_PACKAGES += library/python/sqlalchemy-27
 REQUIRED_PACKAGES += library/python/sqlalchemy-migrate-27
-REQUIRED_PACKAGES += shell/bash
 REQUIRED_PACKAGES += system/core-os
--- a/components/openstack/heat/files/heat-upgrade	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/heat/files/heat-upgrade	Fri Feb 05 17:54:17 2016 -0500
@@ -1,6 +1,6 @@
 #!/usr/bin/python2.7
 
-# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2015, 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,41 +27,10 @@
 from openstack_common import alter_mysql_tables, create_backups, modify_conf, \
     move_conf
 
-
 HEAT_CONF_MAPPINGS = {
     # Deprecated group/name
-    ('DEFAULT', 'stack_user_domain'): ('DEFAULT', 'stack_user_domain_id'),
-    ('DEFAULT', 'rabbit_durable_queues'): ('DEFAULT', 'amqp_durable_queues'),
-    ('rpc_notifier2', 'topics'): ('DEFAULT', 'notification_topics'),
-    ('DEFAULT', 'log_config'): ('DEFAULT', 'log_config_append'),
-    ('DEFAULT', 'logfile'): ('DEFAULT', 'log_file'),
-    ('DEFAULT', 'logdir'): ('DEFAULT', 'log_dir'),
-    ('DEFAULT', 'db_backend'): ('database', 'backend'),
-    ('DEFAULT', 'sql_connection'): ('database', 'connection'),
-    ('DATABASE', 'sql_connection'): ('database', 'connection'),
-    ('sql', 'connection'): ('database', 'connection'),
-    ('DEFAULT', 'sql_idle_timeout'): ('database', 'idle_timeout'),
-    ('DATABASE', 'sql_idle_timeout'): ('database', 'idle_timeout'),
-    ('sql', 'idle_timeout'): ('database', 'idle_timeout'),
-    ('DEFAULT', 'sql_min_pool_size'): ('database', 'min_pool_size'),
-    ('DATABASE', 'sql_min_pool_size'): ('database', 'min_pool_size'),
-    ('DEFAULT', 'sql_max_pool_size'): ('database', 'max_pool_size'),
-    ('DATABASE', 'sql_max_pool_size'): ('database', 'max_pool_size'),
-    ('DEFAULT', 'sql_max_retries'): ('database', 'max_retries'),
-    ('DATABASE', 'sql_max_retries'): ('database', 'max_retries'),
-    ('DEFAULT', 'sql_retry_interval'): ('database', 'retry_interval'),
-    ('DATABASE', 'reconnect_interval'): ('database', 'retry_interval'),
-    ('DEFAULT', 'sql_max_overflow'): ('database', 'max_overflow'),
-    ('DATABASE', 'sqlalchemy_max_overflow'): ('database', 'max_overflow'),
-    ('DEFAULT', 'sql_connection_debug'): ('database', 'connection_debug'),
-    ('DEFAULT', 'sql_connection_trace'): ('database', 'connection_trace'),
-    ('DATABASE', 'sqlalchemy_pool_timeout'): ('database', 'pool_timeout'),
-    ('DEFAULT', 'memcache_servers'):
-        ('keystone_authtoken', 'memcached_servers'),
-    ('DEFAULT', 'matchmaker_ringfile'): ('matchmaker_ring', 'ringfile'),
-    # No longer referenced by the service or causes a DeprecationWarning
-    ('DEFAULT', 'instance_user'): (None, None),
-    ('DEFAULT', 'onready'): (None, None),
+    ('DEFAULT', 'log-format'): (None, None),
+    ('DEFAULT', 'use-sylog'): (None, None),
     ('DEFAULT', 'list_notifier_drivers'): (None, None),
 }
 
@@ -75,17 +44,6 @@
     ('keystone_authtoken', 'signing_dir'),
 ]
 
-HEAT_MOVE_CONFIG = {
-    ('filter:authtoken', 'auth_uri'): ('keystone_authtoken', 'auth_uri'),
-    ('filter:authtoken', 'identity_uri'):
-        ('keystone_authtoken', 'identity_uri'),
-    ('filter:authtoken', 'admin_tenant_name'):
-        ('keystone_authtoken', 'admin_tenant_name'),
-    ('filter:authtoken', 'admin_user'): ('keystone_authtoken', 'admin_user'),
-    ('filter:authtoken', 'admin_password'):
-        ('keystone_authtoken', 'admin_password'),
-}
-
 
 def start():
     # pull out the current version of config/upgrade-id
@@ -115,11 +73,6 @@
 
         modify_conf('/etc/heat/api-paste.ini')
 
-        # before modifying heat.conf, move the [filter:authtoken] entries from
-        # the updated api-paste.ini to the old heat.conf
-        move_conf('/etc/heat/api-paste.ini', '/etc/heat/heat.conf',
-                  HEAT_MOVE_CONFIG)
-
         modify_conf('/etc/heat/heat.conf', HEAT_CONF_MAPPINGS,
                     HEAT_CONF_EXCEPTIONS)
 
--- a/components/openstack/heat/files/heat.conf	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/heat/files/heat.conf	Fri Feb 05 17:54:17 2016 -0500
@@ -1,1364 +1,1401 @@
 [DEFAULT]
 
 #
-# Options defined in heat.common.config
+# From heat.api.middleware.ssl
 #
 
-# Name of the engine node. This can be an opaque identifier.
-# It is not necessarily a hostname, FQDN, or IP address.
+# The HTTP Header that will be used to determine which the original request
+# protocol scheme was, even if it was removed by an SSL terminator proxy.
 # (string value)
-#host=heat
-
+#secure_proxy_ssl_header = X-Forwarded-Proto
 
 #
-# Options defined in heat.common.config
+# From heat.common.config
 #
 
-# The default user for new instances. This option is
-# deprecated and will be removed in the Juno release. If it's
-# empty, Heat will use the default user set up with your cloud
-# image (for OS::Nova::Server) or 'ec2-user' (for
+# Name of the engine node. This can be an opaque identifier. It is not
+# necessarily a hostname, FQDN, or IP address. (string value)
+#host = heat
+
+#
+# From heat.common.config
+#
+
+# The default user for new instances. This option is deprecated and will be
+# removed in the Juno release. If it's empty, Heat will use the default user
+# set up with your cloud image (for OS::Nova::Server) or 'ec2-user' (for
 # AWS::EC2::Instance). (string value)
-instance_user=
-
-# Driver to use for controlling instances. (string value)
-#instance_driver=heat.engine.nova
+instance_user =
 
 # List of directories to search for plug-ins. (list value)
-plugin_dirs=/usr/lib/heat
+plugin_dirs = /usr/lib/heat
 
-# The directory to search for environment files. (string
-# value)
-#environment_dir=/etc/heat/environment.d
+# The directory to search for environment files. (string value)
+#environment_dir = /etc/heat/environment.d
 
-# Select deferred auth method, stored password or trusts.
-# (string value)
-#deferred_auth_method=password
+# Select deferred auth method, stored password or trusts. (string value)
+# Allowed values: password, trusts
+#deferred_auth_method = trusts
 
-# Subset of trustor roles to be delegated to heat. If
-# trusts_delegated_roles is set to [], all roles of a user
-# will be delegated to heat when creating a stack. (list
-# value)
-#trusts_delegated_roles=heat_stack_owner
+# Subset of trustor roles to be delegated to heat. If left unset, all roles of
+# a user will be delegated to heat when creating a stack. (list value)
+#trusts_delegated_roles =
 
-# Maximum resources allowed per top-level stack. (integer
-# value)
-#max_resources_per_stack=1000
+# Maximum resources allowed per top-level stack. -1 stands for unlimited.
+# (integer value)
+#max_resources_per_stack = 1000
 
-# Maximum number of stacks any one tenant may have active at
-# one time. (integer value)
-#max_stacks_per_tenant=100
+# Maximum number of stacks any one tenant may have active at one time. (integer
+# value)
+#max_stacks_per_tenant = 100
 
-# Number of times to retry to bring a resource to a non-error
-# state. Set to 0 to disable retries. (integer value)
-#action_retry_limit=5
+# Number of times to retry to bring a resource to a non-error state. Set to 0
+# to disable retries. (integer value)
+#action_retry_limit = 5
 
-# Controls how many events will be pruned whenever a  stack's
-# events exceed max_events_per_stack. Set this lower to keep
-# more events at the expense of more frequent purges. (integer
+# Controls how many events will be pruned whenever a stack's events exceed
+# max_events_per_stack. Set this lower to keep more events at the expense of
+# more frequent purges. (integer value)
+#event_purge_batch_size = 10
+
+# Maximum events that will be available per stack. Older events will be deleted
+# when this is reached. Set to 0 for unlimited events per stack. (integer
 # value)
-#event_purge_batch_size=10
+#max_events_per_stack = 1000
 
-# Maximum events that will be available per stack. Older
-# events will be deleted when this is reached. Set to 0 for
-# unlimited events per stack. (integer value)
-#max_events_per_stack=1000
+# Timeout in seconds for stack action (ie. create or update). (integer value)
+#stack_action_timeout = 3600
 
-# Timeout in seconds for stack action (ie. create or update).
+# Error wait time in seconds for stack action (ie. create or update). (integer
+# value)
+#error_wait_time = 240
+
+# RPC timeout for the engine liveness check that is used for stack locking.
 # (integer value)
-#stack_action_timeout=3600
+#engine_life_check_timeout = 2
 
-# RPC timeout for the engine liveness check that is used for
-# stack locking. (integer value)
-#engine_life_check_timeout=2
-
-# Enable the legacy OS::Heat::CWLiteAlarm resource. (boolean
-# value)
-#enable_cloud_watch_lite=true
+# Enable the legacy OS::Heat::CWLiteAlarm resource. (boolean value)
+#enable_cloud_watch_lite = true
 
 # Enable the preview Stack Abandon feature. (boolean value)
-#enable_stack_abandon=false
+#enable_stack_abandon = false
 
 # Enable the preview Stack Adopt feature. (boolean value)
-#enable_stack_adopt=false
+#enable_stack_adopt = false
+
+# Enables engine with convergence architecture. All stacks with this option
+# will be created using convergence engine . (boolean value)
+#convergence_engine = false
+
+# Template default for how the server should receive the metadata required for
+# software configuration. POLL_SERVER_CFN will allow calls to the cfn API
+# action DescribeStackResource authenticated with the provided keypair
+# (requires enabled heat-api-cfn). POLL_SERVER_HEAT will allow calls to the
+# Heat API resource-show using the provided keystone credentials (requires
+# keystone v3 API, and configured stack_user_* config options). POLL_TEMP_URL
+# will create and populate a Swift TempURL with metadata for polling (requires
+# object-store endpoint which supports TempURL). (string value)
+# Allowed values: POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL
+#default_software_config_transport = POLL_SERVER_CFN
+
+# Template default for how the server should signal to heat with the deployment
+# output values. CFN_SIGNAL will allow an HTTP POST to a CFN keypair signed URL
+# (requires enabled heat-api-cfn). TEMP_URL_SIGNAL will create a Swift TempURL
+# to be signaled via HTTP PUT (requires object-store endpoint which supports
+# TempURL). HEAT_SIGNAL will allow calls to the Heat API resource-signal using
+# the provided keystone credentials (string value)
+# Allowed values: CFN_SIGNAL, TEMP_URL_SIGNAL, HEAT_SIGNAL
+#default_deployment_signal_transport = CFN_SIGNAL
 
 # Deprecated. (string value)
-#onready=<None>
+#onready = <None>
 
+# When this feature is enabled, scheduler hints identifying the heat stack
+# context of a server or volume resource are passed to the configured
+# schedulers in nova and cinder, for creates done using heat resource types
+# OS::Cinder::Volume, OS::Nova::Server, and AWS::EC2::Instance.
+# heat_root_stack_id will be set to the id of the root stack of the resource,
+# heat_stack_id will be set to the id of the resource's parent stack,
+# heat_stack_name will be set to the name of the resource's parent stack,
+# heat_path_in_stack will be set to a list of tuples, (stackresourcename,
+# stackname) with list[0] being (None, rootstackname), heat_resource_name will
+# be set to the resource's name, and heat_resource_uuid will be set to the
+# resource's orchestration id. (boolean value)
+#stack_scheduler_hints = false
 
 #
-# Options defined in heat.common.config
+# From heat.common.config
 #
 
 # Seconds between running periodic tasks. (integer value)
-#periodic_interval=60
+#periodic_interval = 60
 
 # URL of the Heat metadata server. (string value)
-#heat_metadata_server_url=
+#heat_metadata_server_url =
 
 # URL of the Heat waitcondition server. (string value)
-#heat_waitcondition_server_url=
+#heat_waitcondition_server_url =
 
 # URL of the Heat CloudWatch server. (string value)
-#heat_watch_server_url=
+#heat_watch_server_url =
 
 # Instance connection to CFN/CW API via https. (string value)
-#instance_connection_is_secure=0
+#instance_connection_is_secure = 0
 
-# Instance connection to CFN/CW API validate certs if SSL is
-# used. (string value)
-#instance_connection_https_validate_certificates=1
+# Instance connection to CFN/CW API validate certs if SSL is used. (string
+# value)
+#instance_connection_https_validate_certificates = 1
 
-# Default region name used to get services endpoints. (string
-# value)
-#region_name_for_services=<None>
+# Default region name used to get services endpoints. (string value)
+#region_name_for_services = <None>
 
-# Keystone role for heat template-defined users. (string
-# value)
-#heat_stack_user_role=heat_stack_user
+# Keystone role for heat template-defined users. (string value)
+#heat_stack_user_role = heat_stack_user
 
-# Keystone domain ID which contains heat template-defined
-# users. If this option is set, stack_user_domain_name option
-# will be ignored. (string value)
+# Keystone domain ID which contains heat template-defined users. If this option
+# is set, stack_user_domain_name option will be ignored. (string value)
 # Deprecated group/name - [DEFAULT]/stack_user_domain
-#stack_user_domain_id=<None>
+#stack_user_domain_id = <None>
 
-# Keystone domain name which contains heat template-defined
-# users. If `stack_user_domain_id` option is set, this option
-# is ignored. (string value)
-#stack_user_domain_name=<None>
+# Keystone domain name which contains heat template-defined users. If
+# `stack_user_domain_id` option is set, this option is ignored. (string value)
+#stack_user_domain_name = <None>
 
-# Keystone username, a user with roles sufficient to manage
-# users and projects in the stack_user_domain. (string value)
-#stack_domain_admin=<None>
+# Keystone username, a user with roles sufficient to manage users and projects
+# in the stack_user_domain. (string value)
+#stack_domain_admin = <None>
 
-# Keystone password for stack_domain_admin user. (string
-# value)
-#stack_domain_admin_password=<None>
+# Keystone password for stack_domain_admin user. (string value)
+#stack_domain_admin_password = <None>
 
 # Maximum raw byte size of any template. (integer value)
-#max_template_size=524288
+#max_template_size = 524288
+
+# Maximum depth allowed when using nested stacks. (integer value)
+#max_nested_stack_depth = 5
+
+# Number of heat-engine processes to fork and run. (integer value)
+num_engine_workers = 1
+
+#
+# From heat.common.crypt
+#
 
-# Maximum depth allowed when using nested stacks. (integer
-# value)
-#max_nested_stack_depth=3
+# Key used to encrypt authentication info in the database. Length of this key
+# must be 16, 24 or 32 characters. (string value)
+#auth_encryption_key = notgood but just long enough i t
+
+#
+# From heat.common.heat_keystoneclient
+#
 
-# Number of heat-engine processes to fork and run. (integer
-# value)
-#num_engine_workers=1
+# Fully qualified class name to use as a keystone backend. (string value)
+#keystone_backend = heat.common.heat_keystoneclient.KeystoneClientV3
 
+#
+# From heat.common.wsgi
+#
+
+# Maximum raw byte size of JSON request body. Should be larger than
+# max_template_size. (integer value)
+#max_json_body_size = 1048576
 
 #
-# Options defined in heat.common.wsgi
+# From heat.engine.clients
+#
+
+# Fully qualified class name to use as a client backend. (string value)
+#cloud_backend = heat.engine.clients.OpenStackClients
+
+#
+# From heat.engine.notification
 #
 
-# Maximum raw byte size of JSON request body. Should be larger
-# than max_template_size. (integer value)
-#max_json_body_size=1048576
+# Default notification level for outgoing notifications. (string value)
+#default_notification_level = INFO
 
+# Default publisher_id for outgoing notifications. (string value)
+#default_publisher_id = <None>
+
+# List of drivers to send notifications (DEPRECATED). (multi valued)
+#list_notifier_drivers =
 
 #
-# Options defined in oslo.messaging
+# From heat.engine.resources
+#
+
+# Custom template for the built-in loadbalancer nested stack. (string value)
+#loadbalancer_template = <None>
+
+#
+# From heat.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>
+
+#
+# From heat.openstack.common.policy
 #
 
-# Use durable queues in AMQP. (boolean value)
-# Deprecated group/name - [DEFAULT]/rabbit_durable_queues
-#amqp_durable_queues=false
+# 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
 
-# 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
+# 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. (multi valued)
+#policy_dirs = policy.d
 
-# Qpid broker port. (integer value)
-#qpid_port=5672
-
-# Qpid HA cluster host:port pairs. (list value)
-#qpid_hosts=$qpid_hostname:$qpid_port
+#
+# From oslo.log
+#
 
-# Username for Qpid connection. (string value)
-#qpid_username=
+# Print debugging output (set logging level to DEBUG instead of default WARNING
+# level). (boolean value)
+#debug = false
 
-# Password for Qpid connection. (string value)
-#qpid_password=
-
-# Space separated list of SASL mechanisms to use for auth.
-# (string value)
-#qpid_sasl_mechanisms=
+# Print more verbose output (set logging level to INFO instead of default
+# WARNING level). (boolean value)
+#verbose = false
 
-# Seconds between connection keepalive heartbeats. (integer
-# value)
-#qpid_heartbeat=60
-
-# Transport to use, either 'tcp' or 'ssl'. (string value)
-#qpid_protocol=tcp
+# 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>
 
-# 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
+# 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>
 
-# 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
+# Format string for %%(asctime)s in log records. Default: %(default)s . (string
+# value)
+#log_date_format = %Y-%m-%d %H:%M:%S
 
-# SSL version to use (valid only if SSL enabled). valid values
-# are TLSv1 and SSLv23. SSLv2 and SSLv3 may be available on
-# some distributions. (string value)
-#kombu_ssl_version=
+# (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>
 
-# SSL key file (valid only if SSL enabled). (string value)
-#kombu_ssl_keyfile=
+# (Optional) The base directory used for relative --log-file paths. (string
+# value)
+# Deprecated group/name - [DEFAULT]/logdir
+#log_dir = <None>
 
-# 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=
+# Use syslog for logging. Existing syslog format is DEPRECATED during I, and
+# will change in J to honor RFC5424. (boolean value)
+#use_syslog = false
 
-# 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
+# (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
 
-# The RabbitMQ broker port where a single node is used.
-# (integer value)
-#rabbit_port=5672
+# Syslog facility to receive log lines. (string value)
+#syslog_log_facility = LOG_USER
 
-# RabbitMQ HA cluster host:port pairs. (list value)
-#rabbit_hosts=$rabbit_host:$rabbit_port
+# Log output to standard error. (boolean value)
+#use_stderr = true
 
-# Connect over SSL for RabbitMQ. (boolean value)
-#rabbit_use_ssl=false
+# 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
 
-# The RabbitMQ userid. (string value)
-#rabbit_userid=guest
+# 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
 
-# The RabbitMQ password. (string value)
-#rabbit_password=guest
+# Data to append to log format when level is DEBUG. (string value)
+#logging_debug_format_suffix = %(funcName)s %(pathname)s:%(lineno)d
 
-# The RabbitMQ login method. (string value)
-#rabbit_login_method=AMQPLAIN
+# 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
 
-# The RabbitMQ virtual host. (string value)
-#rabbit_virtual_host=/
+# 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
 
-# How frequently to retry connecting with RabbitMQ. (integer
-# value)
-#rabbit_retry_interval=1
+# Enables or disables publication of error events. (boolean value)
+#publish_errors = false
 
-# How long to backoff for between retries when connecting to
-# RabbitMQ. (integer value)
-#rabbit_retry_backoff=2
+# Enables or disables fatal status of deprecations. (boolean value)
+#fatal_deprecations = false
 
-# Maximum number of RabbitMQ connection retries. Default is 0
-# (infinite retry count). (integer value)
-#rabbit_max_retries=0
+# The format for an instance that is passed with the log message. (string
+# value)
+#instance_format = "[instance: %(uuid)s] "
 
-# Use HA queues in RabbitMQ (x-ha-policy: all). If you change
-# this option, you must wipe the RabbitMQ database. (boolean
+# The format for an instance UUID that is passed with the log message. (string
 # value)
-#rabbit_ha_queues=false
+#instance_uuid_format = "[instance: %(uuid)s] "
 
-# Deprecated, use rpc_backend=kombu+memory or rpc_backend=fake
-# (boolean value)
-#fake_rabbit=false
+#
+# From 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=*
+# 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=oslo.messaging._drivers.matchmaker.MatchMakerLocalhost
+#rpc_zmq_matchmaker = local
 
 # ZeroMQ receiver listening port. (integer value)
-#rpc_zmq_port=9501
+#rpc_zmq_port = 9501
 
 # Number of ZeroMQ contexts, defaults to 1. (integer value)
-#rpc_zmq_contexts=1
+#rpc_zmq_contexts = 1
 
-# Maximum number of ingress messages to locally buffer per
-# topic. Default is unlimited. (integer value)
-#rpc_zmq_topic_backlog=<None>
+# 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
+#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=heat
+# 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). Only supported
-# by impl_zmq. (integer value)
-#rpc_cast_timeout=30
+# 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
+#matchmaker_heartbeat_freq = 300
 
 # Heartbeat time-to-live. (integer value)
-#matchmaker_heartbeat_ttl=600
+#matchmaker_heartbeat_ttl = 600
 
-# Size of RPC greenthread pool. (integer value)
-#rpc_thread_pool_size=64
+# Size of RPC thread pool. (integer value)
+#rpc_thread_pool_size = 64
 
-# Driver or drivers to handle sending notifications. (multi
-# valued)
-#notification_driver=
+# 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
+#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 heat.api.middleware.ssl
-#
-
-# The HTTP Header that will be used to determine which the
-# original request protocol scheme was, even if it was removed
-# by an SSL terminator proxy. (string value)
-#secure_proxy_ssl_header=X-Forwarded-Proto
-
-
-#
-# Options defined in heat.common.crypt
-#
-
-# Encryption key used for authentication info in database.
-# (string value)
-#auth_encryption_key=notgood but just long enough i think
-
-
-#
-# Options defined in heat.common.heat_keystoneclient
-#
-
-# Fully qualified class name to use as a keystone backend.
-# (string value)
-#keystone_backend=heat.common.heat_keystoneclient.KeystoneClientV3
-
-
-#
-# Options defined in heat.engine.clients
-#
+#rpc_response_timeout = 60
 
-# Fully qualified class name to use as a client backend.
-# (string value)
-#cloud_backend=heat.engine.clients.OpenStackClients
-
-
-#
-# Options defined in heat.engine.notification
-#
-
-# Default notification level for outgoing notifications.
-# (string value)
-#default_notification_level=INFO
-
-# Default publisher_id for outgoing notifications. (string
-# value)
-#default_publisher_id=<None>
-
-# List of drivers to send notifications (DEPRECATED). (multi
-# valued)
-#list_notifier_drivers=<None>
-
-
-#
-# Options defined in heat.engine.resources.loadbalancer
-#
-
-# Custom template for the built-in loadbalancer nested stack.
-# (string value)
-#loadbalancer_template=<None>
-
-
-#
-# Options defined in heat.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 heat.openstack.common.lockutils
-#
-
-# Enables or disables inter-process locks. (boolean value)
-#disable_process_locking=false
-
-# Directory to use for lock files. (string value)
-#lock_path=<None>
+# 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>
 
-
-#
-# Options defined in heat.openstack.common.log
-#
-
-# Print debugging output (set logging level to DEBUG instead
-# of default WARNING level). (boolean value)
-#debug=false
-
-# Print more verbose output (set logging level to INFO instead
-# of default WARNING level). (boolean value)
-#verbose=false
-
-# Log output to standard error. (boolean value)
-#use_stderr=true
-
-# Format string to use for log messages with context. (string
-# value)
-#logging_context_format_string=%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s
-
-# Format string to use for log messages without context.
-# (string value)
-#logging_default_format_string=%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s
-
-# Data to append to log format when level is DEBUG. (string
-# value)
-#logging_debug_format_suffix=%(funcName)s %(pathname)s:%(lineno)d
-
-# Prefix each line of exception output with this format.
-# (string value)
-#logging_exception_prefix=%(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s
-
-# List of logger=LEVEL pairs. (list value)
-#default_log_levels=amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN
-
-# Enables or disables publication of error events. (boolean
-# value)
-#publish_errors=false
-
-# Enables or disables fatal status of deprecations. (boolean
-# value)
-#fatal_deprecations=false
-
-# The format for an instance that is passed with the log
-# message.  (string value)
-#instance_format="[instance: %(uuid)s] "
-
-# The format for an instance UUID that is passed with the log
-# message.  (string value)
-#instance_uuid_format="[instance: %(uuid)s] "
+# The messaging driver to use, defaults to rabbit. Other drivers include qpid
+# and zmq. (string value)
+#rpc_backend = rabbit
 
-# 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
-
-
-#
-# Options defined in heat.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
+# 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
 
 
 [auth_password]
 
 #
-# Options defined in heat.common.config
+# From heat.common.config
 #
 
 # Allow orchestration of multiple clouds. (boolean value)
-#multi_cloud=false
+#multi_cloud = false
 
-# Allowed keystone endpoints for auth_uri when multi_cloud is
-# enabled. At least one endpoint needs to be specified. (list
-# value)
-#allowed_auth_uris=
+# Allowed keystone endpoints for auth_uri when multi_cloud is enabled. At least
+# one endpoint needs to be specified. (list value)
+#allowed_auth_uris =
 
 
 [clients]
 
 #
-# Options defined in heat.common.config
+# From heat.common.config
 #
 
-# Type of endpoint in Identity service catalog to use for
-# communication with the OpenStack service. (string value)
-#endpoint_type=publicURL
+# Type of endpoint in Identity service catalog to use for communication with
+# the OpenStack service. (string value)
+#endpoint_type = publicURL
 
-# Optional CA cert file to use in SSL connections. (string
-# value)
-#ca_file=<None>
+# Optional CA cert file to use in SSL connections. (string value)
+#ca_file = <None>
 
-# Optional PEM-formatted certificate chain file. (string
-# value)
-#cert_file=<None>
+# Optional PEM-formatted certificate chain file. (string value)
+#cert_file = <None>
 
-# Optional PEM-formatted file that contains the private key.
-# (string value)
-#key_file=<None>
+# Optional PEM-formatted file that contains the private key. (string value)
+#key_file = <None>
 
-# If set, then the server's certificate will not be verified.
-# (boolean value)
-#insecure=false
+# If set, then the server's certificate will not be verified. (boolean value)
+#insecure = false
 
 
 [clients_ceilometer]
 
 #
-# Options defined in heat.common.config
+# From heat.common.config
 #
 
-# Type of endpoint in Identity service catalog to use for
-# communication with the OpenStack service. (string value)
-#endpoint_type=<None>
+# Type of endpoint in Identity service catalog to use for communication with
+# the OpenStack service. (string value)
+#endpoint_type = <None>
 
-# Optional CA cert file to use in SSL connections. (string
-# value)
-#ca_file=<None>
+# Optional CA cert file to use in SSL connections. (string value)
+#ca_file = <None>
 
-# Optional PEM-formatted certificate chain file. (string
-# value)
-#cert_file=<None>
+# Optional PEM-formatted certificate chain file. (string value)
+#cert_file = <None>
 
-# Optional PEM-formatted file that contains the private key.
-# (string value)
-#key_file=<None>
+# Optional PEM-formatted file that contains the private key. (string value)
+#key_file = <None>
 
-# If set, then the server's certificate will not be verified.
-# (boolean value)
-#insecure=<None>
+# If set, then the server's certificate will not be verified. (boolean value)
+#insecure = <None>
 
 
 [clients_cinder]
 
 #
-# Options defined in heat.common.config
+# From heat.common.config
 #
 
-# Type of endpoint in Identity service catalog to use for
-# communication with the OpenStack service. (string value)
-#endpoint_type=<None>
+# Type of endpoint in Identity service catalog to use for communication with
+# the OpenStack service. (string value)
+#endpoint_type = <None>
 
-# Optional CA cert file to use in SSL connections. (string
-# value)
-#ca_file=<None>
+# Optional CA cert file to use in SSL connections. (string value)
+#ca_file = <None>
 
-# Optional PEM-formatted certificate chain file. (string
-# value)
-#cert_file=<None>
+# Optional PEM-formatted certificate chain file. (string value)
+#cert_file = <None>
 
-# Optional PEM-formatted file that contains the private key.
-# (string value)
-#key_file=<None>
+# Optional PEM-formatted file that contains the private key. (string value)
+#key_file = <None>
 
-# If set, then the server's certificate will not be verified.
-# (boolean value)
-#insecure=<None>
-
+# If set, then the server's certificate will not be verified. (boolean value)
+#insecure = <None>
 
 #
-# Options defined in heat.common.config
+# From heat.common.config
 #
 
 # Allow client's debug log output. (boolean value)
-#http_log_debug=false
+#http_log_debug = false
 
 
 [clients_glance]
 
 #
-# Options defined in heat.common.config
+# From heat.common.config
 #
 
-# Type of endpoint in Identity service catalog to use for
-# communication with the OpenStack service. (string value)
-#endpoint_type=<None>
+# Type of endpoint in Identity service catalog to use for communication with
+# the OpenStack service. (string value)
+#endpoint_type = <None>
 
-# Optional CA cert file to use in SSL connections. (string
-# value)
-#ca_file=<None>
+# Optional CA cert file to use in SSL connections. (string value)
+#ca_file = <None>
 
-# Optional PEM-formatted certificate chain file. (string
-# value)
-#cert_file=<None>
+# Optional PEM-formatted certificate chain file. (string value)
+#cert_file = <None>
 
-# Optional PEM-formatted file that contains the private key.
-# (string value)
-#key_file=<None>
+# Optional PEM-formatted file that contains the private key. (string value)
+#key_file = <None>
 
-# If set, then the server's certificate will not be verified.
-# (boolean value)
-#insecure=<None>
+# If set, then the server's certificate will not be verified. (boolean value)
+#insecure = <None>
 
 
 [clients_heat]
 
 #
-# Options defined in heat.common.config
+# From heat.common.config
 #
 
-# Type of endpoint in Identity service catalog to use for
-# communication with the OpenStack service. (string value)
-#endpoint_type=<None>
+# Type of endpoint in Identity service catalog to use for communication with
+# the OpenStack service. (string value)
+#endpoint_type = <None>
 
-# Optional CA cert file to use in SSL connections. (string
-# value)
-#ca_file=<None>
+# Optional CA cert file to use in SSL connections. (string value)
+#ca_file = <None>
 
-# Optional PEM-formatted certificate chain file. (string
-# value)
-#cert_file=<None>
+# Optional PEM-formatted certificate chain file. (string value)
+#cert_file = <None>
 
-# Optional PEM-formatted file that contains the private key.
-# (string value)
-#key_file=<None>
+# Optional PEM-formatted file that contains the private key. (string value)
+#key_file = <None>
 
-# If set, then the server's certificate will not be verified.
-# (boolean value)
-#insecure=<None>
-
+# If set, then the server's certificate will not be verified. (boolean value)
+#insecure = <None>
 
 #
-# Options defined in heat.common.config
+# From heat.common.config
 #
 
-# Optional heat url in format like
-# http://0.0.0.0:8004/v1/%(tenant_id)s. (string value)
-#url=
+# Optional heat url in format like http://0.0.0.0:8004/v1/%(tenant_id)s.
+# (string value)
+#url =
 
 
 [clients_keystone]
 
 #
-# Options defined in heat.common.config
+# From heat.common.config
 #
 
-# Type of endpoint in Identity service catalog to use for
-# communication with the OpenStack service. (string value)
-#endpoint_type=<None>
+# Type of endpoint in Identity service catalog to use for communication with
+# the OpenStack service. (string value)
+#endpoint_type = <None>
 
-# Optional CA cert file to use in SSL connections. (string
-# value)
-#ca_file=<None>
+# Optional CA cert file to use in SSL connections. (string value)
+#ca_file = <None>
 
-# Optional PEM-formatted certificate chain file. (string
-# value)
-#cert_file=<None>
+# Optional PEM-formatted certificate chain file. (string value)
+#cert_file = <None>
 
-# Optional PEM-formatted file that contains the private key.
-# (string value)
-#key_file=<None>
+# Optional PEM-formatted file that contains the private key. (string value)
+#key_file = <None>
 
-# If set, then the server's certificate will not be verified.
-# (boolean value)
-#insecure=<None>
+# If set, then the server's certificate will not be verified. (boolean value)
+#insecure = <None>
 
 
 [clients_neutron]
 
 #
-# Options defined in heat.common.config
+# From heat.common.config
 #
 
-# Type of endpoint in Identity service catalog to use for
-# communication with the OpenStack service. (string value)
-#endpoint_type=<None>
+# Type of endpoint in Identity service catalog to use for communication with
+# the OpenStack service. (string value)
+#endpoint_type = <None>
 
-# Optional CA cert file to use in SSL connections. (string
-# value)
-#ca_file=<None>
+# Optional CA cert file to use in SSL connections. (string value)
+#ca_file = <None>
 
-# Optional PEM-formatted certificate chain file. (string
-# value)
-#cert_file=<None>
+# Optional PEM-formatted certificate chain file. (string value)
+#cert_file = <None>
 
-# Optional PEM-formatted file that contains the private key.
-# (string value)
-#key_file=<None>
+# Optional PEM-formatted file that contains the private key. (string value)
+#key_file = <None>
 
-# If set, then the server's certificate will not be verified.
-# (boolean value)
-#insecure=<None>
+# If set, then the server's certificate will not be verified. (boolean value)
+#insecure = <None>
 
 
 [clients_nova]
 
 #
-# Options defined in heat.common.config
+# From heat.common.config
 #
 
-# Type of endpoint in Identity service catalog to use for
-# communication with the OpenStack service. (string value)
-#endpoint_type=<None>
+# Type of endpoint in Identity service catalog to use for communication with
+# the OpenStack service. (string value)
+#endpoint_type = <None>
 
-# Optional CA cert file to use in SSL connections. (string
-# value)
-#ca_file=<None>
+# Optional CA cert file to use in SSL connections. (string value)
+#ca_file = <None>
 
-# Optional PEM-formatted certificate chain file. (string
-# value)
-#cert_file=<None>
+# Optional PEM-formatted certificate chain file. (string value)
+#cert_file = <None>
 
-# Optional PEM-formatted file that contains the private key.
-# (string value)
-#key_file=<None>
+# Optional PEM-formatted file that contains the private key. (string value)
+#key_file = <None>
 
-# If set, then the server's certificate will not be verified.
-# (boolean value)
-#insecure=<None>
-
+# If set, then the server's certificate will not be verified. (boolean value)
+#insecure = <None>
 
 #
-# Options defined in heat.common.config
+# From heat.common.config
 #
 
 # Allow client's debug log output. (boolean value)
-#http_log_debug=false
+#http_log_debug = false
+
+
+[clients_sahara]
+
+#
+# From heat.common.config
+#
+
+# Type of endpoint in Identity service catalog to use for communication with
+# the OpenStack service. (string value)
+#endpoint_type = <None>
+
+# Optional CA cert file to use in SSL connections. (string value)
+#ca_file = <None>
+
+# Optional PEM-formatted certificate chain file. (string value)
+#cert_file = <None>
+
+# Optional PEM-formatted file that contains the private key. (string value)
+#key_file = <None>
+
+# If set, then the server's certificate will not be verified. (boolean value)
+#insecure = <None>
 
 
 [clients_swift]
 
 #
-# Options defined in heat.common.config
+# From heat.common.config
 #
 
-# Type of endpoint in Identity service catalog to use for
-# communication with the OpenStack service. (string value)
-#endpoint_type=<None>
+# Type of endpoint in Identity service catalog to use for communication with
+# the OpenStack service. (string value)
+#endpoint_type = <None>
 
-# Optional CA cert file to use in SSL connections. (string
-# value)
-#ca_file=<None>
+# Optional CA cert file to use in SSL connections. (string value)
+#ca_file = <None>
 
-# Optional PEM-formatted certificate chain file. (string
-# value)
-#cert_file=<None>
+# Optional PEM-formatted certificate chain file. (string value)
+#cert_file = <None>
 
-# Optional PEM-formatted file that contains the private key.
-# (string value)
-#key_file=<None>
+# Optional PEM-formatted file that contains the private key. (string value)
+#key_file = <None>
 
-# If set, then the server's certificate will not be verified.
-# (boolean value)
-#insecure=<None>
+# If set, then the server's certificate will not be verified. (boolean value)
+#insecure = <None>
 
 
 [clients_trove]
 
 #
-# Options defined in heat.common.config
+# From heat.common.config
 #
 
-# Type of endpoint in Identity service catalog to use for
-# communication with the OpenStack service. (string value)
-#endpoint_type=<None>
+# Type of endpoint in Identity service catalog to use for communication with
+# the OpenStack service. (string value)
+#endpoint_type = <None>
 
-# Optional CA cert file to use in SSL connections. (string
-# value)
-#ca_file=<None>
+# Optional CA cert file to use in SSL connections. (string value)
+#ca_file = <None>
 
-# Optional PEM-formatted certificate chain file. (string
-# value)
-#cert_file=<None>
+# Optional PEM-formatted certificate chain file. (string value)
+#cert_file = <None>
 
-# Optional PEM-formatted file that contains the private key.
-# (string value)
-#key_file=<None>
+# Optional PEM-formatted file that contains the private key. (string value)
+#key_file = <None>
 
-# If set, then the server's certificate will not be verified.
-# (boolean value)
-#insecure=<None>
+# If set, then the server's certificate will not be verified. (boolean value)
+#insecure = <None>
 
 
 [database]
 
 #
-# Options defined in oslo.db
+# From oslo.db
 #
 
 # 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
+#backend = sqlalchemy
 
-# The SQLAlchemy connection string to use to connect to the
-# database. (string value)
+# 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/heat
+connection = mysql://%SERVICE_USER%:%SERVICE_PASSWORD%@localhost/heat
 
-# The SQLAlchemy connection string to use to connect to the
-# slave database. (string value)
-#slave_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
+# 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)
+# 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
+#idle_timeout = 3600
 
-# Minimum number of SQL connections to keep open in a pool.
-# (integer value)
+# 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
+#min_pool_size = 1
 
-# Maximum number of SQL connections to keep open in a pool.
-# (integer value)
+# 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>
+#max_pool_size = <None>
 
-# Maximum number of database connection retries during
-# startup. Set to -1 to specify an infinite retry count.
-# (integer value)
+# 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
+#max_retries = 10
 
-# Interval between retries of opening a SQL connection.
-# (integer value)
+# 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
+#retry_interval = 10
 
-# If set, use this value for max_overflow with SQLAlchemy.
-# (integer value)
+# 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>
+#max_overflow = <None>
 
-# Verbosity of SQL debugging information: 0=None,
-# 100=Everything. (integer value)
+# Verbosity of SQL debugging information: 0=None, 100=Everything. (integer
+# value)
 # Deprecated group/name - [DEFAULT]/sql_connection_debug
-#connection_debug=0
+#connection_debug = 0
 
-# Add Python stack traces to SQL as comment strings. (boolean
-# value)
+# Add Python stack traces to SQL as comment strings. (boolean value)
 # Deprecated group/name - [DEFAULT]/sql_connection_trace
-#connection_trace=false
+#connection_trace = false
 
-# If set, use this value for pool_timeout with SQLAlchemy.
-# (integer value)
+# If set, use this value for pool_timeout with SQLAlchemy. (integer value)
 # Deprecated group/name - [DATABASE]/sqlalchemy_pool_timeout
-#pool_timeout=<None>
+#pool_timeout = <None>
 
-# Enable the experimental use of database reconnect on
-# connection lost. (boolean value)
-#use_db_reconnect=false
+# Enable the experimental use of database reconnect on connection lost.
+# (boolean value)
+#use_db_reconnect = false
 
-# Seconds between database connection retries. (integer value)
-#db_retry_interval=1
+# Seconds between retries of a database transaction. (integer value)
+#db_retry_interval = 1
 
-# If True, increases the interval between database connection
-# retries up to db_max_retry_interval. (boolean value)
-#db_inc_retry_interval=true
+# 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
-# database connection retries. (integer value)
-#db_max_retry_interval=10
+# If db_inc_retry_interval is set, the maximum seconds between retries of a
+# database operation. (integer value)
+#db_max_retry_interval = 10
 
-# Maximum database connection retries before error is raised.
-# Set to -1 to specify an infinite retry count. (integer
-# value)
-#db_max_retries=20
+# 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
 
 
 [ec2authtoken]
 
 #
-# Options defined in heat.api.aws.ec2token
+# From heat.api.aws.ec2token
 #
 
 # Authentication Endpoint URI. (string value)
-#auth_uri=<None>
+#auth_uri = <None>
 
 # Allow orchestration of multiple clouds. (boolean value)
-#multi_cloud=false
+#multi_cloud = false
+
+# Allowed keystone endpoints for auth_uri when multi_cloud is enabled. At least
+# one endpoint needs to be specified. (list value)
+#allowed_auth_uris =
+
+# Optional PEM-formatted certificate chain file. (string value)
+#cert_file = <None>
+
+# Optional PEM-formatted file that contains the private key. (string value)
+#key_file = <None>
+
+# Optional CA cert file to use in SSL connections. (string value)
+#ca_file = <None>
 
-# Allowed keystone endpoints for auth_uri when multi_cloud is
-# enabled. At least one endpoint needs to be specified. (list
-# value)
-#allowed_auth_uris=
+# If set, then the server's certificate will not be verified. (boolean value)
+#insecure = false
+
+
+[eventlet_opts]
+
+#
+# From heat.common.wsgi
+#
+
+# 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
 
 
 [heat_api]
 
 #
-# Options defined in heat.common.wsgi
+# From heat.common.wsgi
 #
 
-# Address to bind the server. Useful when selecting a
-# particular network interface. (string value)
-#bind_host=0.0.0.0
+# Address to bind the server. Useful when selecting a particular network
+# interface. (string value)
+# Deprecated group/name - [DEFAULT]/bind_host
+#bind_host = 0.0.0.0
 
 # The port on which the server will listen. (integer value)
-#bind_port=8004
+# Deprecated group/name - [DEFAULT]/bind_port
+#bind_port = 8004
 
-# Number of backlog requests to configure the socket with.
-# (integer value)
-#backlog=4096
+# Number of backlog requests to configure the socket with. (integer value)
+# Deprecated group/name - [DEFAULT]/backlog
+#backlog = 4096
 
-# Location of the SSL certificate file to use for SSL mode.
-# (string value)
-#cert_file=<None>
+# Location of the SSL certificate file to use for SSL mode. (string value)
+# Deprecated group/name - [DEFAULT]/cert_file
+#cert_file = <None>
 
-# Location of the SSL key file to use for enabling SSL mode.
-# (string value)
-#key_file=<None>
+# Location of the SSL key file to use for enabling SSL mode. (string value)
+# Deprecated group/name - [DEFAULT]/key_file
+#key_file = <None>
 
 # Number of workers for Heat service. (integer value)
-#workers=0
+# Deprecated group/name - [DEFAULT]/workers
+#workers = 0
 
-# 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
+# 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
 
 
 [heat_api_cfn]
 
 #
-# Options defined in heat.common.wsgi
+# From heat.common.wsgi
 #
 
-# Address to bind the server. Useful when selecting a
-# particular network interface. (string value)
-#bind_host=0.0.0.0
+# Address to bind the server. Useful when selecting a particular network
+# interface. (string value)
+# Deprecated group/name - [DEFAULT]/bind_host
+#bind_host = 0.0.0.0
 
 # The port on which the server will listen. (integer value)
-#bind_port=8000
+# Deprecated group/name - [DEFAULT]/bind_port
+#bind_port = 8000
 
-# Number of backlog requests to configure the socket with.
-# (integer value)
-#backlog=4096
+# Number of backlog requests to configure the socket with. (integer value)
+# Deprecated group/name - [DEFAULT]/backlog
+#backlog = 4096
 
-# Location of the SSL certificate file to use for SSL mode.
-# (string value)
-#cert_file=<None>
+# Location of the SSL certificate file to use for SSL mode. (string value)
+# Deprecated group/name - [DEFAULT]/cert_file
+#cert_file = <None>
 
-# Location of the SSL key file to use for enabling SSL mode.
-# (string value)
-#key_file=<None>
+# Location of the SSL key file to use for enabling SSL mode. (string value)
+# Deprecated group/name - [DEFAULT]/key_file
+#key_file = <None>
 
 # Number of workers for Heat service. (integer value)
-#workers=0
+# Deprecated group/name - [DEFAULT]/workers
+#workers = 0
 
-# 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
+# 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
 
 
 [heat_api_cloudwatch]
 
 #
-# Options defined in heat.common.wsgi
+# From heat.common.wsgi
 #
 
-# Address to bind the server. Useful when selecting a
-# particular network interface. (string value)
-#bind_host=0.0.0.0
+# Address to bind the server. Useful when selecting a particular network
+# interface. (string value)
+# Deprecated group/name - [DEFAULT]/bind_host
+#bind_host = 0.0.0.0
 
 # The port on which the server will listen. (integer value)
-#bind_port=8003
+# Deprecated group/name - [DEFAULT]/bind_port
+#bind_port = 8003
 
-# Number of backlog requests to configure the socket with.
-# (integer value)
-#backlog=4096
+# Number of backlog requests to configure the socket with. (integer value)
+# Deprecated group/name - [DEFAULT]/backlog
+#backlog = 4096
 
-# Location of the SSL certificate file to use for SSL mode.
-# (string value)
-#cert_file=<None>
+# Location of the SSL certificate file to use for SSL mode. (string value)
+# Deprecated group/name - [DEFAULT]/cert_file
+#cert_file = <None>
 
-# Location of the SSL key file to use for enabling SSL mode.
-# (string value)
-#key_file=<None>
+# Location of the SSL key file to use for enabling SSL mode. (string value)
+# Deprecated group/name - [DEFAULT]/key_file
+#key_file = <None>
 
 # Number of workers for Heat service. (integer value)
-#workers=0
+# Deprecated group/name - [DEFAULT]/workers
+#workers = 0
 
-# 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
+# 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
 
 
 [keystone_authtoken]
 
 #
-# Options defined in keystonemiddleware.auth_token
+# From keystonemiddleware.auth_token
 #
 
-# 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
+# Complete public Identity API endpoint. (string value)
+auth_uri = http://127.0.0.1:5000/v2.0/
 
-# 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
+# API version of the admin Identity API endpoint. (string value)
+#auth_version = <None>
 
-# Complete public Identity API endpoint (string value)
-auth_uri=http://127.0.0.1:5000/v2.0/
+# Do not handle authorization requests within the middleware, but delegate the
+# authorization decision to downstream WSGI components. (boolean value)
+#delay_auth_decision = false
 
-# 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/
-
-# API version of the admin Identity API endpoint (string
+# 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. (boolean value)
-#http_connect_timeout=<None>
+#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
+# How many times are we trying to reconnect when communicating with Identity
+# API Server. (integer value)
+#http_request_max_retries = 3
 
-# 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>
-
-# Keystone account username (string value)
-admin_user=%SERVICE_USER%
-
-# Keystone account password (string value)
-admin_password=%SERVICE_PASSWORD%
+# Env key for the swift cache. (string value)
+#cache = <None>
 
-# Keystone service account tenant name to validate user tokens
-# (string value)
-admin_tenant_name=%SERVICE_TENANT_NAME%
-
-# Env key for the swift cache (string value)
-#cache=<None>
+# Required if identity server requires client certificate (string value)
+#certfile = <None>
 
-# Required if Keystone server requires client certificate
-# (string value)
-#certfile=<None>
+# Required if identity server requires client certificate (string value)
+#keyfile = <None>
 
-# Required if Keystone 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>
+# 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
+#insecure = false
+
+# Directory used to cache files related to PKI tokens. (string value)
+signing_dir = /var/lib/heat/keystone-signing
 
-# Directory used to cache files related to PKI tokens (string
-# value)
-signing_dir=/var/lib/heat/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>
 
-# 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
 
-# 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 raise an exception on initialization.
+# (string value)
+#memcache_security_strategy = <None>
 
-# 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, 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) if defined, indicate whether token data should be
-# authenticated or authenticated and encrypted. Acceptable
-# values are MAC or ENCRYPT.  If MAC, token data is
-# authenticated (with HMAC) in the cache. If ENCRYPT, token
-# data is encrypted and authenticated in the cache. If the
-# value is not one of these options or empty, auth_token will
-# raise an exception on initialization. (string value)
-#memcache_security_strategy=<None>
+# (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, mandatory if memcache_security_strategy is
-# defined) this string is used for key derivation. (string
-# value)
-#memcache_secret_key=<None>
+# (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) number of seconds memcached server is considered
-# dead before it is tried again. (integer value)
-#memcache_pool_dead_retry=300
-
-# (optional) max total number of open connections to every
-# memcached server. (integer value)
-#memcache_pool_maxsize=10
+# (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
 
-# (optional) socket timeout in seconds for communicating with
-# a memcache server. (integer value)
-#memcache_pool_socket_timeout=3
+# 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
 
-# (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
+# 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
 
-# (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
+# 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
 
-# (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
+# Prefix to prepend at the beginning of the path. Deprecated, use identity_uri.
+# (string value)
+#auth_admin_prefix =
 
-# (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
+# Host providing the admin Identity API endpoint. Deprecated, use identity_uri.
+# (string value)
+#auth_host = 127.0.0.1
 
-# 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
+# Port of the admin Identity API endpoint. Deprecated, use identity_uri.
+# (integer value)
+#auth_port = 35357
+
+# Protocol of the admin Identity API endpoint (http or https). Deprecated, use
+# identity_uri. (string value)
+#auth_protocol = https
+
+# Complete admin Identity API endpoint. This should specify the unversioned
+# root endpoint e.g. https://localhost:35357/ (string value)
+identity_uri = http://127.0.0.1:35357/
 
-# If true, the revocation list will be checked for cached
-# tokens. This requires that PKI tokens are configured on the
-# Keystone server. (boolean value)
-#check_revocations_for_cached=false
+# 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>
+
+# Service username. (string value)
+admin_user = %SERVICE_USER%
 
-# 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
+# Service user password. (string value)
+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>
 
 
 [matchmaker_redis]
 
 #
-# Options defined in oslo.messaging
+# From oslo.messaging
 #
 
 # Host to locate redis. (string value)
-#host=127.0.0.1
+#host = 127.0.0.1
 
 # Use this port to connect to redis host. (integer value)
-#port=6379
+#port = 6379
 
 # Password for Redis server (optional). (string value)
-#password=<None>
+#password = <None>
 
 
 [matchmaker_ring]
 
 #
-# Options defined in oslo.messaging
+# From oslo.messaging
 #
 
 # Matchmaker ring file (JSON). (string value)
 # Deprecated group/name - [DEFAULT]/matchmaker_ringfile
-#ringfile=/etc/oslo/matchmaker_ring.json
+#ringfile = /etc/oslo/matchmaker_ring.json
 
 
 [oslo_messaging_amqp]
 
 #
-# Options defined in oslo.messaging
+# From oslo.messaging
 #
-# NOTE: Options in this group are supported when using oslo.messaging >=1.5.0.
 
-# address prefix used when sending to a specific server
-# (string value)
-#server_request_prefix=exclusive
+# 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)
-#broadcast_prefix=broadcast
+# 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)
-#group_request_prefix=unicast
+# 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>
+# Deprecated group/name - [amqp1]/container_name
+#container_name = <None>
 
-# Timeout for inactive connections (in seconds) (integer
-# value)
-#idle_timeout=0
+# 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
+# Deprecated group/name - [amqp1]/trace
+#trace = false
 
-# CA certificate PEM file for verifing server certificate
-# (string value)
-#ssl_ca_file=
+# CA certificate PEM file for verifing server certificate (string value)
+# Deprecated group/name - [amqp1]/ssl_ca_file
+#ssl_ca_file =
 
-# Identifying certificate PEM file to present to clients
-# (string value)
-#ssl_cert_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)
-#ssl_key_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)
-#ssl_key_password=<None>
+# 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
+# Deprecated group/name - [amqp1]/allow_insecure_clients
+#allow_insecure_clients = false
+
+
+[oslo_messaging_qpid]
+
+#
+# From 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)
+# Deprecated group/name - [DEFAULT]/amqp_auto_delete
+#amqp_auto_delete = false
+
+# Size of RPC connection pool. (integer value)
+# Deprecated group/name - [DEFAULT]/rpc_conn_pool_size
+#rpc_conn_pool_size = 30
+
+# Qpid broker hostname. (string value)
+# Deprecated group/name - [DEFAULT]/qpid_hostname
+#qpid_hostname = localhost
+
+# Qpid broker port. (integer value)
+# Deprecated group/name - [DEFAULT]/qpid_port
+#qpid_port = 5672
+
+# Qpid HA cluster host:port pairs. (list value)
+# Deprecated group/name - [DEFAULT]/qpid_hosts
+#qpid_hosts = $qpid_hostname:$qpid_port
+
+# Username for Qpid connection. (string value)
+# Deprecated group/name - [DEFAULT]/qpid_username
+#qpid_username =
+
+# Password for Qpid connection. (string value)
+# Deprecated group/name - [DEFAULT]/qpid_password
+#qpid_password =
+
+# Space separated list of SASL mechanisms to use for auth. (string value)
+# Deprecated group/name - [DEFAULT]/qpid_sasl_mechanisms
+#qpid_sasl_mechanisms =
+
+# Seconds between connection keepalive heartbeats. (integer value)
+# Deprecated group/name - [DEFAULT]/qpid_heartbeat
+#qpid_heartbeat = 60
+
+# Transport to use, either 'tcp' or 'ssl'. (string value)
+# Deprecated group/name - [DEFAULT]/qpid_protocol
+#qpid_protocol = tcp
+
+# Whether to disable the Nagle algorithm. (boolean value)
+# Deprecated group/name - [DEFAULT]/qpid_tcp_nodelay
+#qpid_tcp_nodelay = true
+
+# The number of prefetched messages held by receiver. (integer value)
+# Deprecated group/name - [DEFAULT]/qpid_receiver_capacity
+#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)
+# Deprecated group/name - [DEFAULT]/qpid_topology_version
+#qpid_topology_version = 1
+
+
+[oslo_messaging_rabbit]
+
+#
+# From 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)
+# Deprecated group/name - [DEFAULT]/amqp_auto_delete
+#amqp_auto_delete = false
+
+# Size of RPC connection pool. (integer value)
+# Deprecated group/name - [DEFAULT]/rpc_conn_pool_size
+#rpc_conn_pool_size = 30
+
+# SSL version to use (valid only if SSL enabled). Valid values are TLSv1 and
+# SSLv23. SSLv2, SSLv3, TLSv1_1, and TLSv1_2 may be available on some
+# distributions. (string value)
+# Deprecated group/name - [DEFAULT]/kombu_ssl_version
+#kombu_ssl_version =
+
+# SSL key file (valid only if SSL enabled). (string value)
+# Deprecated group/name - [DEFAULT]/kombu_ssl_keyfile
+#kombu_ssl_keyfile =
+
+# SSL cert file (valid only if SSL enabled). (string value)
+# Deprecated group/name - [DEFAULT]/kombu_ssl_certfile
+#kombu_ssl_certfile =
+
+# SSL certification authority file (valid only if SSL enabled). (string value)
+# Deprecated group/name - [DEFAULT]/kombu_ssl_ca_certs
+#kombu_ssl_ca_certs =
+
+# How long to wait before reconnecting in response to an AMQP consumer cancel
+# notification. (floating point value)
+# Deprecated group/name - [DEFAULT]/kombu_reconnect_delay
+#kombu_reconnect_delay = 1.0
+
+# The RabbitMQ broker address where a single node is used. (string value)
+# Deprecated group/name - [DEFAULT]/rabbit_host
+#rabbit_host = localhost
+
+# The RabbitMQ broker port where a single node is used. (integer value)
+# Deprecated group/name - [DEFAULT]/rabbit_port
+#rabbit_port = 5672
+
+# RabbitMQ HA cluster host:port pairs. (list value)
+# Deprecated group/name - [DEFAULT]/rabbit_hosts
+#rabbit_hosts = $rabbit_host:$rabbit_port
+
+# Connect over SSL for RabbitMQ. (boolean value)
+# Deprecated group/name - [DEFAULT]/rabbit_use_ssl
+#rabbit_use_ssl = false
+
+# The RabbitMQ userid. (string value)
+# Deprecated group/name - [DEFAULT]/rabbit_userid
+#rabbit_userid = guest
+
+# The RabbitMQ password. (string value)
+# Deprecated group/name - [DEFAULT]/rabbit_password
+#rabbit_password = guest
+
+# The RabbitMQ login method. (string value)
+# Deprecated group/name - [DEFAULT]/rabbit_login_method
+#rabbit_login_method = AMQPLAIN
+
+# The RabbitMQ virtual host. (string value)
+# Deprecated group/name - [DEFAULT]/rabbit_virtual_host
+#rabbit_virtual_host = /
+
+# How frequently to retry connecting with RabbitMQ. (integer 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 number of RabbitMQ connection retries. Default is 0 (infinite retry
+# count). (integer value)
+# Deprecated group/name - [DEFAULT]/rabbit_max_retries
+#rabbit_max_retries = 0
+
+# Use HA queues in RabbitMQ (x-ha-policy: all). If you change this option, you
+# must wipe the RabbitMQ database. (boolean value)
+# Deprecated group/name - [DEFAULT]/rabbit_ha_queues
+#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)
+# Deprecated group/name - [DEFAULT]/fake_rabbit
+#fake_rabbit = false
 
 
 [paste_deploy]
 
 #
-# Options defined in heat.common.config
+# From heat.common.config
 #
 
 # The flavor to use. (string value)
-#flavor=<None>
+#flavor = <None>
 
 # The API paste config file to use. (string value)
-#api_paste_config=api-paste.ini
+#api_paste_config = api-paste.ini
+
+
+[profiler]
+
+#
+# From heat.common.config
+#
+
+# If False fully disable profiling feature. (boolean value)
+#profiler_enabled = false
+
+# If False do not trace SQL requests. (boolean value)
+#trace_sqlalchemy = false
 
 
 [revision]
 
 #
-# Options defined in heat.common.config
+# From heat.common.config
 #
 
-# Heat build revision. If you would prefer to manage your
-# build revision separately, you can move this section to a
-# different file and add it as another config option. (string
-# value)
-#heat_revision=unknown
-
-
+# Heat build revision. If you would prefer to manage your build revision
+# separately, you can move this section to a different file and add it as
+# another config option. (string value)
+#heat_revision = unknown
--- a/components/openstack/heat/heat.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/heat/heat.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,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.
 #
 
 set name=pkg.fmri \
@@ -28,7 +28,7 @@
 set name=pkg.summary value="OpenStack Heat (Orchestration Service)"
 set name=pkg.description \
     value="OpenStack Heat is a service to orchestrate multiple composite cloud applications using templates, through both an OpenStack-native ReST API and a CloudFormation-compatible Query API."
-set name=pkg.human-version value="Juno $(COMPONENT_VERSION)"
+set name=pkg.human-version value="Kilo $(COMPONENT_VERSION)"
 set name=com.oracle.info.description \
     value="Heat, the OpenStack orchestration service"
 set name=com.oracle.info.tpno value=$(TPNO)
@@ -42,7 +42,7 @@
 set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
 set name=openstack.upgrade-id reboot-needed=true value=$(COMPONENT_BE_VERSION)
 set name=org.opensolaris.arc-caseid value=PSARC/2013/350 value=PSARC/2014/236 \
-    value=PSARC/2015/110
+    value=PSARC/2015/110 value=PSARC/2015/535
 set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
 #
 dir  path=etc/heat owner=heat group=heat mode=0700
@@ -74,12 +74,14 @@
 file files/heat-smf-method path=lib/svc/method/heat-smf-method
 file files/heat-upgrade path=lib/svc/method/heat-upgrade
 file path=usr/bin/heat-manage
-file usr/bin/heat-keystone-setup \
-    path=usr/demo/openstack/keystone/heat-keystone-setup mode=0555
-file usr/bin/heat-api path=usr/lib/heat/heat-api mode=0555
-file usr/bin/heat-api-cfn path=usr/lib/heat/heat-api-cfn mode=0555
-file usr/bin/heat-api-cloudwatch path=usr/lib/heat/heat-api-cloudwatch mode=0555
-file usr/bin/heat-engine path=usr/lib/heat/heat-engine mode=0555
+file usr/bin/heat-api path=usr/lib/heat/heat-api mode=0555 \
+    pkg.depend.bypass-generate=.*/oslo_log.*
+file usr/bin/heat-api-cfn path=usr/lib/heat/heat-api-cfn mode=0555 \
+    pkg.depend.bypass-generate=.*/oslo_log.*
+file usr/bin/heat-api-cloudwatch path=usr/lib/heat/heat-api-cloudwatch \
+    mode=0555 pkg.depend.bypass-generate=.*/oslo_log.*
+file usr/bin/heat-engine path=usr/lib/heat/heat-engine mode=0555 \
+    pkg.depend.bypass-generate=.*/oslo_log.*
 file path=usr/lib/python$(PYVER)/vendor-packages/heat-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
 file path=usr/lib/python$(PYVER)/vendor-packages/heat-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/heat-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
@@ -112,6 +114,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/api/openstack/v1/build_info.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/api/openstack/v1/events.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/api/openstack/v1/resources.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/api/openstack/v1/services.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/api/openstack/v1/software_configs.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/api/openstack/v1/software_deployments.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/api/openstack/v1/stacks.py
@@ -136,6 +139,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/common/custom_backend_auth.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/common/environment_format.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/common/exception.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/common/grouputils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/common/heat_keystoneclient.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/common/i18n.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/common/identifier.py
@@ -144,7 +148,9 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/common/param_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/common/plugin_loader.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/common/policy.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/common/profiler.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/common/serializers.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/common/service_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/common/short_id.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/common/template_format.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/common/timeutils.py
@@ -191,12 +197,27 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/migrate_repo/versions/044_snapshots.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/migrate_repo/versions/045_stack_backup.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/migrate_repo/versions/046_properties_data.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/migrate_repo/versions/047_stack_nested_depth.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/migrate_repo/versions/048_resource_id_server_default_none_psql.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/migrate_repo/versions/049_user_creds_region_name.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/migrate_repo/versions/050_stack_tags.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/migrate_repo/versions/051_service.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/migrate_repo/versions/052_convergence_flag.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/migrate_repo/versions/053_stack_name_tenant_indexes.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/migrate_repo/versions/054_stack_tags_table.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/migrate_repo/versions/055_stack_convg_data.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/migrate_repo/versions/056_convergence_parameter_storage.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/migrate_repo/versions/057_resource_uuid_to_id.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/migrate_repo/versions/058_resource_engine_id.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/migrate_repo/versions/059_sync_point.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/migrate_repo/versions/060_resource_convg_data.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/migrate_repo/versions/061_status_reason_longtext.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/migrate_repo/versions/062_parent_resource.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/migrate_repo/versions/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/migration.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/models.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/mutable.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/types.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sync.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/sqlalchemy/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/db/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/api.py
@@ -226,10 +247,12 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/hot/functions.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/hot/parameters.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/hot/template.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/iso_8601.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/lifecycle_plugin.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/notification/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/notification/autoscaling.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/notification/stack.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/nova_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/parameter_groups.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/parameters.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/parser.py
@@ -237,139 +260,157 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/properties.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resource.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/autoscaling.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/launch_config.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/scaling_policy.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/ceilometer/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/ceilometer/alarm.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/cloud_watch.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/eip.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/glance_image.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/instance.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/internet_gateway.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/iso_8601.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/loadbalancer.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/network_interface.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/neutron/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/neutron/firewall.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/neutron/floatingip.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/neutron/loadbalancer.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/neutron/metering.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/neutron/net.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/neutron/network_gateway.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/neutron/neutron.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/neutron/port.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/neutron/provider_net.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/neutron/router.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/neutron/security_group.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/neutron/subnet.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/neutron/vpnservice.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/nova_floatingip.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/nova_keypair.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/nova_servergroup.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/nova_utils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/autoscaling/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/autoscaling/autoscaling_group.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/autoscaling/launch_config.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/autoscaling/scaling_policy.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/cfn/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/cfn/stack.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/cfn/wait_condition.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/cfn/wait_condition_handle.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/ec2/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/ec2/eip.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/ec2/instance.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/ec2/internet_gateway.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/ec2/network_interface.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/ec2/route_table.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/ec2/security_group.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/ec2/subnet.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/ec2/volume.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/ec2/vpc.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/iam/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/iam/user.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/lb/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/lb/loadbalancer.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/s3/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/aws/s3/s3.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/scaling_policy.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/os_database.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/random_string.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/resource_group.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/route_table.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/s3.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/sahara_cluster.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/sahara_templates.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/security_group.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/server.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/software_config/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/software_config/cloud_config.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/software_config/multi_part.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/software_config/software_component.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/software_config/software_config.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/software_config/software_deployment.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/software_config/structured_config.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/stack.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/subnet.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/swift.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/swiftsignal.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/ceilometer/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/ceilometer/alarm.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/cinder/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/cinder/volume.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/glance/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/glance/glance_image.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/heat/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/heat/access_policy.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/heat/autoscaling_group.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/heat/cloud_config.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/heat/cloud_watch.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/heat/ha_restarter.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/heat/instance_group.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/heat/multi_part.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/heat/random_string.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/heat/remote_stack.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/heat/resource_group.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/heat/scaling_policy.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/heat/software_component.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/heat/software_config.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/heat/software_deployment.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/heat/structured_config.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/heat/swiftsignal.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/heat/wait_condition.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/heat/wait_condition_handle.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/neutron/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/neutron/firewall.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/neutron/floatingip.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/neutron/loadbalancer.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/neutron/metering.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/neutron/net.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/neutron/network_gateway.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/neutron/neutron.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/neutron/port.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/neutron/provider_net.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/neutron/router.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/neutron/security_group.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/neutron/subnet.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/neutron/vpnservice.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/nova/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/nova/nova_floatingip.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/nova/nova_keypair.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/nova/nova_servergroup.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/nova/server.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/sahara/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/sahara/sahara_cluster.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/sahara/sahara_templates.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/swift/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/swift/swift.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/trove/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/trove/os_database.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/openstack/trove/trove_cluster.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/scheduler_hints.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/signal_responder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/stack_resource.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/stack_user.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/template_resource.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/user.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/volume.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/vpc.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/resources/wait_condition.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/rsrc_defn.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/scheduler.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/service.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/signal_responder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/service_software_config.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/service_stack_watch.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/stack.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/stack_lock.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/stack_resource.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/stack_user.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/support.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/template.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/timestamp.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/update.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/volume_tasks.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/watchrule.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/engine/worker.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/objects/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/objects/event.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/objects/fields.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/objects/raw_template.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/objects/resource.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/objects/resource_data.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/objects/service.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/objects/snapshot.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/objects/software_config.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/objects/software_deployment.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/objects/stack.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/objects/stack_lock.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/objects/stack_tag.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/objects/sync_point.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/objects/user_creds.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/objects/watch_data.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/objects/watch_rule.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/README
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/config/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/config/generator.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/context.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/_i18n.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/crypto/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/crypto/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/eventlet_backdoor.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/excutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/fileutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/gettextutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/importutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/jsonutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/local.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/lockutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/log.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/loopingcall.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/middleware/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/middleware/base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/middleware/request_id.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/policy.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/processutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/service.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/sslutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/strutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/systemd.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/threadgroup.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/timeutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/uuidutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/openstack/common/versionutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/rpc/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/rpc/api.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/rpc/client.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/rpc/worker_api.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/rpc/worker_client.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/scaling/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/scaling/cooldown.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heat/scaling/lbutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/scaling/template.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heat/version.py
 dir  path=var/lib/heat owner=heat group=heat mode=0700
 dir  path=var/log/heat owner=heat group=heat mode=0700
-#
 group groupname=heat gid=87
 user username=heat ftpuser=false gcos-field="OpenStack Heat" group=heat \
     home-dir=/var/lib/heat uid=87
 #
 license heat.license license="Apache v2.0"
 
-# force a group dependency on the optional anyjson; pkgdepend work is needed to
-# flush this out.
-depend type=group fmri=library/python/anyjson-$(PYV)
-
-# force a group dependency on the optional netaddr; pkgdepend work is needed to
-# flush this out.
-depend type=group fmri=library/python/netaddr-$(PYV)
-
-# force a group dependency on the optional simplejson; pkgdepend work is needed
-# to flush this out.
-depend type=group fmri=library/python/simplejson-$(PYV)
-
-# force a dependency on babel; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/babel-$(PYV)
+# 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
 
 # force a dependency on ceilometerclient; pkgdepend work is needed to flush this
 # out.
@@ -412,16 +453,28 @@
 # force a dependency on novaclient; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/novaclient-$(PYV)
 
+# force a dependency on oslo.concurrency; pkgdepend work is needed to flush this
+# out.
+depend type=require fmri=library/python/oslo.concurrency-$(PYV)
+
+# force a dependency on oslo.context; pkgdepend work is needed to flush this
+# out.
+depend type=require fmri=library/python/oslo.context-$(PYV)
+
 # force a dependency on oslo.db; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/oslo.db-$(PYV)
 
-# 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.serialization; pkgdepend work is needed to flush
 # this out.
 depend type=require fmri=library/python/oslo.serialization-$(PYV)
@@ -429,6 +482,13 @@
 # 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 osprofiler; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/osprofiler-$(PYV)
+
 # force a dependency on paste.deploy; pkgdepend work is needed to flush this
 # out.
 depend type=require fmri=library/python/paste.deploy-$(PYV)
@@ -436,9 +496,6 @@
 # force a dependency on pbr; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/pbr-$(PYV)
 
-# force a dependency on posix_ipc; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/posix_ipc-$(PYV)
-
 # force a dependency on pyyaml; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/pyyaml-$(PYV)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/heat/patches/02-nopycrypto.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,218 @@
+In-house removal of PyCrypto dependency in Heat. This patch is
+Solaris-specific and not suitable for upstream.
+
+--- heat-2015.1.2/heat/common/crypt.py.~1~	2015-10-13 09:51:53.000000000 -0700
++++ heat-2015.1.2/heat/common/crypt.py	2016-01-28 00:39:30.968509417 -0800
+@@ -13,7 +13,6 @@
+ 
+ import base64
+ 
+-from Crypto.Cipher import AES
+ from oslo_config import cfg
+ 
+ from heat.openstack.common.crypto import utils
+@@ -59,9 +58,11 @@ def heat_decrypt(auth_info):
+     if auth_info is None:
+         return None
+     auth = base64.b64decode(auth_info)
+-    iv = auth[:AES.block_size]
+-    cipher = AES.new(cfg.CONF.auth_encryption_key[:32], AES.MODE_CFB, iv)
+-    res = cipher.decrypt(auth[AES.block_size:])
++    iv = auth[:16]
++    cipher = Cipher(alg='aes_256_cfb', key=cfg.CONF.auth_encryption_key[:32],
++                    iv=iv, op=0)
++    padded = cipher.update(auth[16:])
++    res = padded + cipher.final()
+     return res
+ 
+ 
+--- heat-2015.1.2/heat/openstack/common/crypto/utils.py.~1~	2015-10-13 09:51:50.000000000 -0700
++++ heat-2015.1.2/heat/openstack/common/crypto/utils.py	2016-01-28 00:39:30.935927064 -0800
+@@ -27,8 +27,8 @@
+ 
+ import base64
+ 
+-from Crypto.Hash import HMAC
+-from Crypto import Random
++from M2Crypto import EVP
++from M2Crypto import Rand
+ from oslo_utils import importutils
+ import six
+ 
+@@ -36,6 +36,24 @@ from heat.openstack.common._i18n import
+ 
+ bchr = six.int2byte
+ 
++# Provide a mapping between the names of hash types used by PyCrypto to
++# their digest sizes and the corresponding algorithm name used by
++# M2Crypto/OpenSSL.
++hashmap = {
++    'SHA224':   (28, 'sha224'),
++    'SHA256':   (32, 'sha256'),
++    'SHA384':   (48, 'sha384'),
++    'SHA512':   (64, 'sha512')
++}
++
++# Provide a mapping between the length of a key and the algorithm name
++# used by M2Crypto/OpenSSL.
++algomap = {
++    16:         'aes_128_cbc',
++    24:         'aes_192_cbc',
++    32:         'aes_256_cbc'
++}
++
+ 
+ class CryptoutilsException(Exception):
+     """Generic Exception for Crypto utilities."""
+@@ -52,6 +70,33 @@ class CipherBlockLengthTooBig(Cryptoutil
+         super(CryptoutilsException, self).__init__(message)
+ 
+ 
++class CipherKeyLengthInvalid(CryptoutilsException):
++    """The encryption key length is invalid for AES-CBC."""
++
++    def __init__(self, keylen):
++        msg = _("Encryption key length of %d is invalid for AES-CBC.")
++        message = msg % keylen
++        super(CryptoutilsException, self).__init__(message)
++
++
++class CipherTypeNotSupported(CryptoutilsException):
++    """The encryption cipher type is not supported."""
++
++    def __init__(self, enctype):
++        msg = _("Encryption cipher type %s is not supported")
++        message = msg % enctype
++        super(CryptoutilsException, self).__init__(message)
++
++
++class HashTypeNotSupported(CryptoutilsException):
++    """The message authentication hash function is not supported."""
++
++    def __init__(self, hashtype):
++        msg = _("Message authentication hash function %s is not supported")
++        message = msg % hashtype
++        super(CryptoutilsException, self).__init__(message)
++
++
+ class HKDFOutputLengthTooLong(CryptoutilsException):
+     """The amount of Key Material asked is too much."""
+ 
+@@ -68,8 +113,10 @@ class HKDF(object):
+     """
+ 
+     def __init__(self, hashtype='SHA256'):
+-        self.hashfn = importutils.import_module('Crypto.Hash.' + hashtype)
+-        self.max_okm_length = 255 * self.hashfn.digest_size
++        if hashtype not in hashmap:
++            raise HashTypeNotSupported(hashtype)
++        (self.digest_size, self.algo) = hashmap[hashtype]
++        self.max_okm_length = 255 * self.digest_size
+ 
+     def extract(self, ikm, salt=None):
+         """An extract function that can be used to derive a robust key given
+@@ -80,9 +127,9 @@ class HKDF(object):
+         :param salt: optional salt value (a non-secret random value)
+         """
+         if salt is None:
+-            salt = b'\x00' * self.hashfn.digest_size
++            salt = b'\x00' * self.digest_size
+ 
+-        return HMAC.new(salt, ikm, self.hashfn).digest()
++        return EVP.hmac(salt, ikm, self.algo)
+ 
+     def expand(self, prk, info, length):
+         """An expand function that will return arbitrary length output that can
+@@ -96,12 +143,12 @@ class HKDF(object):
+         if length > self.max_okm_length:
+             raise HKDFOutputLengthTooLong(length, self.max_okm_length)
+ 
+-        N = (length + self.hashfn.digest_size - 1) // self.hashfn.digest_size
++        N = (length + self.digest_size - 1) // self.digest_size
+ 
+         okm = b""
+         tmp = b""
+         for block in range(1, N + 1):
+-            tmp = HMAC.new(prk, tmp + info + bchr(block), self.hashfn).digest()
++            tmp = EVP.hmac(prk, tmp + info + bchr(block), self.algo)
+             okm += tmp
+ 
+         return okm[:length]
+@@ -121,11 +168,15 @@ class SymmetricCrypto(object):
+     """
+ 
+     def __init__(self, enctype='AES', hashtype='SHA256'):
+-        self.cipher = importutils.import_module('Crypto.Cipher.' + enctype)
+-        self.hashfn = importutils.import_module('Crypto.Hash.' + hashtype)
++        if enctype != 'AES':
++            raise CipherTypeNotSupported(enctype)
++        if hashtype not in hashmap:
++            raise HashTypeNotSupported(hashtype)
++        self.algo = hashmap[hashtype][1]
++        self.block_size = 16
+ 
+     def new_key(self, size):
+-        return Random.new().read(size)
++        return Rand.rand_bytes(size)
+ 
+     def encrypt(self, key, msg, b64encode=True):
+         """Encrypt the provided msg and returns the cyphertext optionally
+@@ -142,19 +193,14 @@ class SymmetricCrypto(object):
+ 
+         :returns enc: a block of encrypted data.
+         """
+-        iv = Random.new().read(self.cipher.block_size)
+-        cipher = self.cipher.new(key, self.cipher.MODE_CBC, iv)
+-
+-        # CBC mode requires a fixed block size. Append padding and length of
+-        # padding.
+-        if self.cipher.block_size > MAX_CB_SIZE:
+-            raise CipherBlockLengthTooBig(self.cipher.block_size, MAX_CB_SIZE)
+-        r = len(msg) % self.cipher.block_size
+-        padlen = self.cipher.block_size - r - 1
+-        msg += b'\x00' * padlen
+-        msg += bchr(padlen)
++        keylen = len(key)
++        if keylen not in algomap:
++            raise CipherKeyLengthInvalid(keylen)
++        iv = Rand.rand_bytes(self.block_size)
++        cipher = EVP.Cipher(algomap[keylen], key, iv, 1)
+ 
+-        enc = iv + cipher.encrypt(msg)
++        enc = iv + cipher.update(msg)
++        enc += cipher.final()
+         if b64encode:
+             enc = base64.b64encode(enc)
+         return enc
+@@ -170,14 +216,16 @@ class SymmetricCrypto(object):
+ 
+         :returns plain: the plaintext message.
+         """
++        keylen = len(key)
++        if keylen not in algomap:
++            raise CipherKeyLengthInvalid(keylen)
+         if b64decode:
+             msg = base64.b64decode(msg)
+-        iv = msg[:self.cipher.block_size]
+-        cipher = self.cipher.new(key, self.cipher.MODE_CBC, iv)
++        iv = msg[:self.block_size]
++        cipher = EVP.Cipher(algomap[keylen], key, iv, 0)
+ 
+-        padded = cipher.decrypt(msg[self.cipher.block_size:])
+-        l = ord(padded[-1:]) + 1
+-        plain = padded[:-l]
++        padded = cipher.update(msg[self.block_size:])
++        plain = padded + cipher.final()
+         return plain
+ 
+     def sign(self, key, msg, b64encode=True):
+@@ -190,8 +238,7 @@ class SymmetricCrypto(object):
+ 
+         :returns out: a base64 encoded signature.
+         """
+-        h = HMAC.new(key, msg, self.hashfn)
+-        out = h.digest()
++        out = EVP.hmac(key, msg, self.algo)
+         if b64encode:
+             out = base64.b64encode(out)
+         return out
--- a/components/openstack/heat/patches/02-requirements.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-In-house patch to remove unnecessary dependencies from Heat's
-requirements files. The specific reasons are as follows:
-
-httplib2	Not applicable
-
-kombu		Not applicable
-
-pycrypto	Not applicable to Solaris (M2Crypto used instead)
-
-qpid-python	Not applicable
-
---- heat-2014.2.2/heat.egg-info/requires.txt.~1~	2015-02-05 08:30:41.000000000 -0800
-+++ heat-2014.2.2/heat.egg-info/requires.txt	2015-02-23 14:53:28.397432548 -0800
-@@ -3,10 +3,8 @@ argparse
- Babel>=1.3
- eventlet>=0.15.1,<0.16.0
- greenlet>=0.3.2
--httplib2>=0.7.5
- iso8601>=0.1.9
- keystonemiddleware>=1.0.0
--kombu>=2.5.0
- lxml>=2.3
- netaddr>=0.7.12
- oslo.config>=1.4.0  # Apache-2.0
-@@ -16,7 +14,6 @@ oslo.messaging>=1.4.0,!=1.5.0,<1.6.0
- oslo.utils>=1.0.0                       # Apache-2.0
- PasteDeploy>=1.5.0
- posix_ipc
--pycrypto>=2.6
- python-ceilometerclient>=1.0.6
- python-cinderclient>=1.1.0
- python-glanceclient>=0.14.0
-@@ -28,7 +25,6 @@ python-saharaclient>=0.7.3
- python-swiftclient>=2.2.0
- python-troveclient>=1.0.4
- PyYAML>=3.1.0
--qpid-python
- requests>=1.2.1,!=2.4.0
- Routes>=1.12.3,!=2.0
- six>=1.7.0
---- heat-2014.2.2/requirements.txt.~1~	2015-02-05 08:27:27.000000000 -0800
-+++ heat-2014.2.2/requirements.txt	2015-02-23 14:53:35.541352823 -0800
-@@ -7,10 +7,8 @@ argparse
- Babel>=1.3
- eventlet>=0.15.1,<0.16.0
- greenlet>=0.3.2
--httplib2>=0.7.5
- iso8601>=0.1.9
- keystonemiddleware>=1.0.0
--kombu>=2.5.0
- lxml>=2.3
- netaddr>=0.7.12
- oslo.config>=1.4.0  # Apache-2.0
-@@ -20,7 +18,6 @@ oslo.messaging>=1.4.0,!=1.5.0,<1.6.0
- oslo.utils>=1.0.0                       # Apache-2.0
- PasteDeploy>=1.5.0
- posix_ipc
--pycrypto>=2.6
- python-ceilometerclient>=1.0.6
- python-cinderclient>=1.1.0
- python-glanceclient>=0.14.0
-@@ -32,7 +29,6 @@ python-saharaclient>=0.7.3
- python-swiftclient>=2.2.0
- python-troveclient>=1.0.4
- PyYAML>=3.1.0
--qpid-python
- requests>=1.2.1,!=2.4.0
- Routes>=1.12.3,!=2.0
- six>=1.7.0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/heat/patches/03-requirements.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,78 @@
+In-house patch to remove unnecessary dependencies from Heat's
+requirements files. The specific reasons are as follows:
+
+httplib2	Not applicable
+
+kombu		Not applicable
+
+pycrypto	Not applicable to Solaris (M2Crypto used instead)
+
+qpid-python	Not applicable
+
+cinderclient	push to version 1.3.1
+
+--- heat-2015.1.2/heat.egg-info/requires.txt.orig	2015-10-13 10:55:15.000000000 -0600
++++ heat-2015.1.2/heat.egg-info/requires.txt	2015-11-19 15:08:10.240419209 -0700
+@@ -2,10 +2,8 @@ pbr!=0.7,<1.0,>=0.6
+ Babel>=1.3
+ eventlet!=0.17.0,>=0.16.1
+ greenlet>=0.3.2
+-httplib2>=0.7.5
+ iso8601>=0.1.9
+ keystonemiddleware<1.6.0,>=1.5.0
+-kombu>=2.5.0
+ lxml>=2.3
+ netaddr>=0.7.12
+ oslo.config<1.10.0,>=1.9.3 # Apache-2.0
+@@ -22,9 +20,8 @@ osprofiler>=0.3.0 # Apache-2.0
+ oslo.versionedobjects<0.2.0,>=0.1.1
+ PasteDeploy>=1.5.0
+ posix-ipc
+-pycrypto>=2.6
+ python-ceilometerclient<1.2,>=1.1.1
+-python-cinderclient<1.2.0,>=1.1.0
++python-cinderclient<=1.3.1,>=1.1.0
+ python-glanceclient<0.18.0,>=0.15.0
+ python-heatclient<0.5.0,>=0.3.0
+ python-keystoneclient<1.4.0,>=1.2.0
+@@ -34,7 +31,6 @@ python-saharaclient<0.9.0,>=0.8.0
+ python-swiftclient<2.5.0,>=2.2.0
+ python-troveclient<1.1.0,>=1.0.7
+ PyYAML>=3.1.0
+-qpid-python
+ requests!=2.4.0,>=2.2.0
+ Routes!=2.0,>=1.12.3
+ six>=1.9.0
+
+--- heat-2015.1.2/requirements.txt.orig	2015-10-13 10:51:54.000000000 -0600
++++ heat-2015.1.2/requirements.txt	2015-11-19 15:07:10.611579676 -0700
+@@ -6,10 +6,8 @@ pbr!=0.7,<1.0,>=0.6
+ Babel>=1.3
+ eventlet!=0.17.0,>=0.16.1
+ greenlet>=0.3.2
+-httplib2>=0.7.5
+ iso8601>=0.1.9
+ keystonemiddleware<1.6.0,>=1.5.0
+-kombu>=2.5.0
+ lxml>=2.3
+ netaddr>=0.7.12
+ oslo.config<1.10.0,>=1.9.3 # Apache-2.0
+@@ -26,9 +24,8 @@ osprofiler>=0.3.0 # Apache-2.0
+ oslo.versionedobjects<0.2.0,>=0.1.1
+ PasteDeploy>=1.5.0
+ posix-ipc
+-pycrypto>=2.6
+ python-ceilometerclient<1.2,>=1.1.1
+-python-cinderclient<1.2.0,>=1.1.0
++python-cinderclient<=1.3.1,>=1.1.0
+ python-glanceclient<0.18.0,>=0.15.0
+ python-heatclient<0.5.0,>=0.3.0
+ python-keystoneclient<1.4.0,>=1.2.0
+@@ -38,7 +35,6 @@ python-saharaclient<0.9.0,>=0.8.0
+ python-swiftclient<2.5.0,>=2.2.0
+ python-troveclient<1.1.0,>=1.0.7
+ PyYAML>=3.1.0
+-qpid-python
+ requests!=2.4.0,>=2.2.0
+ Routes!=2.0,>=1.12.3
+ six>=1.9.0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/heat/patches/04-launchpad-1496277.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,236 @@
+This fix will be included in future 2015.1.3 (Kilo) and 5.0.1 (Liberty)
+releases.
+
+From fa19a617a79fd1cb0d892bb8ea87c4b9f6398c34 Mon Sep 17 00:00:00 2001
+From: Zane Bitter <[email protected]>
+Date: Tue, 24 Nov 2015 12:29:38 -0500
+Subject: Load template files only from their known source
+
+Modify get_class to ensure that user-defined resources cannot result in
+reads from the local filesystem. Only resources defined by the operator
+in the global environment should read local files.
+
+To make this work, this patch also adds a separate
+get_class_to_instantiate() method to the Environment.
+
+We were previously using get_class for two different purposes - to get a
+resource plugin on which we could perform introspection to obtain the
+properties and attributes schema, and to get a resource plugin we could
+instantiate to create a Resource object. These are both the same except in
+the case of a TemplateResource, where having two different use cases for
+the same piece of code was adding considerable extra complexity. Combining
+the use cases in this way also made the error handling confusing (leading
+to bug 1518458).
+
+This change separates out the two cases.
+
+Change-Id: I845e7d23c73242a4a4c9c40599690ab705c75caa
+Closes-Bug: #1496277
+Related-Bug: #1447194
+Related-Bug: #1518458
+Related-Bug: #1508115
+(cherry picked from commit 06a713c4456203cd561f16721dc8ac3bcbb37a3
+                       and 26e6d5f6d776c1027c4f27058767952a58d15e25)
+---
+
+--- heat-2015.1.2/heat/engine/environment.py.~1~	2015-10-13 09:51:53.000000000 -0700
++++ heat-2015.1.2/heat/engine/environment.py	2016-01-25 20:50:15.096875593 -0800
+@@ -112,6 +112,12 @@ class ResourceInfo(object):
+     def matches(self, resource_type):
+         return False
+ 
++    def get_class(self):
++        raise NotImplemented
++
++    def get_class_to_instantiate(self):
++        return self.get_class()
++
+     def __str__(self):
+         return '[%s](User:%s) %s -> %s' % (self.description,
+                                            self.user_resource,
+@@ -140,10 +146,20 @@ class TemplateResourceInfo(ResourceInfo)
+ 
+     def get_class(self):
+         from heat.engine.resources import template_resource
++        if self.user_resource:
++            allowed_schemes = template_resource.REMOTE_SCHEMES
++        else:
++            allowed_schemes = template_resource.LOCAL_SCHEMES
++        data = template_resource.TemplateResource.get_template_file(
++            self.template_name,
++            allowed_schemes)
+         env = self.registry.environment
+-        return template_resource.generate_class(str(self.name),
+-                                                self.template_name,
+-                                                env)
++        return template_resource.generate_class_from_template(str(self.name),
++                                                              data, env)
++
++    def get_class_to_instantiate(self):
++        from heat.engine.resources import template_resource
++        return template_resource.TemplateResource
+ 
+ 
+ class MapResourceInfo(ResourceInfo):
+@@ -398,6 +414,13 @@ class ResourceRegistry(object):
+                 return match
+ 
+     def get_class(self, resource_type, resource_name=None):
++        info = self.get_resource_info(resource_type,
++                                      resource_name=resource_name)
++        if info is None:
++            raise exception.ResourceTypeNotFound(type_name=resource_type)
++        return info.get_class()
++
++    def get_class_to_instantiate(self, resource_type, resource_name=None):
+         if resource_type == "":
+             msg = _('Resource "%s" has no type') % resource_name
+             raise exception.StackValidationFailed(message=msg)
+@@ -414,7 +437,7 @@ class ResourceRegistry(object):
+         if info is None:
+             msg = _("Unknown resource Type : %s") % resource_type
+             raise exception.StackValidationFailed(message=msg)
+-        return info.get_class()
++        return info.get_class_to_instantiate()
+ 
+     def as_dict(self):
+         """Return user resources in a dict format."""
+@@ -521,6 +544,10 @@ class Environment(object):
+     def get_class(self, resource_type, resource_name=None):
+         return self.registry.get_class(resource_type, resource_name)
+ 
++    def get_class_to_instantiate(self, resource_type, resource_name=None):
++        return self.registry.get_class_to_instantiate(resource_type,
++                                                      resource_name)
++
+     def get_types(self, support_status=None):
+         return self.registry.get_types(support_status)
+ 
+--- heat-2015.1.2/heat/engine/resource.py.~1~	2015-10-13 09:51:53.000000000 -0700
++++ heat-2015.1.2/heat/engine/resource.py	2016-01-25 20:50:15.097540727 -0800
+@@ -137,14 +137,11 @@ class Resource(object):
+             # Call is already for a subclass, so pass it through
+             ResourceClass = cls
+         else:
+-            from heat.engine.resources import template_resource
+-
+             registry = stack.env.registry
+-            try:
+-                ResourceClass = registry.get_class(definition.resource_type,
+-                                                   resource_name=name)
+-            except exception.NotFound:
+-                ResourceClass = template_resource.TemplateResource
++            ResourceClass = registry.get_class_to_instantiate(
++                definition.resource_type,
++                resource_name=name)
++
+             assert issubclass(ResourceClass, Resource)
+ 
+         return super(Resource, cls).__new__(ResourceClass)
+--- heat-2015.1.2/heat/engine/resources/openstack/heat/resource_group.py.~1~	2015-10-13 09:51:53.000000000 -0700
++++ heat-2015.1.2/heat/engine/resources/openstack/heat/resource_group.py	2016-01-25 20:50:15.098020940 -0800
+@@ -193,11 +193,7 @@ class ResourceGroup(stack_resource.Stack
+         val_templ = template.Template(test_tmpl)
+         res_def = val_templ.resource_definitions(self.stack)["0"]
+         # make sure we can resolve the nested resource type
+-        try:
+-            self.stack.env.get_class(res_def.resource_type)
+-        except exception.NotFound:
+-            # its a template resource
+-            pass
++        self.stack.env.get_class_to_instantiate(res_def.resource_type)
+ 
+         try:
+             name = "%s-%s" % (self.stack.name, self.name)
+--- heat-2015.1.2/heat/engine/resources/template_resource.py.~1~	2015-10-13 09:51:53.000000000 -0700
++++ heat-2015.1.2/heat/engine/resources/template_resource.py	2016-01-25 20:50:15.098440251 -0800
+@@ -26,8 +26,11 @@ from heat.engine.resources import stack_
+ from heat.engine import template
+ 
+ 
+-def generate_class(name, template_name, env):
+-    data = TemplateResource.get_template_file(template_name, ('file',))
++REMOTE_SCHEMES = ('http', 'https')
++LOCAL_SCHEMES = ('file',)
++
++
++def generate_class_from_template(name, data, env):
+     tmpl = template.Template(template_format.parse(data))
+     props, attrs = TemplateResource.get_schemas(tmpl, env.param_defaults)
+     cls = type(name, (TemplateResource,),
+@@ -74,9 +77,9 @@ class TemplateResource(stack_resource.St
+             self.template_name = tri.template_name
+             self.resource_type = tri.name
+             if tri.user_resource:
+-                self.allowed_schemes = ('http', 'https')
++                self.allowed_schemes = REMOTE_SCHEMES
+             else:
+-                self.allowed_schemes = ('http', 'https', 'file')
++                self.allowed_schemes = REMOTE_SCHEMES + LOCAL_SCHEMES
+ 
+         return tri
+ 
+--- heat-2015.1.2/heat/engine/service.py.~1~	2015-10-13 09:51:53.000000000 -0700
++++ heat-2015.1.2/heat/engine/service.py	2016-01-25 20:50:15.099200696 -0800
+@@ -978,8 +978,6 @@ class EngineService(service.Service):
+         """
+         try:
+             resource_class = resources.global_env().get_class(type_name)
+-        except exception.StackValidationFailed:
+-            raise exception.ResourceTypeNotFound(type_name=type_name)
+         except exception.NotFound as ex:
+             raise exception.StackValidationFailed(message=ex.message)
+ 
+@@ -1010,8 +1008,6 @@ class EngineService(service.Service):
+         try:
+             return resources.global_env().get_class(
+                 type_name).resource_to_template(type_name)
+-        except exception.StackValidationFailed:
+-            raise exception.ResourceTypeNotFound(type_name=type_name)
+         except exception.NotFound as ex:
+             raise exception.StackValidationFailed(message=ex.message)
+ 
+--- heat-2015.1.2/heat/tests/test_provider_template.py.~1~	2015-10-13 09:51:54.000000000 -0700
++++ heat-2015.1.2/heat/tests/test_provider_template.py	2016-01-25 20:50:15.099763200 -0800
+@@ -613,7 +613,11 @@ class ProviderTemplateTest(common.HeatTe
+ 
+         env_str = {'resource_registry': {'resources': {'fred': {
+             "OS::ResourceType": test_templ_name}}}}
+-        env = environment.Environment(env_str)
++        global_env = environment.Environment({}, user_env=False)
++        global_env.load(env_str)
++        with mock.patch('heat.engine.resources._environment',
++                        global_env):
++            env = environment.Environment({})
+         cls = env.get_class('OS::ResourceType', 'fred')
+         self.assertNotEqual(template_resource.TemplateResource, cls)
+         self.assertTrue(issubclass(cls, template_resource.TemplateResource))
+@@ -640,10 +644,6 @@ class ProviderTemplateTest(common.HeatTe
+         self.assertTrue(test_templ, "Empty test template")
+         self.m.StubOutWithMock(urlfetch, "get")
+         urlfetch.get(test_templ_name,
+-                     allowed_schemes=('file',)
+-                     ).AndRaise(urlfetch.URLFetchError(
+-                         _('Failed to retrieve template')))
+-        urlfetch.get(test_templ_name,
+                      allowed_schemes=('http', 'https')).AndReturn(test_templ)
+         parsed_test_templ = template_format.parse(test_templ)
+         self.m.ReplayAll()
+--- heat-2015.1.2/heat/tests/test_resource.py.~1~	2015-10-13 09:51:54.000000000 -0700
++++ heat-2015.1.2/heat/tests/test_resource.py	2016-01-25 20:50:15.100592773 -0800
+@@ -67,12 +67,13 @@ class ResourceTest(common.HeatTestCase):
+         self.patch('heat.engine.resource.warnings')
+ 
+     def test_get_class_ok(self):
+-        cls = resources.global_env().get_class('GenericResourceType')
++        cls = resources.global_env().get_class_to_instantiate(
++            'GenericResourceType')
+         self.assertEqual(generic_rsrc.GenericResource, cls)
+ 
+     def test_get_class_noexist(self):
+         self.assertRaises(exception.StackValidationFailed,
+-                          resources.global_env().get_class,
++                          resources.global_env().get_class_to_instantiate,
+                           'NoExistResourceType')
+ 
+     def test_resource_new_ok(self):
--- a/components/openstack/heat/patches/04-nopycrypto.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,217 +0,0 @@
-In-house removal of PyCrypto dependency in Heat. This patch is
-Solaris-specific and not suitable for upstream.
-
---- heat-2014.2.2/heat/common/crypt.py.~1~	2014-12-04 21:02:27.000000000 -0800
-+++ heat-2014.2.2/heat/common/crypt.py	2015-01-31 16:56:20.917251751 -0800
-@@ -13,7 +13,7 @@
- 
- import base64
- 
--from Crypto.Cipher import AES
-+from M2Crypto.EVP import Cipher
- from oslo.config import cfg
- 
- from heat.openstack.common.crypto import utils
-@@ -57,7 +57,9 @@ def heat_decrypt(auth_info):
-     if auth_info is None:
-         return None
-     auth = base64.b64decode(auth_info)
--    iv = auth[:AES.block_size]
--    cipher = AES.new(cfg.CONF.auth_encryption_key[:32], AES.MODE_CFB, iv)
--    res = cipher.decrypt(auth[AES.block_size:])
-+    iv = auth[:16]
-+    cipher = Cipher(alg='aes_256_cfb', key=cfg.CONF.auth_encryption_key[:32],
-+                    iv=iv, op=0)
-+    padded = cipher.update(auth[16:])
-+    res = padded + cipher.final()
-     return res
---- heat-2014.2.2/heat/openstack/common/crypto/utils.py.~1~	2014-12-04 21:02:30.000000000 -0800
-+++ heat-2014.2.2/heat/openstack/common/crypto/utils.py	2015-01-31 16:56:20.917680985 -0800
-@@ -14,8 +14,8 @@
- 
- import base64
- 
--from Crypto.Hash import HMAC
--from Crypto import Random
-+from M2Crypto import EVP
-+from M2Crypto import Rand
- import six
- 
- from heat.openstack.common.gettextutils import _
-@@ -23,6 +23,24 @@ from heat.openstack.common import import
- 
- bchr = six.int2byte
- 
-+# Provide a mapping between the names of hash types used by PyCrypto to
-+# their digest sizes and the corresponding algorithm name used by
-+# M2Crypto/OpenSSL.
-+hashmap = {
-+    'SHA224':   (28, 'sha224'),
-+    'SHA256':   (32, 'sha256'),
-+    'SHA384':   (48, 'sha384'),
-+    'SHA512':   (64, 'sha512')
-+}
-+
-+# Provide a mapping between the length of a key and the algorithm name
-+# used by M2Crypto/OpenSSL.
-+algomap = {
-+    16:         'aes_128_cbc',
-+    24:         'aes_192_cbc',
-+    32:         'aes_256_cbc'
-+}
-+
- 
- class CryptoutilsException(Exception):
-     """Generic Exception for Crypto utilities."""
-@@ -39,6 +57,33 @@ class CipherBlockLengthTooBig(Cryptoutil
-         super(CryptoutilsException, self).__init__(message)
- 
- 
-+class CipherKeyLengthInvalid(CryptoutilsException):
-+    """The encryption key length is invalid for AES-CBC."""
-+
-+    def __init__(self, keylen):
-+        msg = _("Encryption key length of %d is invalid for AES-CBC.")
-+        message = msg % keylen
-+        super(CryptoutilsException, self).__init__(message)
-+
-+
-+class CipherTypeNotSupported(CryptoutilsException):
-+    """The encryption cipher type is not supported."""
-+
-+    def __init__(self, enctype):
-+        msg = _("Encryption cipher type %s is not supported")
-+        message = msg % enctype
-+        super(CryptoutilsException, self).__init__(message)
-+
-+
-+class HashTypeNotSupported(CryptoutilsException):
-+    """The message authentication hash function is not supported."""
-+
-+    def __init__(self, hashtype):
-+        msg = _("Message authentication hash function %s is not supported")
-+        message = msg % hashtype
-+        super(CryptoutilsException, self).__init__(message)
-+
-+
- class HKDFOutputLengthTooLong(CryptoutilsException):
-     """The amount of Key Material asked is too much."""
- 
-@@ -55,8 +100,10 @@ class HKDF(object):
-     """
- 
-     def __init__(self, hashtype='SHA256'):
--        self.hashfn = importutils.import_module('Crypto.Hash.' + hashtype)
--        self.max_okm_length = 255 * self.hashfn.digest_size
-+        if hashtype not in hashmap:
-+            raise HashTypeNotSupported(hashtype)
-+        (self.digest_size, self.algo) = hashmap[hashtype]
-+        self.max_okm_length = 255 * self.digest_size
- 
-     def extract(self, ikm, salt=None):
-         """An extract function that can be used to derive a robust key given
-@@ -67,9 +114,9 @@ class HKDF(object):
-         :param salt: optional salt value (a non-secret random value)
-         """
-         if salt is None:
--            salt = b'\x00' * self.hashfn.digest_size
-+            salt = b'\x00' * self.digest_size
- 
--        return HMAC.new(salt, ikm, self.hashfn).digest()
-+        return EVP.hmac(salt, ikm, self.algo)
- 
-     def expand(self, prk, info, length):
-         """An expand function that will return arbitrary length output that can
-@@ -83,12 +130,12 @@ class HKDF(object):
-         if length > self.max_okm_length:
-             raise HKDFOutputLengthTooLong(length, self.max_okm_length)
- 
--        N = (length + self.hashfn.digest_size - 1) // self.hashfn.digest_size
-+        N = (length + self.digest_size - 1) // self.digest_size
- 
-         okm = b""
-         tmp = b""
-         for block in range(1, N + 1):
--            tmp = HMAC.new(prk, tmp + info + bchr(block), self.hashfn).digest()
-+            tmp = EVP.hmac(prk, tmp + info + bchr(block), self.algo)
-             okm += tmp
- 
-         return okm[:length]
-@@ -108,11 +155,15 @@ class SymmetricCrypto(object):
-     """
- 
-     def __init__(self, enctype='AES', hashtype='SHA256'):
--        self.cipher = importutils.import_module('Crypto.Cipher.' + enctype)
--        self.hashfn = importutils.import_module('Crypto.Hash.' + hashtype)
-+        if enctype != 'AES':
-+            raise CipherTypeNotSupported(enctype)
-+        if hashtype not in hashmap:
-+            raise HashTypeNotSupported(hashtype)
-+        self.algo = hashmap[hashtype][1]
-+        self.block_size = 16
- 
-     def new_key(self, size):
--        return Random.new().read(size)
-+        return Rand.rand_bytes(size)
- 
-     def encrypt(self, key, msg, b64encode=True):
-         """Encrypt the provided msg and returns the cyphertext optionally
-@@ -129,19 +180,14 @@ class SymmetricCrypto(object):
- 
-         :returns enc: a block of encrypted data.
-         """
--        iv = Random.new().read(self.cipher.block_size)
--        cipher = self.cipher.new(key, self.cipher.MODE_CBC, iv)
--
--        # CBC mode requires a fixed block size. Append padding and length of
--        # padding.
--        if self.cipher.block_size > MAX_CB_SIZE:
--            raise CipherBlockLengthTooBig(self.cipher.block_size, MAX_CB_SIZE)
--        r = len(msg) % self.cipher.block_size
--        padlen = self.cipher.block_size - r - 1
--        msg += b'\x00' * padlen
--        msg += bchr(padlen)
-+        keylen = len(key)
-+        if keylen not in algomap:
-+            raise CipherKeyLengthInvalid(keylen)
-+        iv = Rand.rand_bytes(self.block_size)
-+        cipher = EVP.Cipher(algomap[keylen], key, iv, 1)
- 
--        enc = iv + cipher.encrypt(msg)
-+        enc = iv + cipher.update(msg)
-+        enc += cipher.final()
-         if b64encode:
-             enc = base64.b64encode(enc)
-         return enc
-@@ -157,14 +203,16 @@ class SymmetricCrypto(object):
- 
-         :returns plain: the plaintext message.
-         """
-+        keylen = len(key)
-+        if keylen not in algomap:
-+            raise CipherKeyLengthInvalid(keylen)
-         if b64decode:
-             msg = base64.b64decode(msg)
--        iv = msg[:self.cipher.block_size]
--        cipher = self.cipher.new(key, self.cipher.MODE_CBC, iv)
-+        iv = msg[:self.block_size]
-+        cipher = EVP.Cipher(algomap[keylen], key, iv, 0)
- 
--        padded = cipher.decrypt(msg[self.cipher.block_size:])
--        l = ord(padded[-1:]) + 1
--        plain = padded[:-l]
-+        padded = cipher.update(msg[self.block_size:])
-+        plain = padded + cipher.final()
-         return plain
- 
-     def sign(self, key, msg, b64encode=True):
-@@ -177,8 +225,7 @@ class SymmetricCrypto(object):
- 
-         :returns out: a base64 encoded signature.
-         """
--        h = HMAC.new(key, msg, self.hashfn)
--        out = h.digest()
-+        out = EVP.hmac(key, msg, self.algo)
-         if b64encode:
-             out = base64.b64encode(out)
-         return out
--- a/components/openstack/heat/patches/05-neutron-names-required.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/heat/patches/05-neutron-names-required.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -2,20 +2,20 @@
 instead of hyphens on Solaris.  This patch has not yet been submitted
 upstream.
 
---- heat-2014.2.2/heat/engine/resources/neutron/neutron.py.orig     2014-07-22 18:07:26.583195123 -0600
-+++ heat-2014.2.2/heat/engine/resources/neutron/neutron.py  2014-07-22 18:08:49.115350165 -0600
-@@ -11,6 +11,7 @@
- #    License for the specific language governing permissions and limitations
- #    under the License.
+--- heat-2015.1.0/heat/engine/resources/openstack/neutron/neutron.py.orig	2015-05-05 11:16:07.369538369 -0600
++++ heat-2015.1.0/heat/engine/resources/openstack/neutron/neutron.py	2015-05-05 11:17:11.789570983 -0600
+@@ -13,6 +13,7 @@
+ from oslo_utils import uuidutils
+ import six
 
 +import platform
  import warnings
 
  from heat.common import exception
 @@ -188,3 +189,10 @@ class NeutronResource(resource.Resource)
-     def check_delete_complete(self, delete_task):
-         # if the resource was already deleted, delete_task will be None
-         return delete_task is None or delete_task.step()
+             return True
+
+         return self._not_found_in_call(self._show_resource)
 +
 +    def physical_resource_name(self):
 +        name = super(NeutronResource, self).physical_resource_name()
--- a/components/openstack/heat/patches/06-heat-keystone-setup.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-In-house patch to the heat-keystone-setup script installed in
-/usr/demo/openstack/keystone in order to use the standard Solaris UNIX
-commands rather than the GNU ones. It also includes a corrected fix for
-Launchpad bug 1260556. This is a Solaris-specific patch and is not
-suitable for the upstream.
-
---- heat-2014.2.2/bin/heat-keystone-setup.orig	2014-08-07 15:08:53.000000000 -0700
-+++ heat-2014.2.2/bin/heat-keystone-setup	2014-09-20 21:44:41.866870651 -0700
-@@ -2,12 +2,14 @@
- 
- set +e
- 
-+PATH=/usr/bin
-+
- KEYSTONE_CONF=${KEYSTONE_CONF:-/etc/keystone/keystone.conf}
- 
- # Extract some info from Keystone's configuration file
- if [[ -r "$KEYSTONE_CONF" ]]; then
--    CONFIG_SERVICE_TOKEN=$(sed 's/[[:space:]]//g' $KEYSTONE_CONF | grep ^admin_token= | cut -d'=' -f2)
--    CONFIG_ADMIN_PORT=$(sed 's/[[:space:]]//g' $KEYSTONE_CONF | grep ^admin_port= | cut -d'=' -f2)
-+    CONFIG_SERVICE_TOKEN=$(tr -d '[\t ]' < $KEYSTONE_CONF | grep ^admin_token= | cut -d'=' -f2)
-+    CONFIG_ADMIN_PORT=$(tr -d '[\t ]' < $KEYSTONE_CONF | grep ^admin_port= | cut -d'=' -f2)
- fi
- 
- SERVICE_TOKEN=${OS_SERVICE_TOKEN:-$CONFIG_SERVICE_TOKEN}
-@@ -102,7 +104,7 @@ get_data() {
-     shift 3
- 
-     output=$("$@" | \
--           awk -F'|' \
-+           nawk -F'|' \
-                "! /^\+/ && \$${match_column} ~ \"^ *${regex} *\$\" \
-                 { print \$${output_column} }")
- 
-@@ -116,7 +118,7 @@ get_id () {
- get_column_num() {
-     local name=$1
-     shift
--    $@ | awk -F'|' "NR == 2 && /^|/ { for (i=2; i<NF; i++) if (\$i ~ \"^ *${name} *\$\") print (i - 1) }"
-+    $@ | nawk -F'|' "NR == 2 && /^\|/ { for (i=2; i<NF; i++) if (\$i ~ \"^ *${name} *\$\") print (i - 1) }"
- }
- 
- get_user() {
-@@ -208,7 +210,7 @@ delete_endpoint() {
- 
-     local url=$(get_data 1 "${service_type}[.]publicURL" 2 \
-                 get_endpoint $service_type 2>/dev/null | \
--                sed -r "s/[a-f0-9]{32}/$urlsuffix/")
-+                sed "s/[a-f0-9]\{32\}/$urlsuffix/")
- 
-     if [ -n "$url" ]; then
-         local endpoints=$(get_data 3 $url 1 keystone endpoint-list)
-@@ -280,7 +282,7 @@ keystone_setup() {
-     die_if_not_set $LINENO ADMIN_ROLE "Fail to get ADMIN_ROLE by 'keystone role-list' "
-     SERVICE_TENANT=$(get_data 2 service 1 keystone tenant-list)
-     die_if_not_set $LINENO SERVICE_TENANT "Fail to get service tenant 'keystone tenant-list' "
--    SERVICE_PASSWORD=${SERVICE_PASSWORD:-$OS_PASSWORD}
-+    SERVICE_PASSWORD=${SERVICE_PASSWORD:-heat}
-     SERVICE_HOST=${SERVICE_HOST:-localhost}
- 
-     if [[ "$SERVICE_PASSWORD" == "$OS_PASSWORD" ]]; then
--- a/components/openstack/heat/patches/07-heat-plugin-defaults.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/heat/patches/07-heat-plugin-defaults.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,15 +1,17 @@
-In-house patch to remove /usr/lib64/heat from the default list of
-plugin directories searched by Heat.  This patch is Solaris specific
-and not suitable for upstream contribution.
+In-house patch to remove /usr/lib64/heat, /usr/local/lib/heat, and
+/usr/local/lib64/heat from the default list of plugin directories
+searched by Heat. This patch is Solaris specific and not suitable for
+upstream contribution.
 
---- heat-2014.2.2/heat/common/config.py.~1~	2014-12-04 21:02:30.000000000 -0800
-+++ heat-2014.2.2/heat/common/config.py	2014-12-13 13:31:30.350162153 -0800
-@@ -94,7 +94,7 @@ engine_opts = [
-                default='heat.engine.nova',
-                help='Driver to use for controlling instances.'),
+--- heat-2015.1.2/heat/common/config.py.~1~	2015-10-13 09:51:53.000000000 -0700
++++ heat-2015.1.2/heat/common/config.py	2016-01-28 01:27:19.707862313 -0800
+@@ -97,8 +97,7 @@ engine_opts = [
+                       "with your cloud image (for OS::Nova::Server) or "
+                       "'ec2-user' (for AWS::EC2::Instance).")),
      cfg.ListOpt('plugin_dirs',
--                default=['/usr/lib64/heat', '/usr/lib/heat'],
+-                default=['/usr/lib64/heat', '/usr/lib/heat',
+-                         '/usr/local/lib/heat', '/usr/local/lib64/heat'],
 +                default=['/usr/lib/heat'],
-                 help='List of directories to search for plug-ins.'),
+                 help=_('List of directories to search for plug-ins.')),
      cfg.StrOpt('environment_dir',
                 default='/etc/heat/environment.d',
--- a/components/openstack/heat/patches/08-disable-sslv3.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-In-house patch to disable SSLv3 support. 
-(See also upstream bug #1395095)
-
---- heat-2014.2.2/heat/openstack/common/sslutils.py.orig	2015-08-13 21:04:04.591411191 -0400
-+++ heat-2014.2.2/heat/openstack/common/sslutils.py	2015-08-13 20:32:57.198138070 -0400
-@@ -77,8 +77,7 @@
- 
- _SSL_PROTOCOLS = {
-     "tlsv1": ssl.PROTOCOL_TLSv1,
--    "sslv23": ssl.PROTOCOL_SSLv23,
--    "sslv3": ssl.PROTOCOL_SSLv3
-+    "sslv23": ssl.PROTOCOL_SSLv2
- }
- 
- try:
-@@ -86,6 +85,11 @@
- except AttributeError:
-     pass
- 
-+try:
-+    _SSL_PROTOCOLS["sslv3"] = ssl.PROTOCOL_SSLv3
-+except AttributeError:
-+    pass
-+
- 
- def validate_ssl_version(version):
-     key = version.lower()
--- a/components/openstack/horizon/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/horizon/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,44 +20,34 @@
 #
 
 #
-# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 include ../../../make-rules/shared-targets.mk
 
-PATCH_EACH_ARCHIVE = 1
-
 COMPONENT_NAME=		horizon
-COMPONENT_CODENAME=	juno
-COMPONENT_VERSION=	2014.2.2
-COMPONENT_BE_VERSION=	2014.2
+COMPONENT_CODENAME=	kilo
+COMPONENT_VERSION=	2015.1.2
+COMPONENT_BE_VERSION=	2015.1
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:f639cdb8fc7fd26725d689d42c426f09bbd5a77554910800b1315f182879558e
+    sha256:c51029340c953a7355c48a106eb93407287b26f01bed6a64de695d4bda361c07
 COMPONENT_ARCHIVE_URL=	http://launchpad.net/$(COMPONENT_NAME)/$(COMPONENT_CODENAME)/$(COMPONENT_VERSION)/+download/$(COMPONENT_ARCHIVE)
 COMPONENT_SIG_URL=	$(COMPONENT_ARCHIVE_URL).asc
 COMPONENT_PROJECT_URL=	http://www.openstack.org/
 COMPONENT_BUGDB=	service/horizon
 IPS_COMPONENT_VERSION=	0.$(COMPONENT_VERSION)
-COMPONENT_PATCHES=	\
-	01-osprofiler.patch \
-	02-change-angular-imports.patch \
-	03-remove-qunit.patch \
-	04-remove-jasmine.patch \
-	05-disable-unsupported-bootsource.patch \
-	06-remove-security-groups.patch \
-	07-remove-image-source.patch \
-	08-_get_reachable_subnets.patch \
-	11-requirements.patch
 
-TPNO_HORIZON=		21822
+TPNO_HORIZON=		25787
 TPNO_ANGULAR=		21640
+TPNO_ANGULAR_BOOTSTRAP=	23154
+TPNO_ANGULAR_LR_DND=	23155
 TPNO_BOOTSTRAP_DP=	20670
 TPNO_BOOTSTRAP_SCSS=	20671
 TPNO_D3=		20822
-TPNO_FONT_AWESOME=	21641
+TPNO_FONT_AWESOME=	25763
 TPNO_HOGAN=		21827
 TPNO_JQUERY=		21642
 TPNO_JQUERY_MIGRATE=	13315
@@ -65,8 +55,13 @@
 TPNO_JQUERY_QUICKSEARCH=20396
 TPNO_JQUERY_TABLESORTER=20824
 TPNO_JSENCRYPT=		20397
+TPNO_MAGIC_SEARCH=	25994
 TPNO_RICKSHAW=		20673
+TPNO_SMART_TABLE=	23157
 TPNO_SPIN=		20674
+TPNO_TERM_JS=		23158
+
+NUM_EXTRA_ARCHIVES=	1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
 
 #
 # Starting with Juno, Horizon depends on a number of XStatic modules
@@ -124,11 +119,11 @@
 PKG_MACROS +=		VERSION_D3=$(VERSION_D3)
 
 COMPONENT_NAME_6 =	XStatic-Font-Awesome
-VERSION_FONT_AWESOME =	4.2.0.0
+VERSION_FONT_AWESOME =	4.3.0.0
 COMPONENT_SRC_6 =	XStatic-Font-Awesome-$(VERSION_FONT_AWESOME)
 COMPONENT_ARCHIVE_6 =	$(COMPONENT_SRC_6).tar.gz
 COMPONENT_ARCHIVE_HASH_6 = \
-	sha256:b7fdbf1ed316f3a207eeb9ee1c052820e55b4e31d247d81c8ea059e21f555a73
+	sha256:d2c0548990a22744ad20013e1d095de8ba1ea56b1878d8393a721205b03885c3
 COMPONENT_ARCHIVE_URL_6 = $(call pypi_url,6)
 PKG_MACROS +=		VERSION_FONT_AWESOME=$(VERSION_FONT_AWESOME)
 
@@ -213,6 +208,51 @@
 COMPONENT_ARCHIVE_URL_15 = $(call pypi_url,15)
 PKG_MACROS +=		VERSION_SPIN=$(VERSION_SPIN)
 
+COMPONENT_NAME_16 =	XStatic-Angular-lrdragndrop
+VERSION_LR_DND =	1.0.2.2
+COMPONENT_SRC_16 =	XStatic-Angular-lrdragndrop-$(VERSION_LR_DND)
+COMPONENT_ARCHIVE_16 =	XStatic-Angular-lrdragndrop-$(VERSION_LR_DND).tar.gz
+COMPONENT_ARCHIVE_HASH_16 = \
+	sha256:1cf04495981db5dfd5536441e17ec69bb18d624f847ddc203f3259d81b10a77e
+COMPONENT_ARCHIVE_URL_16 = $(call pypi_url,16)
+PKG_MACROS +=		VERSION_ANGULAR_LR_DND=$(VERSION_LR_DND)
+
+COMPONENT_NAME_17 =	XStatic-Magic-Search
+VERSION_MAGIC_SEARCH =	0.2.5.1
+COMPONENT_SRC_17 =	XStatic-Magic-Search-$(VERSION_MAGIC_SEARCH)
+COMPONENT_ARCHIVE_17 =	XStatic-Magic-Search-$(VERSION_MAGIC_SEARCH).tar.gz
+COMPONENT_ARCHIVE_HASH_17 = \
+	sha256:9b2f35a5792f4e763e6dc319036e3676f3e18f46153096f3ab5e507177ec007e
+COMPONENT_ARCHIVE_URL_17 = $(call pypi_url,17)
+PKG_MACROS +=		VERSION_MAGIC_SEARCH=$(VERSION_MAGIC_SEARCH)
+
+COMPONENT_NAME_18 =	XStatic-smart-table
+VERSION_SMART_TABLE =	1.4.5.3
+COMPONENT_SRC_18 =	XStatic-smart-table-$(VERSION_SMART_TABLE)
+COMPONENT_ARCHIVE_18 =	XStatic-smart-table-$(VERSION_SMART_TABLE).tar.gz
+COMPONENT_ARCHIVE_HASH_18 = \
+	sha256:573bdff0b1ec88dd81b7f92c1b46fda4dd1b92cde94817837d61e62c9b20a8b6
+COMPONENT_ARCHIVE_URL_18 = $(call pypi_url,18)
+PKG_MACROS +=		VERSION_SMART_TABLE=$(VERSION_SMART_TABLE)
+
+COMPONENT_NAME_19 =	XStatic-term.js
+VERSION_TERM_JS =	0.0.4.2
+COMPONENT_SRC_19 =	XStatic-term.js-$(VERSION_TERM_JS)
+COMPONENT_ARCHIVE_19 =	XStatic-term.js-$(VERSION_TERM_JS).tar.gz
+COMPONENT_ARCHIVE_HASH_19 = \
+	sha256:1ed5c1cd4de60d6f290a032bfc7cdc4261d8d36cb7788b2b0a610551bbda15ec
+COMPONENT_ARCHIVE_URL_19 = $(call pypi_url,19)
+PKG_MACROS +=		VERSION_TERM_JS=$(VERSION_TERM_JS)
+
+COMPONENT_NAME_20 =	XStatic-Angular-Bootstrap
+VERSION_ANGULAR_BS =	0.11.0.2
+COMPONENT_SRC_20 =	XStatic-Angular-Bootstrap-$(VERSION_ANGULAR_BS)
+COMPONENT_ARCHIVE_20 =	XStatic-Angular-Bootstrap-$(VERSION_ANGULAR_BS).tar.gz
+COMPONENT_ARCHIVE_HASH_20 = \
+	sha256:cbe428bf04c000460776b521f6ace0455e9f3f20135499e9aa2f4af693dc7b3e
+COMPONENT_ARCHIVE_URL_20 = $(call pypi_url,20)
+PKG_MACROS +=		VERSION_ANGULAR_BS=$(VERSION_ANGULAR_BS)
+
 include $(WS_MAKE_RULES)/prep.mk
 include $(WS_MAKE_RULES)/setup.py.mk
 include $(WS_MAKE_RULES)/ips.mk
@@ -230,9 +270,12 @@
 PROTO_PYTHON_LIB =	$(PROTO_DIR)$(PYTHON_LIB)
 
 # Copy the Oracle branding files and Django app customizations into place
+
 COMPONENT_POST_INSTALL_ACTION += \
 	($(MKDIR) $(PROTO_PYTHON_LIB)/openstack_dashboard/templates/solaris; \
-	 $(CP) files/branding/css/solaris.css \
+	 $(MKDIR) \
+	     $(PROTO_PYTHON_LIB)/openstack_dashboard/static/dashboard/css; \
+	 $(CP) files/branding/css/* \
 	     $(PROTO_PYTHON_LIB)/openstack_dashboard/static/dashboard/css; \
 	 $(CP) files/branding/img/* \
 	     $(PROTO_PYTHON_LIB)/openstack_dashboard/static/dashboard/img; \
@@ -251,14 +294,17 @@
 	 $(TOUCH) $(PROTO_PYTHON_LIB)/xstatic/__init__.py; \
 	 $(TOUCH) $(PROTO_PYTHON_LIB)/xstatic/pkg/__init__.py; \
 	 cd $(PROTO_PYTHON_LIB)/openstack_dashboard; \
+	 cp $(SOURCE_DIR)/openstack_dashboard/local/local_settings.py.example \
+	     $(PROTO_PYTHON_LIB)/openstack_dashboard/local/local_settings.py; \
+	 echo "WEBROOT = '/horizon/'\nSTATIC_ROOT = 'static'\n" >> \
+	     $(PROTO_PYTHON_LIB)/openstack_dashboard/local/local_settings.py; \
 	 $(ENV) PYTHONPATH=$(PROTO_PYTHON_LIB) ./manage.py \
 	     collectstatic --noinput; \
 	 $(ENV) PYTHONPATH=$(PROTO_PYTHON_LIB) ./manage.py compress --force; \
-	 $(CP) -R $(PROTO_PYTHON_LIB)/static \
-	     $(PROTO_PYTHON_LIB)/openstack_dashboard; \
 	 $(RM) -r \
 	     $(PROTO_PYTHON_LIB)/XStatic* \
 	     $(PROTO_PYTHON_LIB)/openstack_dashboard/local/.secret_key_store \
+	     $(PROTO_PYTHON_LIB)/openstack_dashboard/local/local_settings.py \
 	     $(PROTO_PYTHON_LIB)/openstack_dashboard/manage.py \
 	     $(PROTO_PYTHON_LIB)/static \
 	     $(PROTO_PYTHON_LIB)/xstatic); (( $$? )) && exit 1;
@@ -329,6 +375,7 @@
 REQUIRED_PACKAGES += library/python/lockfile-27
 REQUIRED_PACKAGES += library/python/neutronclient-27
 REQUIRED_PACKAGES += library/python/novaclient-27
+REQUIRED_PACKAGES += library/python/oslo.concurrency-27
 REQUIRED_PACKAGES += library/python/oslo.config-27
 REQUIRED_PACKAGES += library/python/requests-27
 REQUIRED_PACKAGES += library/python/saharaclient-27
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/horizon/angular-bootstrap.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,22 @@
+LICENSE:
+The MIT License
+
+Copyright (c) 2012-2014 the AngularUI Team, https://github.com/organizations/angular-ui/teams/291112
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/horizon/angular-lrdragndrop.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,23 @@
+lrDragNDrop module is under MIT license:
+
+> Copyright (C) 2013 Laurent Renard.
+>
+> Permission is hereby granted, free of charge, to any person
+> obtaining a copy of this software and associated documentation files
+> (the "Software"), to deal in the Software without restriction,
+> including without limitation the rights to use, copy, modify, merge,
+> publish, distribute, sublicense, and/or sell copies of the Software,
+> and to permit persons to whom the Software is furnished to do so,
+> subject to the following conditions:
+>
+> The above copyright notice and this permission notice shall be
+> included in all copies or substantial portions of the Software.
+>
+> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+> NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+> BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+> ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+> CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+> SOFTWARE.
--- a/components/openstack/horizon/files/branding/css/solaris.css	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10864 +0,0 @@
-/*
- *  Copyright (c) 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.
- */
-
-html {
-  font-family: sans-serif;
-  -ms-text-size-adjust: 100%;
-  -webkit-text-size-adjust: 100%;
-}
-
-body {
-	margin: 0;
-}
-
-article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; }
-
-audio, canvas, progress, video {
-	display: inline-block;
-	vertical-align: baseline; 
-}
-
-audio:not([controls]) {
-	display: none;
-	height: 0; 
-}
-
-[hidden], template {
-	display: none; 
-}
-
-a {
-	background: transparent; 
-}
-
-a:active, a:hover {
-	outline: 0; 
-}
-
-abbr[title] {
-	border-bottom: 1px dotted; }
-
-b, strong {
-	font-weight: bold; }
-
-dfn {
-	font-style: italic; }
-
-h1 {
-	font-size: 2em;
-	margin: 0.67em 0; }
-
-mark {
-	background: #ff0;
-	color: #000; }
-
-small {
-font-size: 80%; }
-
-sub, sup {
-	font-size: 75%;
-	line-height: 0;
-                              position: relative;
-                              vertical-align: baseline; }
-
-sup {
-	top: -0.5em; }
-
-sub {
-	bottom: -0.25em; }
-
-img {
-	border: 0; }
-	
-svg:not(:root) {
-	overflow: hidden; }
-
-figure {
-	margin: 1em 40px; }
-
-hr {
-	-moz-box-sizing: content-box;
-	box-sizing: content-box;
-	height: 0; }
-
-pre {
-	overflow: auto; }
-
-code, kbd, pre, samp {
-	font-family: monospace, monospace;
-	font-size: 1em; }
-
-button, input, optgroup, select, textarea {
-	color: inherit;
-	font: inherit;
-	margin: 0; }
-
-button {
-	overflow: visible; }
-
-button, select {
-	text-transform: none; }
-
-button, html input[type="button"], 
-input[type="reset"], 
-input[type="submit"] {
-	-webkit-appearance: button;
-	cursor: pointer; }
-
-button[disabled], html input[disabled] {
-	cursor: default; }
-
-button::-moz-focus-inner, input::-moz-focus-inner {
-	border: 0;
-	padding: 0; }
-
-input {
-	line-height: normal; }
-
-input[type="checkbox"], input[type="radio"] {
-	box-sizing: border-box;
-	padding: 0; }
-
-input[type="number"]::-webkit-inner-spin-button,
-input[type="number"]::-webkit-outer-spin-button {
-	height: auto; }
-
-input[type="search"] {
-	-webkit-appearance: textfield;
-	-moz-box-sizing: content-box;
-	-webkit-box-sizing: content-box;
-	box-sizing: content-box; }
-
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
-	-webkit-appearance: none; }
-
-fieldset {
-	border: 1px solid #c0c0c0;
-	margin: 0 2px;
-	padding: 0.35em 0.625em 0.75em; }
-
-legend {
-	border: 0;
-	padding: 0; }
-
-textarea {
-	overflow: auto; }
-
-optgroup {
-	font-weight: bold; }
-
-table {
-	border-collapse: collapse;
-	border-spacing: 0; }
-
-td, th {
-	padding: 0; 
-}
-	
-@media print {
-	* {
-		text-shadow: none !important;
-	    color: #000 !important;
-	    background: transparent !important;
-	    box-shadow: none !important;   
-	    }
-	a, a:visited {
-		text-decoration: underline;   
-	}
-	a[href]:after {
-	content: " (" attr(href) ")";   }
-	abbr[title]:after {
-		content: " (" attr(title) ")";   }
-	a[href^="javascript:"]:after, a[href^="#"]:after {
-	content: "";   }
-	pre, blockquote {
-		border: 1px solid #999;
-	    page-break-inside: avoid;   }
-	thead {
-		display: table-header-group;   }
-	tr, img {
-		page-break-inside: avoid;   }
-	img {
-		max-width: 100% !important;   }
-	p, h2, h3 {
-		orphans: 3;
-	   	widows: 3;   }
-	h2, h3 {
-		page-break-after: avoid;   }
-	select {
-		background: #fff !important;   }
-		.navbar {
-		display: none;   }
-	  	.table td, .table th {
-		background-color: #fff !important;  
-	}
-	.btn > .caret, .dropup > .btn > .caret {
-		border-top-color: #000 !important;   }
-	.label {
-		border: 1px solid #000;   }
-	.table {
-		border-collapse: collapse !important;   
-	}
-	.table-bordered th, .table-bordered td {
-		border: 1px solid #ddd !important;   
-	}
-}
-
-@font-face {
-  font-family: 'Glyphicons Halflings';
-  src: url('/static/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.eot?7ad17c6085de');
-  src: url('/static/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.eot?&7ad17c6085de#iefix') format('embedded-opentype'),
-    url('/static/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff?68ed1dac06bf') format('woff'),
-    url('/static/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.ttf?e49d52e74b76') format('truetype'),
-    url('/static/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.svg?32941d633004#glyphicons_halflingsregular') format('svg'); }
-
-.glyphicon, .membership .role_dropdown li i {
-	position: relative;
-	top: 1px;
-	display: inline-block;
-	font-family: 'Glyphicons Halflings';
-	font-style: normal;
-	font-weight: normal;
-	line-height: 1;
-	-webkit-font-smoothing: antialiased;
-	-moz-osx-font-smoothing: grayscale; }
-
-.glyphicon-asterisk:before {
-	content: "\2a"; }
-
-.glyphicon-plus:before {
-  content: "\2b"; }
-
-.glyphicon-euro:before {
-  content: "\20ac"; }
-
-.glyphicon-minus:before {
-  content: "\2212"; }
-
-.glyphicon-cloud:before {
-  content: "\2601"; }
-
-.glyphicon-envelope:before {
-  content: "\2709"; }
-
-.glyphicon-pencil:before {
-  content: "\270f"; }
-
-.glyphicon-glass:before {
-  content: "\e001"; }
-
-.glyphicon-music:before {
-  content: "\e002"; }
-
-.glyphicon-search:before {
-  content: "\e003"; }
-
-.glyphicon-heart:before {
-  content: "\e005"; }
-
-.glyphicon-star:before {
-  content: "\e006"; }
-
-.glyphicon-star-empty:before {
-  content: "\e007"; }
-
-.glyphicon-user:before {
-  content: "\e008"; }
-
-.glyphicon-film:before {
-  content: "\e009"; }
-
-.glyphicon-th-large:before {
-  content: "\e010"; }
-
-.glyphicon-th:before {
-  content: "\e011"; }
-
-.glyphicon-th-list:before {
-  content: "\e012"; }
-
-.glyphicon-ok:before {
-  content: "\e013"; }
-
-.glyphicon-remove:before {
-  content: "\e014"; }
-
-.glyphicon-zoom-in:before {
-  content: "\e015"; }
-
-.glyphicon-zoom-out:before {
-  content: "\e016"; }
-
-.glyphicon-off:before {
-  content: "\e017"; }
-
-.glyphicon-signal:before {
-  content: "\e018"; }
-
-.glyphicon-cog:before {
-  content: "\e019"; 
-  margin: 0px 4px 0px 0px;  
-}
-
-.glyphicon-trash:before {
-  content: "\e020"; }
-
-.glyphicon-home:before {
-  content: "\e021"; }
-
-.glyphicon-file:before {
-  content: "\e022"; }
-
-.glyphicon-time:before {
-  content: "\e023"; }
-
-.glyphicon-road:before {
-  content: "\e024"; }
-
-.glyphicon-download-alt:before {
-  content: "\e025"; }
-
-.glyphicon-download:before {
-  content: "\e026"; }
-
-.glyphicon-upload:before {
-  content: "\e027"; }
-
-.glyphicon-inbox:before {
-  content: "\e028"; }
-
-.glyphicon-play-circle:before {
-  content: "\e029"; }
-
-.glyphicon-repeat:before {
-  content: "\e030"; }
-
-.glyphicon-refresh:before {
-  content: "\e031"; }
-
-.glyphicon-list-alt:before {
-  /*content: "\e032"; */
-}
-
-.glyphicon-lock:before {
-  content: "\e033"; }
-
-.glyphicon-flag:before {
-  content: "\e034"; }
-
-.glyphicon-headphones:before {
-  content: "\e035"; }
-
-.glyphicon-volume-off:before {
-  content: "\e036"; }
-
-.glyphicon-volume-down:before {
-  content: "\e037"; }
-
-.glyphicon-volume-up:before {
-  content: "\e038"; }
-
-.glyphicon-qrcode:before {
-  content: "\e039"; }
-
-.glyphicon-barcode:before {
-  content: "\e040"; }
-
-.glyphicon-tag:before {
-  content: "\e041"; }
-
-.glyphicon-tags:before {
-  content: "\e042"; }
-
-.glyphicon-book:before {
-  content: "\e043"; }
-
-.glyphicon-bookmark:before {
-  content: "\e044"; }
-
-.glyphicon-print:before {
-  content: "\e045"; }
-
-.glyphicon-camera:before {
-  content: "\e046"; }
-
-.glyphicon-font:before {
-  content: "\e047"; }
-
-.glyphicon-bold:before {
-  content: "\e048"; }
-
-.glyphicon-italic:before {
-  content: "\e049"; }
-
-.glyphicon-text-height:before {
-  content: "\e050"; }
-
-.glyphicon-text-width:before {
-  content: "\e051"; }
-
-.glyphicon-align-left:before {
-  content: "\e052"; }
-
-.glyphicon-align-center:before {
-  content: "\e053"; }
-
-.glyphicon-align-right:before {
-  content: "\e054"; }
-
-.glyphicon-align-justify:before {
-  content: "\e055"; }
-
-.glyphicon-list:before {
-  content: "\e056"; }
-
-.glyphicon-indent-left:before {
-  content: "\e057"; }
-
-.glyphicon-indent-right:before {
-  content: "\e058"; }
-
-.glyphicon-facetime-video:before {
-  content: "\e059"; }
-
-.glyphicon-picture:before {
-  content: "\e060"; }
-
-.glyphicon-map-marker:before {
-  content: "\e062"; }
-
-.glyphicon-adjust:before {
-  content: "\e063"; }
-
-.glyphicon-tint:before {
-  content: "\e064"; }
-
-.glyphicon-edit:before {
-  content: "\e065"; }
-
-.glyphicon-share:before {
-  content: "\e066"; }
-
-.glyphicon-check:before {
-  content: "\e067"; }
-
-.glyphicon-move:before {
-  content: "\e068"; }
-
-.glyphicon-step-backward:before {
-  content: "\e069"; }
-
-.glyphicon-fast-backward:before {
-  content: "\e070"; }
-
-.glyphicon-backward:before {
-  content: "\e071"; }
-
-.glyphicon-play:before {
-  content: "\e072"; }
-
-.glyphicon-pause:before {
-  content: "\e073"; }
-
-.glyphicon-stop:before {
-  content: "\e074"; }
-
-.glyphicon-forward:before {
-  content: "\e075"; }
-
-.glyphicon-fast-forward:before {
-  content: "\e076"; }
-
-.glyphicon-step-forward:before {
-  content: "\e077"; }
-
-.glyphicon-eject:before {
-  content: "\e078"; }
-
-.glyphicon-chevron-left:before {
-  content: "\e079"; }
-
-.glyphicon-chevron-right:before {
-  content: "\e080"; }
-
-.glyphicon-plus-sign:before {
-  content: "\e081"; }
-
-.glyphicon-minus-sign:before {
-  content: "\e082"; }
-
-.glyphicon-remove-sign:before {
-  content: "\e083"; }
-
-.glyphicon-ok-sign:before {
-  content: "\e084"; }
-
-.glyphicon-question-sign:before {
-  content: "\e085"; }
-
-.glyphicon-info-sign:before {
-  content: "\e086"; }
-
-.glyphicon-screenshot:before {
-  content: "\e087"; }
-
-.glyphicon-remove-circle:before {
-  content: "\e088"; }
-
-.glyphicon-ok-circle:before {
-  content: "\e089"; }
-
-.glyphicon-ban-circle:before {
-  content: "\e090"; }
-
-.glyphicon-arrow-left:before {
-  content: "\e091"; }
-
-.glyphicon-arrow-right:before {
-  content: "\e092"; }
-
-.glyphicon-arrow-up:before {
-  content: "\e093"; }
-
-.glyphicon-arrow-down:before {
-  content: "\e094"; }
-
-.glyphicon-share-alt:before {
-  content: "\e095"; }
-
-.glyphicon-resize-full:before {
-  content: "\e096"; }
-
-.glyphicon-resize-small:before {
-  content: "\e097"; }
-
-.glyphicon-exclamation-sign:before {
-  content: "\e101"; }
-
-.glyphicon-gift:before {
-  content: "\e102"; }
-
-.glyphicon-leaf:before {
-  content: "\e103"; }
-
-.glyphicon-fire:before {
-  content: "\e104"; }
-
-.glyphicon-eye-open:before {
-  content: "\e105"; }
-
-.glyphicon-eye-close:before {
-  content: "\e106"; }
-
-.glyphicon-warning-sign:before {
-  content: "\e107"; }
-
-.glyphicon-plane:before {
-  content: "\e108"; }
-
-.glyphicon-calendar:before {
-  content: "\e109"; }
-
-.glyphicon-random:before {
-  content: "\e110"; }
-
-.glyphicon-comment:before {
-  content: "\e111"; }
-
-.glyphicon-magnet:before {
-  content: "\e112"; }
-
-.glyphicon-chevron-up:before {
-  content: "\e113"; }
-
-.glyphicon-chevron-down:before {
-  content: "\e114"; }
-
-.glyphicon-retweet:before {
-  content: "\e115"; }
-
-.glyphicon-shopping-cart:before {
-  content: "\e116"; }
-
-.glyphicon-folder-close:before {
-  content: "\e117"; }
-
-.glyphicon-folder-open:before {
-  content: "\e118"; }
-
-.glyphicon-resize-vertical:before {
-  content: "\e119"; }
-
-.glyphicon-resize-horizontal:before {
-  content: "\e120"; }
-
-.glyphicon-hdd:before {
-  content: "\e121"; }
-
-.glyphicon-bullhorn:before {
-  content: "\e122"; }
-
-.glyphicon-bell:before {
-  content: "\e123"; }
-
-.glyphicon-certificate:before {
-  content: "\e124"; }
-
-.glyphicon-thumbs-up:before {
-  content: "\e125"; }
-
-.glyphicon-thumbs-down:before {
-  content: "\e126"; }
-
-.glyphicon-hand-right:before {
-  content: "\e127"; }
-
-.glyphicon-hand-left:before {
-  content: "\e128"; }
-
-.glyphicon-hand-up:before {
-  content: "\e129"; }
-
-.glyphicon-hand-down:before {
-  content: "\e130"; }
-
-.glyphicon-circle-arrow-right:before {
-  content: "\e131"; }
-
-.glyphicon-circle-arrow-left:before {
-  content: "\e132"; }
-
-.glyphicon-circle-arrow-up:before {
-  content: "\e133"; }
-
-.glyphicon-circle-arrow-down:before {
-  content: "\e134"; }
-
-.glyphicon-globe:before {
-  content: "\e135"; }
-
-.glyphicon-wrench:before {
-  content: "\e136"; }
-
-.glyphicon-tasks:before {
-  content: "\e137"; }
-
-.glyphicon-filter:before {
-  content: "\e138"; }
-
-.glyphicon-briefcase:before {
-  content: "\e139"; }
-
-.glyphicon-fullscreen:before {
-  content: "\e140"; }
-
-.glyphicon-dashboard:before {
-  content: "\e141"; }
-
-.glyphicon-paperclip:before {
-  content: "\e142"; }
-
-.glyphicon-heart-empty:before {
-  content: "\e143"; }
-
-.glyphicon-link:before {
-  content: "\e144"; }
-
-.glyphicon-phone:before {
-  content: "\e145"; }
-
-.glyphicon-pushpin:before {
-  content: "\e146"; }
-
-.glyphicon-usd:before {
-  content: "\e148"; }
-
-.glyphicon-gbp:before {
-  content: "\e149"; }
-
-.glyphicon-sort:before {
-  content: "\e150"; }
-
-.glyphicon-sort-by-alphabet:before {
-  content: "\e151"; }
-
-.glyphicon-sort-by-alphabet-alt:before {
-  content: "\e152"; }
-
-.glyphicon-sort-by-order:before {
-  content: "\e153"; }
-
-.glyphicon-sort-by-order-alt:before {
-  content: "\e154"; }
-
-.glyphicon-sort-by-attributes:before {
-  content: "\e155"; }
-
-.glyphicon-sort-by-attributes-alt:before {
-  content: "\e156"; }
-
-.glyphicon-unchecked:before {
-  content: "\e157"; }
-
-.glyphicon-expand:before {
-  content: "\e158"; }
-
-.glyphicon-collapse-down:before {
-  content: "\e159"; }
-
-.glyphicon-collapse-up:before {
-  content: "\e160"; }
-
-.glyphicon-log-in:before {
-  content: "\e161"; }
-
-.glyphicon-flash:before {
-  content: "\e162"; }
-
-.glyphicon-log-out:before {
-  content: "\e163"; }
-
-.glyphicon-new-window:before {
-  content: "\e164"; }
-
-.glyphicon-record:before {
-  content: "\e165"; }
-
-.glyphicon-save:before {
-  content: "\e166"; }
-
-.glyphicon-open:before {
-  content: "\e167"; }
-
-.glyphicon-saved:before {
-  content: "\e168"; }
-
-.glyphicon-import:before {
-  content: "\e169"; }
-
-.glyphicon-export:before {
-  content: "\e170"; }
-
-.glyphicon-send:before {
-  content: "\e171"; }
-
-.glyphicon-floppy-disk:before {
-  content: "\e172"; }
-
-.glyphicon-floppy-saved:before {
-  content: "\e173"; }
-
-.glyphicon-floppy-remove:before {
-  content: "\e174"; }
-
-.glyphicon-floppy-save:before {
-  content: "\e175"; }
-
-.glyphicon-floppy-open:before {
-  content: "\e176"; }
-
-.glyphicon-credit-card:before {
-  content: "\e177"; }
-
-.glyphicon-transfer:before {
-  content: "\e178"; }
-
-.glyphicon-cutlery:before {
-  content: "\e179"; }
-
-.glyphicon-header:before {
-  content: "\e180"; }
-
-.glyphicon-compressed:before {
-  content: "\e181"; }
-
-.glyphicon-earphone:before {
-  content: "\e182"; }
-
-.glyphicon-phone-alt:before {
-  content: "\e183"; }
-
-.glyphicon-tower:before {
-  content: "\e184"; }
-
-.glyphicon-stats:before {
-  content: "\e185"; }
-
-.glyphicon-sd-video:before {
-  content: "\e186"; }
-
-.glyphicon-hd-video:before {
-  content: "\e187"; }
-
-.glyphicon-subtitles:before {
-  content: "\e188"; }
-
-.glyphicon-sound-stereo:before {
-  content: "\e189"; }
-
-.glyphicon-sound-dolby:before {
-  content: "\e190"; }
-
-.glyphicon-sound-5-1:before {
-  content: "\e191"; }
-
-.glyphicon-sound-6-1:before {
-  content: "\e192"; }
-
-.glyphicon-sound-7-1:before {
-  content: "\e193"; }
-
-.glyphicon-copyright-mark:before {
-  content: "\e194"; }
-
-.glyphicon-registration-mark:before {
-  content: "\e195"; }
-
-.glyphicon-cloud-download:before {
-  content: "\e197"; }
-
-.glyphicon-cloud-upload:before {
-  content: "\e198"; }
-
-.glyphicon-tree-conifer:before {
-  content: "\e199"; }
-
-.glyphicon-tree-deciduous:before {
-  content: "\e200"; }
-
-* {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box; }
-
-*:before, *:after {
-    -webkit-box-sizing: border-box;
-    -moz-box-sizing: border-box;
-    box-sizing: border-box; }
-
-html {
-	font-size: 10px;
-	-webkit-tap-highlight-color: transparent; }
-
-body {
-	font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-	font-size: 13px;
-	line-height: 1.5;
-	color: #333;
-	background-color: #fff; }
-
-input, button, select, textarea {
-	font-family: inherit;
-	font-size: inherit;
-	line-height: inherit; }
-a {
-	color: #005D9D;
-	text-decoration: none;
-}
-a:hover, a:focus  {
-	color: #005D9D;
-	text-decoration: underline;
-}    
-a:focus {
-    outline: thin dotted;
-	outline: 5px auto -webkit-focus-ring-color;
-	outline-offset: -2px; }
-
-figure {
-	margin: 0; }
-
-img {
-	vertical-align: middle; }
-
-.img-responsive {
-  display: block;
-  width: 100% \9;
-  max-width: 100%;
-  height: auto; }
-
-.img-rounded {
-    border-radius: 6px; }
-
-.img-thumbnail {
-	padding: 4px;
-	line-height: 1.5;
-	background-color: #fff;
-	border: 1px solid #ddd;
-	border-radius: 4px;
-	-webkit-transition: all 0.2s ease-in-out;
-	-o-transition: all 0.2s ease-in-out;
-	transition: all 0.2s ease-in-out;
-	display: inline-block;
-	width: 100% \9;
-	max-width: 100%;
-	height: auto; }
-
-.img-circle {
-	border-radius: 50%; }
-
-hr {
-    margin-top: 18px;
-    margin-bottom: 18px;
-    border: 0;
-    border-top: 1px solid #eee; }
-
-.sr-only {
-    position: absolute;
-    width: 1px;
-    height: 1px;
-    margin: -1px;
-    padding: 0;
-    overflow: hidden;
-    clip: rect(0, 0, 0, 0);
-    border: 0; }
-
-.sr-only-focusable:active, .sr-only-focusable:focus {
-    position: static;
-    width: auto;
-    height: auto;
-    margin: 0;
-    overflow: visible;
-    clip: auto; }
-    
-h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
-  font-weight: 600;
-  line-height: 1.2;
-  color: #333333;  
-}
-  h1 small, h1 .small, h2 small, h2 .small, h3 small, h3 .small, h4 small,
-  h4 .small, h5 small, h5 .small, h6 small, h6 .small, .h1 small, .h1 .small,
-  .h2 small, .h2 .small, .h3 small, .h3 .small, .h4 small, .h4 .small, .h5 small,
-  .h5 .small, .h6 small, .h6 .small {
-    font-weight: normal;
-    line-height: 1;
-    color: #333333; }
-
-h1, .h1, h2, .h2, h3, .h3 {
-  margin-top: 18px;
-  margin-bottom: 9px; }
-  h1 small, h1 .small, .h1 small, .h1 .small, h2 small, h2 .small, .h2 small,
-  .h2 .small, h3 small, h3 .small, .h3 small, .h3 .small {
-    font-size: 65%; }
-
-h4, .h4, h5, .h5, h6, .h6 {
-  margin-top: 9px;
-  margin-bottom: 9px; }
-  h4 small, h4 .small, .h4 small, .h4 .small, h5 small, h5 .small, .h5 small,
-  .h5 .small, h6 small, h6 .small, .h6 small, .h6 .small {
-    font-size: 75%; }
-
-h1, .h1 {
-  font-size: 33px; }
-
-h2, .h2 {
-	font-size: 27px; }
-
-h3, .h3 {
-	font-size: 23px; }
-
-h4, .h4 {
-	font-size: 17px; }
-
-h5, .h5 {
-	font-size: 13px; }
-
-h6, .h6 {
-	font-size: 12px; }
-
-p {
-	margin: 0 0 9px; }
-
-#container {
-	width: 100%;
-	height: 100%;
-}
-
-.lead {
-	margin-bottom: 18px;
-	font-size: 14px;
-	font-weight: 300;
-	line-height: 1.4; }
-
-@media (min-width: 768px) {
-	.lead {
-	font-size: 19.5px;   }
-}
-
-small, .small {
-  font-size: 92%; }
-
-cite {
-    font-style: normal; }
-
-mark, .mark {
-	background-color: #fcf8e3;
-	padding: 0.2em; }
-
-.text-left {
-	text-align: left; }
-
-.text-right {
-	text-align: right; }
-
-.text-center {
-	text-align: center; }
-
-.text-justify {
-	text-align: justify; }
-
-.text-nowrap {
-    white-space: nowrap; }
-
-.text-lowercase {
-	text-transform: lowercase; }
-
-.text-uppercase {
-	text-transform: uppercase; }
-
-.text-capitalize {
-	text-transform: capitalize; }
-
-.text-muted {
-	color: #777; }
-
-.bg-primary {
-	color: #fff; }
-
-.page-header {
-	padding-bottom: 8px;
-	margin: 36px 0 18px;
-    /*border-bottom: 1px solid #eee; */}
-
-ul, ol {
-  margin-top: 0;
-  margin-bottom: 9px; }
-ul ul, ul ol, ol ul, ol ol {
-    margin-bottom: 0; }
-
-.list-unstyled, .list-inline {
-  padding-left: 0;
-  list-style: none; }
-
-.list-inline {
-	margin-left: -5px; }
-.list-inline > li {
-      display: inline-block;
-      padding-left: 5px;
-      padding-right: 5px; }
-
-dl {
-  margin-top: 0;
-  margin-bottom: 18px; }
-
-dt, dd {
-	line-height: 1.5; }
-
-dt {
-	font-weight: bold; }
-
-dd {
-	margin-left: 0; }
-
-@media (min-width: 768px) {
-	.dl-horizontal dt {
-		loat: left;
-		width: 160px;
-		clear: left;
-		text-align: right;
-		overflow: hidden;
-		text-overflow: ellipsis;
-		white-space: nowrap;   }
-		.dl-horizontal dd {
-		margin-left: 180px;   }
-}
-
-abbr[title], abbr[data-original-title] {
-  cursor: help;
-  border-bottom: 1px dotted #777; }
-
-  .initialism {
-    font-size: 90%;
-    text-transform: uppercase; }
-
-    blockquote {
-      padding: 9px 18px;
-      margin: 0 0 18px;
-      font-size: 16.25px;
-      border-left: 5px solid #eee; }
-      blockquote p:last-child, blockquote ul:last-child, blockquote ol:last-child {
-        margin-bottom: 0; }
-      blockquote footer, blockquote small, blockquote .small {
-        display: block;
-        font-size: 80%;
-        line-height: 1.5;
-        color: #777; }
-        blockquote footer:before, blockquote small:before, blockquote .small:before {
-          content: '\2014 \00A0'; }
-
-.blockquote-reverse, blockquote.pull-right {
-  padding-right: 15px;
-  padding-left: 0;
-  border-right: 5px solid #eee;
-  border-left: 0;
-  text-align: right; }
-  .blockquote-reverse footer:before, .blockquote-reverse small:before,
-  .blockquote-reverse .small:before, blockquote.pull-right footer:before,
-  blockquote.pull-right small:before, blockquote.pull-right .small:before {
-    content: ''; }
-    .blockquote-reverse footer:after, .blockquote-reverse small:after,
-    .blockquote-reverse .small:after, blockquote.pull-right footer:after,
-    blockquote.pull-right small:after, blockquote.pull-right .small:after {
-      content: '\00A0 \2014'; }
-
-blockquote:before, blockquote:after {
-  content: ""; }
-
-  address {
-    margin-bottom: 18px;
-    font-style: normal;
-    line-height: 1.5; }
-.text-primary {
-  color: #428bca; }
-
-  a.text-primary:hover {
-    color: #3071a9; }
-
-    .text-success {
-      color: #3c763d; }
-
-      a.text-success:hover {
-        color: #2b542c; }
-
-        .text-info {
-          color: #31708f; }
-
-          a.text-info:hover {
-            color: #245269; }
-
-            .text-warning {
-              color: #8a6d3b; }
-
-              a.text-warning:hover {
-                color: #66512c; }
-
-                .text-danger {
-                  color: #a94442; }
-
-                  a.text-danger:hover {
-                    color: #843534; }
-.bg-primary {
-  background-color: #428bca; }
-
-  a.bg-primary:hover {
-    background-color: #3071a9; }
-
-    .bg-success {
-      background-color: #dff0d8; }
-
-      a.bg-success:hover {
-        background-color: #c1e2b3; }
-
-        .bg-info {
-          background-color: #d9edf7; }
-
-          a.bg-info:hover {
-            background-color: #afd9ee; }
-
-            .bg-warning {
-              background-color: #fcf8e3; }
-
-              a.bg-warning:hover {
-                background-color: #f7ecb5; }
-
-                .bg-danger {
-                  background-color: #f2dede; }
-
-                  a.bg-danger:hover {
-                    background-color: #e4b9b9; }
-.dl-horizontal dd:before, .dl-horizontal dd:after {
-  content: " ";
-  display: table; }
-  .dl-horizontal dd:after {
-    clear: both; }
-.container:before, .container:after {
-  content: " ";
-  display: table; }
-  .container:after {
-    clear: both; }
-    .container-fluid:before, .container-fluid:after {
-      content: " ";
-      display: table; }
-      .container-fluid:after {
-        clear: both; }
-        .row:before, .row:after {
-          content: " ";
-          display: table; }
-          .row:after {
-            clear: both; }
-.form-horizontal .form-group:before, .form-horizontal .form-group:after {
-	content: " ";
-	display: table; }
-.form-horizontal .form-group:after {
-	clear: both; }
-.btn-toolbar:before, .btn-toolbar:after {
-  content: " ";
-  display: table; }
-  .btn-toolbar:after {
-    clear: both; }
-    .btn-group-vertical > .btn-group:before, .btn-group-vertical > .btn-group:after {
-      content: " ";
-      display: table; }
-      .btn-group-vertical > .btn-group:after {
-        clear: both; }
-.nav:before, .nav:after {
-  content: " ";
-  display: table; }
-  .nav:after {
-    clear: both; }
-    .navbar:before, .navbar:after {
-      content: " ";
-      display: table; }
-      .navbar:after {
-        clear: both; }
-        .navbar-header:before, .navbar-header:after {
-          content: " ";
-          display: table; }
-          .navbar-header:after {
-            clear: both; }
-            .navbar-collapse:before, .navbar-collapse:after {
-              content: " ";
-              display: table; }
-              .navbar-collapse:after {
-                clear: both; }
-                .pager:before, .pager:after {
-                  content: " ";
-                  display: table; }
-                  .pager:after {
-                    clear: both; }
-                    .panel-body:before, .panel-body:after {
-                      content: " ";
-                      display: table; }
-                      .panel-body:after {
-                        clear: both; }
-                        .modal-footer:before, .modal-footer:after {
-                          content: " ";
-                          display: table; }
-                          .modal-footer:after {
-                            clear: both; }
-                            .clearfix:before, .clearfix:after {
-                              content: " ";
-                              display: table; }
-                              .clearfix:after {
-                                clear: both; }
-code, kbd, pre, samp {
-  font-family: Menlo, Monaco, Consolas, "Courier New", monospace; }
-
-code {
-    padding: 2px 4px;
-    font-size: 90%;
-    color: #c7254e;
-    background-color: #f9f2f4;
-    border-radius: 4px; }
-
-kbd {
-	padding: 2px 4px;
-	font-size: 90%;
-	color: #fff;
-	background-color: #333;
-	border-radius: 3px;
-	box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); }
-	
-kbd kbd {
-    padding: 0;
-    font-size: 100%;
-    box-shadow: none; }
-
-pre {
-  display: block;
-  padding: 8.5px;
-  margin: 0 0 9px;
-  font-size: 12px;
-  line-height: 1.5;
-  word-break: break-all;
-  word-wrap: break-word;
-  color: #333;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  border-radius: 4px; }
-  
-pre code {
-    padding: 0;
-    font-size: inherit;
-    color: inherit;
-    white-space: pre-wrap;
-    background-color: transparent;
-    border-radius: 0; }
-
-.pre-scrollable {
-  max-height: 340px;
-  overflow-y: scroll; }
-.container {
-  margin-right: auto;
-  margin-left: auto;
-  padding-left: 15px;
-  padding-right: 15px; }
-  @media (min-width: 768px) {
-    .container {
-      width: 750px;   }
-}
-    @media (min-width: 992px) {
-      .container {
-        width: 970px;   }
-}
-      @media (min-width: 1200px) {
-        .container {
-          width: 1170px;   }
-}
-
-.container-fluid {
-  margin-right: auto;
-  margin-left: auto;
-  padding-left: 15px;
-  padding-right: 15px; }
-
-.row {
-    margin-left: -15px;
-    margin-right: -15px; }
-    
-.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2,
-.col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4,
-.col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6,
-.col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7,
-.col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9,
-.col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11,
-.col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12,
-.col-lg-12 {
-  position: relative;
-  min-height: 1px;
-  padding-left: 15px;
-  padding-right: 15px; }
-
-  .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7,
-  .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
-    float: left; }
-
-    .col-xs-1 {
-      width: 8.33333%; }
-
-      .col-xs-2 {
-        width: 16.66667%; }
-
-        .col-xs-3 {
-          width: 25%; }
-
-          .col-xs-4 {
-            width: 33.33333%; }
-
-            .col-xs-5 {
-              width: 41.66667%; }
-
-              .col-xs-6 {
-                width: 50%; }
-
-                .col-xs-7 {
-                  width: 58.33333%; }
-
-                  .col-xs-8 {
-                    width: 66.66667%; }
-
-                    .col-xs-9 {
-                      width: 75%; }
-
-                      .col-xs-10 {
-                        width: 83.33333%; }
-
-                        .col-xs-11 {
-                          width: 91.66667%; }
-
-                          .col-xs-12 {
-                            width: 100%; }
-
-                            .col-xs-pull-0 {
-                              right: auto; }
-
-                              .col-xs-pull-1 {
-                                right: 8.33333%; }
-
-                                .col-xs-pull-2 {
-                                  right: 16.66667%; }
-
-                                  .col-xs-pull-3 {
-                                    right: 25%; }
-
-                                    .col-xs-pull-4 {
-                                      right: 33.33333%; }
-
-                                      .col-xs-pull-5 {
-                                        right: 41.66667%; }
-
-                                        .col-xs-pull-6 {
-                                          right: 50%; }
-
-                                          .col-xs-pull-7 {
-                                            right: 58.33333%; }
-
-                                            .col-xs-pull-8 {
-                                              right: 66.66667%; }
-
-                                              .col-xs-pull-9 {
-                                                right: 75%; }
-
-                                                .col-xs-pull-10 {
-                                                  right: 83.33333%; }
-
-                                                  .col-xs-pull-11 {
-                                                    right: 91.66667%; }
-
-                                                    .col-xs-pull-12 {
-                                                      right: 100%; }
-
-                                                      .col-xs-push-0 {
-                                                        left: auto; }
-
-                                                        .col-xs-push-1 {
-                                                          left: 8.33333%; }
-
-                                                          .col-xs-push-2 {
-                                                            left: 16.66667%; }
-
-                                                            .col-xs-push-3 {
-                                                              left: 25%; }
-
-                                                              .col-xs-push-4 {
-                                                                left: 33.33333%; }
-
-                                                                .col-xs-push-5 {
-                                                                  left: 41.66667%; }
-
-                                                                  .col-xs-push-6 {
-                                                                    left: 50%; }
-
-                                                                    .col-xs-push-7 {
-                                                                      left: 58.33333%; }
-
-                                                                      .col-xs-push-8 {
-                                                                        left: 66.66667%; }
-
-                                                                        .col-xs-push-9 {
-                                                                          left: 75%; }
-
-                                                                          .col-xs-push-10 {
-                                                                            left: 83.33333%; }
-
-                                                                            .col-xs-push-11 {
-                                                                              left: 91.66667%; }
-
-                                                                              .col-xs-push-12 {
-                                                                                left: 100%; }
-
-                                                                                .col-xs-offset-0 {
-                                                                                  margin-left: 0%; }
-
-                                                                                  .col-xs-offset-1 {
-                                                                                    margin-left: 8.33333%; }
-
-                                                                                    .col-xs-offset-2 {
-                                                                                      margin-left: 16.66667%; }
-
-                                                                                      .col-xs-offset-3 {
-                                                                                        margin-left: 25%; }
-
-                                                                                        .col-xs-offset-4 {
-                                                                                          margin-left: 33.33333%; }
-
-                                                                                          .col-xs-offset-5 {
-                                                                                            margin-left: 41.66667%; }
-
-                                                                                            .col-xs-offset-6 {
-                                                                                              margin-left: 50%; }
-
-                                                                                              .col-xs-offset-7 {
-                                                                                                margin-left: 58.33333%; }
-
-                                                                                                .col-xs-offset-8 {
-                                                                                                  margin-left: 66.66667%; }
-
-                                                                                                  .col-xs-offset-9 {
-                                                                                                    margin-left: 75%; }
-
-                                                                                                    .col-xs-offset-10 {
-                                                                                                      margin-left: 83.33333%; }
-
-                                                                                                      .col-xs-offset-11 {
-                                                                                                        margin-left: 91.66667%; }
-
-                                                                                                        .col-xs-offset-12 {
-                                                                                                          margin-left: 100%; }
-                                                                                                          @media (min-width: 768px) {
-                                                                                                            .col-xs-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7,
-                                                                                                            .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
-                                                                                                              float: left;   }
-                                                                                                              .col-sm-1 {
-                                                                                                                width: 8.33333%;   }
-                                                                                                                .col-sm-2 {
-                                                                                                                  width: 16.66667%;   }
-                                                                                                                  .col-sm-3 {
-                                                                                                                    width: 25%;   }
-                                                                                                                    .col-sm-4 {
-                                                                                                                      width: 33.33333%;   }
-                                                                                                                      .col-sm-5 {
-                                                                                                                        width: 41.66667%;   }
-                                                                                                                        .col-sm-6 {
-                                                                                                                          width: 50%;   }
-                                                                                                                          .col-sm-7 {
-                                                                                                                            width: 58.33333%;   }
-                                                                                                                            .col-sm-8 {
-                                                                                                                              width: 66.66667%;   }
-                                                                                                                              .col-sm-9 {
-                                                                                                                                width: 75%;   }
-                                                                                                                                .col-sm-10 {
-                                                                                                                                  width: 83.33333%;   }
-                                                                                                                                  .col-sm-11 {
-                                                                                                                                    width: 91.66667%;   }
-                                                                                                                                    .col-sm-12 {
-                                                                                                                                      width: 100%;   }
-                                                                                                                                      .col-sm-pull-0 {
-                                                                                                                                        right: auto;   }
-                                                                                                                                        .col-sm-pull-1 {
-                                                                                                                                          right: 8.33333%;   }
-                                                                                                                                          .col-sm-pull-2 {
-                                                                                                                                            right: 16.66667%;   }
-                                                                                                                                            .col-sm-pull-3 {
-                                                                                                                                              right: 25%;   }
-                                                                                                                                              .col-sm-pull-4 {
-                                                                                                                                                right: 33.33333%;   }
-                                                                                                                                                .col-sm-pull-5 {
-                                                                                                                                                  right: 41.66667%;   }
-                                                                                                                                                  .col-sm-pull-6 {
-                                                                                                                                                    right: 50%;   }
-                                                                                                                                                    .col-sm-pull-7 {
-                                                                                                                                                      right: 58.33333%;   }
-                                                                                                                                                      .col-sm-pull-8 {
-                                                                                                                                                        right: 66.66667%;   }
-                                                                                                                                                        .col-sm-pull-9 {
-                                                                                                                                                          right: 75%;   }
-                                                                                                                                                          .col-sm-pull-10 {
-                                                                                                                                                            right: 83.33333%;   }
-                                                                                                                                                            .col-sm-pull-11 {
-                                                                                                                                                              right: 91.66667%;   }
-                                                                                                                                                              .col-sm-pull-12 {
-                                                                                                                                                                right: 100%;   }
-                                                                                                                                                                .col-sm-push-0 {
-                                                                                                                                                                  left: auto;   }
-                                                                                                                                                                  .col-sm-push-1 {
-                                                                                                                                                                    left: 8.33333%;   }
-                                                                                                                                                                    .col-sm-push-2 {
-                                                                                                                                                                      left: 16.66667%;   }
-                                                                                                                                                                      .col-sm-push-3 {
-                                                                                                                                                                        left: 25%;   }
-                                                                                                                                                                        .col-sm-push-4 {
-                                                                                                                                                                          left: 33.33333%;   }
-                                                                                                                                                                          .col-sm-push-5 {
-                                                                                                                                                                            left: 41.66667%;   }
-                                                                                                                                                                            .col-sm-push-6 {
-                                                                                                                                                                              left: 50%;   }
-                                                                                                                                                                              .col-sm-push-7 {
-                                                                                                                                                                                left: 58.33333%;   }
-                                                                                                                                                                                .col-sm-push-8 {
-                                                                                                                                                                                  left: 66.66667%;   }
-                                                                                                                                                                                  .col-sm-push-9 {
-                                                                                                                                                                                    left: 75%;   }
-                                                                                                                                                                                    .col-sm-push-10 {
-                                                                                                                                                                                      left: 83.33333%;   }
-                                                                                                                                                                                      .col-sm-push-11 {
-                                                                                                                                                                                        left: 91.66667%;   }
-                                                                                                                                                                                        .col-sm-push-12 {
-                                                                                                                                                                                          left: 100%;   }
-                                                                                                                                                                                          .col-sm-offset-0 {
-                                                                                                                                                                                            margin-left: 0%;   }
-                                                                                                                                                                                            .col-sm-offset-1 {
-                                                                                                                                                                                              margin-left: 8.33333%;   }
-                                                                                                                                                                                              .col-sm-offset-2 {
-                                                                                                                                                                                                margin-left: 16.66667%;   }
-                                                                                                                                                                                                .col-sm-offset-3 {
-                                                                                                                                                                                                  margin-left: 25%;   }
-                                                                                                                                                                                                  .col-sm-offset-4 {
-                                                                                                                                                                                                    margin-left: 33.33333%;   }
-                                                                                                                                                                                                    .col-sm-offset-5 {
-                                                                                                                                                                                                      margin-left: 41.66667%;   }
-                                                                                                                                                                                                      .col-sm-offset-6 {
-                                                                                                                                                                                                        margin-left: 50%;   }
-                                                                                                                                                                                                        .col-sm-offset-7 {
-                                                                                                                                                                                                          margin-left: 58.33333%;   }
-                                                                                                                                                                                                          .col-sm-offset-8 {
-                                                                                                                                                                                                            margin-left: 66.66667%;   }
-                                                                                                                                                                                                            .col-sm-offset-9 {
-                                                                                                                                                                                                              margin-left: 75%;   }
-                                                                                                                                                                                                              .col-sm-offset-10 {
-                                                                                                                                                                                                                margin-left: 83.33333%;   }
-                                                                                                                                                                                                                .col-sm-offset-11 {
-                                                                                                                                                                                                                  margin-left: 91.66667%;   }
-                                                                                                                                                                                                                  .col-sm-offset-12 {
-                                                                                                                                                                                                                    margin-left: 100%;   }
-}
-                                                                                                                                                                                                                  @media (min-width: 992px) {
-                                                                                                                                                                                                                    .col-xs-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7,
-                                                                                                                                                                                                                    .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
-                                                                                                                                                                                                                      float: left;   }
-                                                                                                                                                                                                                      .col-md-1 {
-                                                                                                                                                                                                                        width: 8.33333%;   }
-                                                                                                                                                                                                                        .col-md-2 {
-                                                                                                                                                                                                                          width: 16.66667%;   }
-                                                                                                                                                                                                                          .col-md-3 {
-                                                                                                                                                                                                                            width: 25%;   }
-                                                                                                                                                                                                                            .col-md-4 {
-                                                                                                                                                                                                                              width: 33.33333%;   }
-                                                                                                                                                                                                                              .col-md-5 {
-                                                                                                                                                                                                                                width: 41.66667%;   }
-                                                                                                                                                                                                                                .col-md-6 {
-                                                                                                                                                                                                                                  width: 50%;   }
-                                                                                                                                                                                                                                  .col-md-7 {
-                                                                                                                                                                                                                                    width: 58.33333%;   }
-                                                                                                                                                                                                                                    .col-md-8 {
-                                                                                                                                                                                                                                      width: 66.66667%;   }
-                                                                                                                                                                                                                                      .col-md-9 {
-                                                                                                                                                                                                                                        width: 75%;   }
-                                                                                                                                                                                                                                        .col-md-10 {
-                                                                                                                                                                                                                                          width: 83.33333%;   }
-                                                                                                                                                                                                                                          .col-md-11 {
-                                                                                                                                                                                                                                            width: 91.66667%;   }
-                                                                                                                                                                                                                                            .col-md-12 {
-                                                                                                                                                                                                                                              width: 100%;   }
-                                                                                                                                                                                                                                              .col-md-pull-0 {
-                                                                                                                                                                                                                                                right: auto;   }
-                                                                                                                                                                                                                                                .col-md-pull-1 {
-                                                                                                                                                                                                                                                  right: 8.33333%;   }
-                                                                                                                                                                                                                                                  .col-md-pull-2 {
-                                                                                                                                                                                                                                                    right: 16.66667%;   }
-                                                                                                                                                                                                                                                    .col-md-pull-3 {
-                                                                                                                                                                                                                                                      right: 25%;   }
-                                                                                                                                                                                                                                                      .col-md-pull-4 {
-                                                                                                                                                                                                                                                        right: 33.33333%;   }
-                                                                                                                                                                                                                                                        .col-md-pull-5 {
-                                                                                                                                                                                                                                                          right: 41.66667%;   }
-                                                                                                                                                                                                                                                          .col-md-pull-6 {
-                                                                                                                                                                                                                                                            right: 50%;   }
-                                                                                                                                                                                                                                                            .col-md-pull-7 {
-                                                                                                                                                                                                                                                              right: 58.33333%;   }
-                                                                                                                                                                                                                                                              .col-md-pull-8 {
-                                                                                                                                                                                                                                                                right: 66.66667%;   }
-                                                                                                                                                                                                                                                                .col-md-pull-9 {
-                                                                                                                                                                                                                                                                  right: 75%;   }
-                                                                                                                                                                                                                                                                  .col-md-pull-10 {
-                                                                                                                                                                                                                                                                    right: 83.33333%;   }
-                                                                                                                                                                                                                                                                    .col-md-pull-11 {
-                                                                                                                                                                                                                                                                      right: 91.66667%;   }
-                                                                                                                                                                                                                                                                      .col-md-pull-12 {
-                                                                                                                                                                                                                                                                        right: 100%;   }
-                                                                                                                                                                                                                                                                        .col-md-push-0 {
-                                                                                                                                                                                                                                                                          left: auto;   }
-                                                                                                                                                                                                                                                                          .col-md-push-1 {
-                                                                                                                                                                                                                                                                            left: 8.33333%;   }
-                                                                                                                                                                                                                                                                            .col-md-push-2 {
-                                                                                                                                                                                                                                                                              left: 16.66667%;   }
-                                                                                                                                                                                                                                                                              .col-md-push-3 {
-                                                                                                                                                                                                                                                                                left: 25%;   }
-                                                                                                                                                                                                                                                                                .col-md-push-4 {
-                                                                                                                                                                                                                                                                                  left: 33.33333%;   }
-                                                                                                                                                                                                                                                                                  .col-md-push-5 {
-                                                                                                                                                                                                                                                                                    left: 41.66667%;   }
-                                                                                                                                                                                                                                                                                    .col-md-push-6 {
-                                                                                                                                                                                                                                                                                      left: 50%;   }
-                                                                                                                                                                                                                                                                                      .col-md-push-7 {
-                                                                                                                                                                                                                                                                                        left: 58.33333%;   }
-                                                                                                                                                                                                                                                                                        .col-md-push-8 {
-                                                                                                                                                                                                                                                                                          left: 66.66667%;   }
-                                                                                                                                                                                                                                                                                          .col-md-push-9 {
-                                                                                                                                                                                                                                                                                            left: 75%;   }
-                                                                                                                                                                                                                                                                                            .col-md-push-10 {
-                                                                                                                                                                                                                                                                                              left: 83.33333%;   }
-                                                                                                                                                                                                                                                                                              .col-md-push-11 {
-                                                                                                                                                                                                                                                                                                left: 91.66667%;   }
-                                                                                                                                                                                                                                                                                                .col-md-push-12 {
-                                                                                                                                                                                                                                                                                                  left: 100%;   }
-                                                                                                                                                                                                                                                                                                  .col-md-offset-0 {
-                                                                                                                                                                                                                                                                                                    margin-left: 0%;   }
-                                                                                                                                                                                                                                                                                                    .col-md-offset-1 {
-                                                                                                                                                                                                                                                                                                      margin-left: 8.33333%;   }
-                                                                                                                                                                                                                                                                                                      .col-md-offset-2 {
-                                                                                                                                                                                                                                                                                                        margin-left: 16.66667%;   }
-                                                                                                                                                                                                                                                                                                        .col-md-offset-3 {
-                                                                                                                                                                                                                                                                                                          margin-left: 25%;   }
-                                                                                                                                                                                                                                                                                                          .col-md-offset-4 {
-                                                                                                                                                                                                                                                                                                            margin-left: 33.33333%;   }
-                                                                                                                                                                                                                                                                                                            .col-md-offset-5 {
-                                                                                                                                                                                                                                                                                                              margin-left: 41.66667%;   }
-                                                                                                                                                                                                                                                                                                              .col-md-offset-6 {
-                                                                                                                                                                                                                                                                                                                margin-left: 50%;   }
-                                                                                                                                                                                                                                                                                                                .col-md-offset-7 {
-                                                                                                                                                                                                                                                                                                                  margin-left: 58.33333%;   }
-                                                                                                                                                                                                                                                                                                                  .col-md-offset-8 {
-                                                                                                                                                                                                                                                                                                                    margin-left: 66.66667%;   }
-                                                                                                                                                                                                                                                                                                                    .col-md-offset-9 {
-                                                                                                                                                                                                                                                                                                                      margin-left: 75%;   }
-                                                                                                                                                                                                                                                                                                                      .col-md-offset-10 {
-                                                                                                                                                                                                                                                                                                                        margin-left: 83.33333%;   }
-                                                                                                                                                                                                                                                                                                                        .col-md-offset-11 {
-                                                                                                                                                                                                                                                                                                                          margin-left: 91.66667%;   }
-                                                                                                                                                                                                                                                                                                                          .col-md-offset-12 {
-                                                                                                                                                                                                                                                                                                                            margin-left: 100%;   }
-}
-                                                                                                                                                                                                                                                                                                                          @media (min-width: 1200px) {
-                                                                                                                                                                                                                                                                                                                            .col-xs-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7,
-                                                                                                                                                                                                                                                                                                                            .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
-                                                                                                                                                                                                                                                                                                                              float: left;   }
-                                                                                                                                                                                                                                                                                                                              .col-lg-1 {
-                                                                                                                                                                                                                                                                                                                                width: 8.33333%;   }
-                                                                                                                                                                                                                                                                                                                                .col-lg-2 {
-                                                                                                                                                                                                                                                                                                                                  width: 16.66667%;   }
-                                                                                                                                                                                                                                                                                                                                  .col-lg-3 {
-                                                                                                                                                                                                                                                                                                                                    width: 25%;   }
-                                                                                                                                                                                                                                                                                                                                    .col-lg-4 {
-                                                                                                                                                                                                                                                                                                                                      width: 33.33333%;   }
-                                                                                                                                                                                                                                                                                                                                      .col-lg-5 {
-                                                                                                                                                                                                                                                                                                                                        width: 41.66667%;   }
-                                                                                                                                                                                                                                                                                                                                        .col-lg-6 {
-                                                                                                                                                                                                                                                                                                                                          width: 50%;   }
-                                                                                                                                                                                                                                                                                                                                          .col-lg-7 {
-                                                                                                                                                                                                                                                                                                                                            width: 58.33333%;   }
-                                                                                                                                                                                                                                                                                                                                            .col-lg-8 {
-                                                                                                                                                                                                                                                                                                                                              width: 66.66667%;   }
-                                                                                                                                                                                                                                                                                                                                              .col-lg-9 {
-                                                                                                                                                                                                                                                                                                                                                width: 75%;   }
-                                                                                                                                                                                                                                                                                                                                                .col-lg-10 {
-                                                                                                                                                                                                                                                                                                                                                  width: 83.33333%;   }
-                                                                                                                                                                                                                                                                                                                                                  .col-lg-11 {
-                                                                                                                                                                                                                                                                                                                                                    width: 91.66667%;   }
-                                                                                                                                                                                                                                                                                                                                                    .col-lg-12 {
-                                                                                                                                                                                                                                                                                                                                                      width: 100%;   }
-                                                                                                                                                                                                                                                                                                                                                      .col-lg-pull-0 {
-                                                                                                                                                                                                                                                                                                                                                        right: auto;   }
-                                                                                                                                                                                                                                                                                                                                                        .col-lg-pull-1 {
-                                                                                                                                                                                                                                                                                                                                                          right: 8.33333%;   }
-                                                                                                                                                                                                                                                                                                                                                          .col-lg-pull-2 {
-                                                                                                                                                                                                                                                                                                                                                            right: 16.66667%;   }
-                                                                                                                                                                                                                                                                                                                                                            .col-lg-pull-3 {
-                                                                                                                                                                                                                                                                                                                                                              right: 25%;   }
-                                                                                                                                                                                                                                                                                                                                                              .col-lg-pull-4 {
-                                                                                                                                                                                                                                                                                                                                                                right: 33.33333%;   }
-                                                                                                                                                                                                                                                                                                                                                                .col-lg-pull-5 {
-                                                                                                                                                                                                                                                                                                                                                                  right: 41.66667%;   }
-                                                                                                                                                                                                                                                                                                                                                                  .col-lg-pull-6 {
-                                                                                                                                                                                                                                                                                                                                                                    right: 50%;   }
-                                                                                                                                                                                                                                                                                                                                                                    .col-lg-pull-7 {
-                                                                                                                                                                                                                                                                                                                                                                      right: 58.33333%;   }
-                                                                                                                                                                                                                                                                                                                                                                      .col-lg-pull-8 {
-                                                                                                                                                                                                                                                                                                                                                                        right: 66.66667%;   }
-                                                                                                                                                                                                                                                                                                                                                                        .col-lg-pull-9 {
-                                                                                                                                                                                                                                                                                                                                                                          right: 75%;   }
-                                                                                                                                                                                                                                                                                                                                                                          .col-lg-pull-10 {
-                                                                                                                                                                                                                                                                                                                                                                            right: 83.33333%;   }
-                                                                                                                                                                                                                                                                                                                                                                            .col-lg-pull-11 {
-                                                                                                                                                                                                                                                                                                                                                                              right: 91.66667%;   }
-                                                                                                                                                                                                                                                                                                                                                                              .col-lg-pull-12 {
-                                                                                                                                                                                                                                                                                                                                                                                right: 100%;   }
-                                                                                                                                                                                                                                                                                                                                                                                .col-lg-push-0 {
-                                                                                                                                                                                                                                                                                                                                                                                  left: auto;   }
-                                                                                                                                                                                                                                                                                                                                                                                  .col-lg-push-1 {
-                                                                                                                                                                                                                                                                                                                                                                                    left: 8.33333%;   }
-                                                                                                                                                                                                                                                                                                                                                                                    .col-lg-push-2 {
-                                                                                                                                                                                                                                                                                                                                                                                      left: 16.66667%;   }
-                                                                                                                                                                                                                                                                                                                                                                                      .col-lg-push-3 {
-                                                                                                                                                                                                                                                                                                                                                                                        left: 25%;   }
-                                                                                                                                                                                                                                                                                                                                                                                        .col-lg-push-4 {
-                                                                                                                                                                                                                                                                                                                                                                                          left: 33.33333%;   }
-                                                                                                                                                                                                                                                                                                                                                                                          .col-lg-push-5 {
-                                                                                                                                                                                                                                                                                                                                                                                            left: 41.66667%;   }
-                                                                                                                                                                                                                                                                                                                                                                                            .col-lg-push-6 {
-                                                                                                                                                                                                                                                                                                                                                                                              left: 50%;   }
-                                                                                                                                                                                                                                                                                                                                                                                              .col-lg-push-7 {
-                                                                                                                                                                                                                                                                                                                                                                                                left: 58.33333%;   }
-                                                                                                                                                                                                                                                                                                                                                                                                .col-lg-push-8 {
-                                                                                                                                                                                                                                                                                                                                                                                                  left: 66.66667%;   }
-                                                                                                                                                                                                                                                                                                                                                                                                  .col-lg-push-9 {
-                                                                                                                                                                                                                                                                                                                                                                                                    left: 75%;   }
-                                                                                                                                                                                                                                                                                                                                                                                                    .col-lg-push-10 {
-                                                                                                                                                                                                                                                                                                                                                                                                      left: 83.33333%;   }
-                                                                                                                                                                                                                                                                                                                                                                                                      .col-lg-push-11 {
-                                                                                                                                                                                                                                                                                                                                                                                                        left: 91.66667%;   }
-                                                                                                                                                                                                                                                                                                                                                                                                        .col-lg-push-12 {
-                                                                                                                                                                                                                                                                                                                                                                                                          left: 100%;   }
-                                                                                                                                                                                                                                                                                                                                                                                                          .col-lg-offset-0 {
-                                                                                                                                                                                                                                                                                                                                                                                                            margin-left: 0%;   }
-                                                                                                                                                                                                                                                                                                                                                                                                            .col-lg-offset-1 {
-                                                                                                                                                                                                                                                                                                                                                                                                              margin-left: 8.33333%;   }
-                                                                                                                                                                                                                                                                                                                                                                                                              .col-lg-offset-2 {
-                                                                                                                                                                                                                                                                                                                                                                                                                margin-left: 16.66667%;   }
-                                                                                                                                                                                                                                                                                                                                                                                                                .col-lg-offset-3 {
-                                                                                                                                                                                                                                                                                                                                                                                                                  margin-left: 25%;   }
-                                                                                                                                                                                                                                                                                                                                                                                                                  .col-lg-offset-4 {
-                                                                                                                                                                                                                                                                                                                                                                                                                    margin-left: 33.33333%;   }
-                                                                                                                                                                                                                                                                                                                                                                                                                    .col-lg-offset-5 {
-                                                                                                                                                                                                                                                                                                                                                                                                                      margin-left: 41.66667%;   }
-                                                                                                                                                                                                                                                                                                                                                                                                                      .col-lg-offset-6 {
-                                                                                                                                                                                                                                                                                                                                                                                                                        margin-left: 50%;   }
-                                                                                                                                                                                                                                                                                                                                                                                                                        .col-lg-offset-7 {
-                                                                                                                                                                                                                                                                                                                                                                                                                          margin-left: 58.33333%;   }
-                                                                                                                                                                                                                                                                                                                                                                                                                          .col-lg-offset-8 {
-                                                                                                                                                                                                                                                                                                                                                                                                                            margin-left: 66.66667%;   }
-                                                                                                                                                                                                                                                                                                                                                                                                                            .col-lg-offset-9 {
-                                                                                                                                                                                                                                                                                                                                                                                                                              margin-left: 75%;   }
-                                                                                                                                                                                                                                                                                                                                                                                                                              .col-lg-offset-10 {
-                                                                                                                                                                                                                                                                                                                                                                                                                                margin-left: 83.33333%;   }
-                                                                                                                                                                                                                                                                                                                                                                                                                                .col-lg-offset-11 {
-                                                                                                                                                                                                                                                                                                                                                                                                                                  margin-left: 91.66667%;   }
-                                                                                                                                                                                                                                                                                                                                                                                                                                  .col-lg-offset-12 {
-                                                                                                                                                                                                                                                                                                                                                                                                                                    margin-left: 100%;   }
-}
-
-table {
-  background-color: transparent; }
-
-th {
-    text-align: left; }
-
-.table {
-	width: 100%;
-    max-width: 100%;
-    margin-bottom: 18px; 
-    border: 1px solid #ffffff; }
-      
-.table > thead > tr > th, .table > thead > tr > td, .table > tbody > tr > th,
-.table > tbody > tr > td, .table > tfoot > tr > th, .table > tfoot > tr > td {
-    padding: 8px 0px;
-    line-height: 1.5;
-    vertical-align: top;
-    border-top: 1px solid #d5dfe6; }
-    
-.table > thead > tr > th {
-        vertical-align: bottom;
-        border-bottom: 1px solid #d5dfe6; }
-.table > caption + thead > tr:first-child > th,
-.table > caption + thead > tr:first-child > td,
-.table > colgroup + thead > tr:first-child > th,
-.table > colgroup + thead > tr:first-child > td,
-.table > thead:first-child > tr:first-child > th,
-.table > thead:first-child > tr:first-child > td {
-	border-top: 0; }
-.table > tbody + tbody {
-	border-top: 1px solid #d5dfe6; }
-.table .table {
-	background-color: #fff; }
-
-.table-condensed > thead > tr > th, .table-condensed > thead > tr > td,
-.table-condensed > tbody > tr > th, .table-condensed > tbody > tr > td,
-.table-condensed > tfoot > tr > th, .table-condensed > tfoot > tr > td {
-  padding: 5px; }
-
-.table-bordered {
-  border: 1px solid #ddd; }
-.table-bordered > thead > tr > th, .table-bordered > thead > tr > td,
-.table-bordered > tbody > tr > th, .table-bordered > tbody > tr > td,
-.table-bordered > tfoot > tr > th, .table-bordered > tfoot > tr > td {
-    border: 1px solid #eeeeee; 
-    padding: 8px 12px; }
-.table-bordered > thead > tr > th, .table-bordered > thead > tr > td {
-    border-bottom-width: 2px; }
-
-.table-striped > tbody > tr:nth-child(odd) > td,
-.table-striped > tbody > tr:nth-child(odd) > th {
-  background-color: #f9f9f9; }
-
-.table-hover > tbody > tr:hover > td, .table-hover > tbody > tr:hover > th {
-  background-color: #f5f5f5; }
-
-table col[class*="col-"] {
-  position: static;
-  float: none;
-  display: table-column; }
-
-  table td[class*="col-"], table th[class*="col-"] {
-    position: static;
-    float: none;
-    display: table-cell; }
-
-@media screen and (max-width: 767px) {
-  .table-responsive {
-    width: 100%;
-    margin-bottom: 13.5px;
-    overflow-y: hidden;
-    overflow-x: auto;
-    -ms-overflow-style: -ms-autohiding-scrollbar;
-    border: 1px solid #ddd;
-    -webkit-overflow-scrolling: touch;   }
-    .table-responsive > .table {
-      margin-bottom: 0;   }
-      .table-responsive > .table > thead > tr > th,
-      .table-responsive > .table > thead > tr > td,
-      .table-responsive > .table > tbody > tr > th,
-      .table-responsive > .table > tbody > tr > td,
-      .table-responsive > .table > tfoot > tr > th,
-      .table-responsive > .table > tfoot > tr > td {
-        white-space: nowrap;   }
-    .table-responsive > .table-bordered {
-      border: 0;   }
-      .table-responsive > .table-bordered > thead > tr > th:first-child,
-      .table-responsive > .table-bordered > thead > tr > td:first-child,
-      .table-responsive > .table-bordered > tbody > tr > th:first-child,
-      .table-responsive > .table-bordered > tbody > tr > td:first-child,
-      .table-responsive > .table-bordered > tfoot > tr > th:first-child,
-      .table-responsive > .table-bordered > tfoot > tr > td:first-child {
-        border-left: 0;   }
-        .table-responsive > .table-bordered > thead > tr > th:last-child,
-        .table-responsive > .table-bordered > thead > tr > td:last-child,
-        .table-responsive > .table-bordered > tbody > tr > th:last-child,
-        .table-responsive > .table-bordered > tbody > tr > td:last-child,
-        .table-responsive > .table-bordered > tfoot > tr > th:last-child,
-        .table-responsive > .table-bordered > tfoot > tr > td:last-child {
-          border-right: 0;   }
-      .table-responsive > .table-bordered > tbody > tr:last-child > th,
-      .table-responsive > .table-bordered > tbody > tr:last-child > td,
-      .table-responsive > .table-bordered > tfoot > tr:last-child > th,
-      .table-responsive > .table-bordered > tfoot > tr:last-child > td {
-        border-bottom: 0;   }
-}
-.table > thead > tr > td.active, .table > thead > tr > th.active,
-.table > thead > tr.active > td, .table > thead > tr.active > th,
-.table > tbody > tr > td.active, .table > tbody > tr > th.active,
-.table > tbody > tr.active > td, .table > tbody > tr.active > th,
-.table > tfoot > tr > td.active, .table > tfoot > tr > th.active,
-.table > tfoot > tr.active > td, .table > tfoot > tr.active > th {
-  background-color: #f5f5f5; }
-
-.table-hover > tbody > tr > td.active:hover,
-.table-hover > tbody > tr > th.active:hover,
-.table-hover > tbody > tr.active:hover > td,
-.table-hover > tbody > tr:hover > .active,
-.table-hover > tbody > tr.active:hover > th {
-  background-color: #e8e8e8; }
-
-.table > thead > tr > td.success, .table > thead > tr > th.success,
-.table > thead > tr.success > td, .table > thead > tr.success > th,
-.table > tbody > tr > td.success, .table > tbody > tr > th.success,
-.table > tbody > tr.success > td, .table > tbody > tr.success > th,
-.table > tfoot > tr > td.success, .table > tfoot > tr > th.success,
-.table > tfoot > tr.success > td, .table > tfoot > tr.success > th {
-  background-color: #dff0d8; }
-
-.table-hover > tbody > tr > td.success:hover,
-.table-hover > tbody > tr > th.success:hover,
-.table-hover > tbody > tr.success:hover > td,
-.table-hover > tbody > tr:hover > .success,
-.table-hover > tbody > tr.success:hover > th {
-  background-color: #d0e9c6; }
-
-.table > thead > tr > td.info, .table > thead > tr > th.info,
-.table > thead > tr.info > td, .table > thead > tr.info > th,
-.table > tbody > tr > td.info, .table > tbody > tr > th.info,
-.table > tbody > tr.info > td, .table > tbody > tr.info > th,
-.table > tfoot > tr > td.info, .table > tfoot > tr > th.info,
-.table > tfoot > tr.info > td, .table > tfoot > tr.info > th {
-  background-color: #d9edf7; }
-
-.table-hover > tbody > tr > td.info:hover,
-.table-hover > tbody > tr > th.info:hover,
-.table-hover > tbody > tr.info:hover > td, .table-hover > tbody > tr:hover > .info,
-.table-hover > tbody > tr.info:hover > th {
-  background-color: #c4e3f3; }
-
-.table > thead > tr > td.warning, .table > thead > tr > th.warning,
-.table > thead > tr.warning > td, .table > thead > tr.warning > th,
-.table > tbody > tr > td.warning, .table > tbody > tr > th.warning,
-.table > tbody > tr.warning > td, .table > tbody > tr.warning > th,
-.table > tfoot > tr > td.warning, .table > tfoot > tr > th.warning,
-.table > tfoot > tr.warning > td, .table > tfoot > tr.warning > th {
-  background-color: #fcf8e3; }
-
-.table-hover > tbody > tr > td.warning:hover,
-.table-hover > tbody > tr > th.warning:hover,
-.table-hover > tbody > tr.warning:hover > td,
-.table-hover > tbody > tr:hover > .warning,
-.table-hover > tbody > tr.warning:hover > th {
-  background-color: #faf2cc; }
-
-.table > thead > tr > td.danger, .table > thead > tr > th.danger,
-.table > thead > tr.danger > td, .table > thead > tr.danger > th,
-.table > tbody > tr > td.danger, .table > tbody > tr > th.danger,
-.table > tbody > tr.danger > td, .table > tbody > tr.danger > th,
-.table > tfoot > tr > td.danger, .table > tfoot > tr > th.danger,
-.table > tfoot > tr.danger > td, .table > tfoot > tr.danger > th {
-  background-color: #f2dede; }
-
-.table-hover > tbody > tr > td.danger:hover,
-.table-hover > tbody > tr > th.danger:hover,
-.table-hover > tbody > tr.danger:hover > td,
-.table-hover > tbody > tr:hover > .danger,
-.table-hover > tbody > tr.danger:hover > th {
-  background-color: #ebcccc; }
-fieldset {
-  padding: 0;
-  margin: 0;
-  border: 0;
-  min-width: 0; }
-
-  legend {
-    display: block;
-    width: 100%;
-    padding: 0;
-    margin-bottom: 18px;
-    font-size: 19.5px;
-    line-height: inherit;
-    color: #333;
-    border: 0;
-    border-bottom: 1px solid #e5e5e5; }
-
-    label {
-      display: inline-block;
-      max-width: 100%;
-      margin-bottom: 5px;
-      font-weight: bold; }
-
-      input[type="search"] {
-        -webkit-box-sizing: border-box;
-        -moz-box-sizing: border-box;
-        box-sizing: border-box; }
-
-        input[type="radio"], input[type="checkbox"] {
-          margin: 4px 0 0;
-          margin-top: 1px \9;
-          line-height: normal; }
-
-          input[type="file"] {
-            display: block; }
-
-            input[type="range"] {
-              display: block;
-              width: 100%; }
-
-              select[multiple], select[size] {
-                height: auto; }
-
-                input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus {
-                  outline: thin dotted;
-                  outline: 5px auto -webkit-focus-ring-color;
-                  outline-offset: -2px; }
-
-                  output {
-                    display: block;
-                    padding-top: 7px;
-                    font-size: 13px;
-                    line-height: 1.5;
-                    color: #555; }
-
-                    .form-control, .datepicker input {
-                      display: block;
-                      width: 100%;
-                      height: 32px;
-                      padding: 6px 12px;
-                      font-size: 13px;
-                      line-height: 1.5;
-                      color: #555;
-                      background-color: #fff;
-                      background-image: none;
-                      border: 1px solid #ccc;
-                      border-radius: 4px;
-                      -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-                      box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-                      -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
-                      -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
-                      transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; }
-                      .form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control,
-                      .datepicker input[disabled], .datepicker input[readonly],
-                      fieldset[disabled] .datepicker input, .datepicker fieldset[disabled] input {
-                        cursor: not-allowed;
-                        background-color: #eee;
-                        opacity: 1; }
-
-textarea.form-control, .datepicker textareainput {
-  height: auto; }
-
-  input[type="search"] {
-    -webkit-appearance: none; }
-
-    input[type="date"], input[type="time"], input[type="datetime-local"],
-    input[type="month"] {
-      line-height: 32px;
-      line-height: 1.5 \0; }
-      input[type="date"].input-sm, input[type="time"].input-sm,
-      input[type="datetime-local"].input-sm, input[type="month"].input-sm,
-      .form-horizontal .form-group-sm input[type="datetime-local"].form-control,
-      .form-horizontal .form-group-sm input[type="time"].form-control,
-      .form-horizontal .form-group-sm input[type="month"].form-control,
-      .form-horizontal .form-group-sm input[type="date"].form-control,
-      .input-group-sm input[type="datetime-local"].form-control,
-      .input-group-sm input[type="datetime-local"].input-group-addon,
-      .input-group-sm > .input-group-btn input[type="datetime-local"].btn,
-      .input-group-sm input[type="time"].form-control,
-      .input-group-sm input[type="time"].input-group-addon,
-      .input-group-sm > .input-group-btn input[type="time"].btn,
-      .input-group-sm input[type="month"].form-control,
-      .input-group-sm input[type="month"].input-group-addon,
-      .input-group-sm > .input-group-btn input[type="month"].btn,
-      .input-group-sm input[type="date"].form-control,
-      .input-group-sm input[type="date"].input-group-addon,
-      .input-group-sm > .input-group-btn input[type="date"].btn,
-      .input-group-sm .datepicker input[type="month"],
-      .datepicker .input-group-sm input[type="month"],
-      .input-group-sm .datepicker input[type="time"],
-      .datepicker .input-group-sm input[type="time"],
-      .form-horizontal .form-group-sm .datepicker input[type="datetime-local"],
-      .datepicker .form-horizontal .form-group-sm input[type="datetime-local"],
-      .input-group-sm .datepicker input[type="date"],
-      .datepicker .input-group-sm input[type="date"],
-      .form-horizontal .form-group-sm .datepicker input[type="month"],
-      .datepicker .form-horizontal .form-group-sm input[type="month"],
-      .form-horizontal .form-group-sm .datepicker input[type="date"],
-      .datepicker .form-horizontal .form-group-sm input[type="date"],
-      .form-horizontal .form-group-sm .datepicker input[type="time"],
-      .datepicker .form-horizontal .form-group-sm input[type="time"],
-      .input-group-sm .datepicker input[type="datetime-local"],
-      .datepicker .input-group-sm input[type="datetime-local"] {
-        line-height: 30px; }
-        input[type="date"].input-lg, input[type="time"].input-lg,
-        input[type="datetime-local"].input-lg, input[type="month"].input-lg,
-        .form-horizontal .form-group-lg input[type="date"].form-control,
-        .form-horizontal .form-group-lg input[type="month"].form-control,
-        .form-horizontal .form-group-lg input[type="datetime-local"].form-control,
-        .form-horizontal .form-group-lg input[type="time"].form-control,
-        .input-group-lg input[type="date"].form-control,
-        .input-group-lg input[type="date"].input-group-addon,
-        .input-group-lg > .input-group-btn input[type="date"].btn,
-        .input-group-lg input[type="month"].form-control,
-        .input-group-lg input[type="month"].input-group-addon,
-        .input-group-lg > .input-group-btn input[type="month"].btn,
-        .input-group-lg input[type="datetime-local"].form-control,
-        .input-group-lg input[type="datetime-local"].input-group-addon,
-        .input-group-lg > .input-group-btn input[type="datetime-local"].btn,
-        .input-group-lg input[type="time"].form-control,
-        .input-group-lg input[type="time"].input-group-addon,
-        .input-group-lg > .input-group-btn input[type="time"].btn,
-        .form-horizontal .form-group-lg .datepicker input[type="time"],
-        .datepicker .form-horizontal .form-group-lg input[type="time"],
-        .input-group-lg .datepicker input[type="datetime-local"],
-        .datepicker .input-group-lg input[type="datetime-local"],
-        .form-horizontal .form-group-lg .datepicker input[type="date"],
-        .datepicker .form-horizontal .form-group-lg input[type="date"],
-        .input-group-lg .datepicker input[type="month"],
-        .datepicker .input-group-lg input[type="month"],
-        .form-horizontal .form-group-lg .datepicker input[type="month"],
-        .datepicker .form-horizontal .form-group-lg input[type="month"],
-        .form-horizontal .form-group-lg .datepicker input[type="datetime-local"],
-        .datepicker .form-horizontal .form-group-lg input[type="datetime-local"],
-        .input-group-lg .datepicker input[type="time"],
-        .datepicker .input-group-lg input[type="time"],
-        .input-group-lg .datepicker input[type="date"],
-        .datepicker .input-group-lg input[type="date"] {
-          line-height: 45px; }
-
-.form-group {
-	margin-bottom: 15px; }
-  
-.radio, .checkbox {
-	position: relative;
-    display: block;
-    min-height: 18px;
-    margin-top: 10px;
-    margin-bottom: 10px; }
-.radio label, .checkbox label {
-	padding-left: 20px;
-      margin-bottom: 0;
-      font-weight: normal;
-      cursor: pointer; }
-
-.radio input[type="radio"], .radio-inline input[type="radio"],
-.checkbox input[type="checkbox"], .checkbox-inline input[type="checkbox"] {
-  position: absolute;
-  margin-left: -20px;
-  margin-top: 4px \9; }
-
-  .radio + .radio, .checkbox + .checkbox {
-    margin-top: -5px; }
-
-    .radio-inline, .checkbox-inline {
-      display: inline-block;
-      padding-left: 20px;
-      margin-bottom: 0;
-      vertical-align: middle;
-      font-weight: normal;
-      cursor: pointer; }
-
-      .radio-inline + .radio-inline, .checkbox-inline + .checkbox-inline {
-        margin-top: 0;
-        margin-left: 10px; }
-
-        input[type="radio"][disabled], input[type="radio"].disabled,
-        fieldset[disabled] input[type="radio"], input[type="checkbox"][disabled],
-        input[type="checkbox"].disabled, fieldset[disabled] input[type="checkbox"] {
-          cursor: not-allowed; }
-
-.radio-inline.disabled, fieldset[disabled] .radio-inline,
-.checkbox-inline.disabled, fieldset[disabled] .checkbox-inline {
-  cursor: not-allowed; }
-
-.radio.disabled label, fieldset[disabled] .radio label, .checkbox.disabled label,
-fieldset[disabled] .checkbox label {
-  cursor: not-allowed; }
-
-.form-control-static {
-  padding-top: 7px;
-  padding-bottom: 7px;
-  margin-bottom: 0; }
-  .form-control-static.input-lg, .form-control-static.input-sm,
-  .form-horizontal .form-group-lg .form-control-static.form-control,
-  .form-horizontal .form-group-sm .form-control-static.form-control,
-  .input-group-lg .form-control-static.form-control,
-  .input-group-lg .form-control-static.input-group-addon,
-  .input-group-lg > .input-group-btn .form-control-static.btn,
-  .input-group-sm .form-control-static.form-control,
-  .input-group-sm .form-control-static.input-group-addon,
-  .input-group-sm > .input-group-btn .form-control-static.btn,
-  .input-group-lg .datepicker input.form-control-static,
-  .datepicker .input-group-lg input.form-control-static,
-  .form-horizontal .form-group-lg .datepicker input.form-control-static,
-  .datepicker .form-horizontal .form-group-lg input.form-control-static,
-  .form-horizontal .form-group-sm .datepicker input.form-control-static,
-  .datepicker .form-horizontal .form-group-sm input.form-control-static,
-  .input-group-sm .datepicker input.form-control-static,
-  .datepicker .input-group-sm input.form-control-static {
-    padding-left: 0;
-    padding-right: 0; }
-
-.has-feedback {
-  position: relative; }
-  .has-feedback .form-control, .has-feedback .datepicker input,
-  .datepicker .has-feedback input {
-    padding-right: 40px; }
-
-.form-control-feedback {
-  position: absolute;
-  top: 23px;
-  right: 0;
-  z-index: 2;
-  display: block;
-  width: 32px;
-  height: 32px;
-  line-height: 32px;
-  text-align: center; }
-
-  .input-lg + .form-control-feedback,
-  .form-horizontal .form-group-lg .form-control + .form-control-feedback,
-  .input-group-lg .form-control + .form-control-feedback,
-  .input-group-lg .input-group-addon + .form-control-feedback,
-  .input-group-lg > .input-group-btn .btn + .form-control-feedback,
-  .input-group-lg .datepicker input + .form-control-feedback,
-  .datepicker .input-group-lg input + .form-control-feedback,
-  .form-horizontal .form-group-lg .datepicker input + .form-control-feedback,
-  .datepicker .form-horizontal .form-group-lg input + .form-control-feedback {
-    width: 45px;
-    height: 45px;
-    line-height: 45px; }
-
-    .input-sm + .form-control-feedback,
-    .form-horizontal .form-group-sm .form-control + .form-control-feedback,
-    .input-group-sm .form-control + .form-control-feedback,
-    .input-group-sm .input-group-addon + .form-control-feedback,
-    .input-group-sm > .input-group-btn .btn + .form-control-feedback,
-    .input-group-sm .datepicker input + .form-control-feedback,
-    .datepicker .input-group-sm input + .form-control-feedback,
-    .form-horizontal .form-group-sm .datepicker input + .form-control-feedback,
-    .datepicker .form-horizontal .form-group-sm input + .form-control-feedback {
-      width: 30px;
-      height: 30px;
-      line-height: 30px; }
-
-      .has-feedback label.sr-only ~ .form-control-feedback {
-        top: 0; }
-
-        .help-block {
-          display: block;
-          margin-top: 5px;
-          margin-bottom: 10px;
-          color: #737373; }
-
-@media (min-width: 768px) {
-.form-inline .form-group, .navbar-form .form-group, .table_actions .form-group {
-	display: inline-block;
-	margin-bottom: 0;
-	vertical-align: middle;   }
-.form-inline .form-control, .navbar-form .form-control,
-.table_actions .form-control, .form-inline .datepicker input,
-.datepicker .form-inline input, .table_actions .datepicker input,
-.datepicker .table_actions input, .navbar-form .datepicker input,
-.datepicker .navbar-form input {
-	background: #ffffff;
-	display: inline-block;
-	width: auto;
-	vertical-align: middle;   }
-.form-inline .input-group, .navbar-form .input-group, .table_actions .input-group {
-                  display: inline-table;
-                  vertical-align: middle;   }
-                  .form-inline .input-group .input-group-addon,
-                  .form-inline .input-group .input-group-btn,
-                  .form-inline .input-group .form-control,
-                  .navbar-form .input-group .input-group-btn,
-                  .navbar-form .input-group .form-control,
-                  .navbar-form .input-group .input-group-addon,
-                  .table_actions .input-group .input-group-btn,
-                  .table_actions .input-group .form-control,
-                  .table_actions .input-group .input-group-addon,
-                  .navbar-form .input-group .datepicker input,
-                  .datepicker .navbar-form .input-group input,
-                  .form-inline .input-group .datepicker input,
-                  .datepicker .form-inline .input-group input,
-                  .table_actions .input-group .datepicker input,
-                  .datepicker .table_actions .input-group input {
-                    width: auto;   }
-            .form-inline .input-group > .form-control,
-            .navbar-form .input-group > .form-control,
-            .table_actions .input-group > .form-control,
-            .table_actions .input-group .datepicker > input,
-            .datepicker .table_actions .input-group > input,
-            .form-inline .input-group .datepicker > input,
-            .datepicker .form-inline .input-group > input,
-            .navbar-form .input-group .datepicker > input,
-            .datepicker .navbar-form .input-group > input {
-              width: 100%;   }
-              .form-inline .control-label, .navbar-form .control-label,
-              .table_actions .control-label {
-                margin-bottom: 0;
-                vertical-align: middle;   }
-                .form-inline .radio, .form-inline .checkbox, .navbar-form .radio,
-                .navbar-form .checkbox, .table_actions .radio, .table_actions .checkbox {
-                  display: inline-block;
-                  margin-top: 0;
-                  margin-bottom: 0;
-                  vertical-align: middle;   }
-                  .form-inline .radio label, .form-inline .checkbox label, .navbar-form .radio label,
-                  .navbar-form .checkbox label, .table_actions .radio label,
-                  .table_actions .checkbox label {
-                    padding-left: 0;   }
-            .form-inline .radio input[type="radio"],
-            .form-inline .checkbox input[type="checkbox"],
-            .navbar-form .checkbox input[type="checkbox"],
-            .navbar-form .radio input[type="radio"],
-            .table_actions .checkbox input[type="checkbox"],
-            .table_actions .radio input[type="radio"] {
-              position: relative;
-              margin-left: 0;   }
-              .form-inline .has-feedback .form-control-feedback,
-              .navbar-form .has-feedback .form-control-feedback,
-              .table_actions .has-feedback .form-control-feedback {
-                top: 0;   }
-}
-
-.form-horizontal .radio, .form-horizontal .checkbox,
-.form-horizontal .radio-inline, .form-horizontal .checkbox-inline {
-  margin-top: 0;
-  margin-bottom: 0;
-  padding-top: 7px; }
-  .form-horizontal .radio, .form-horizontal .checkbox {
-    min-height: 25px; }
-    .form-horizontal .form-group {
-      margin-left: -15px;
-      margin-right: -15px; }
-      @media (min-width: 768px) {
-        .form-horizontal .control-label {
-          text-align: right;
-          margin-bottom: 0;
-          padding-top: 7px;   }
-}
-.form-horizontal .has-feedback .form-control-feedback {
-  top: 0;
-  right: 15px; }
-  @media (min-width: 768px) {
-    .form-horizontal .form-group-lg .control-label {
-      padding-top: 14.3px;   }
-}
-@media (min-width: 768px) {
-  .form-horizontal .form-group-sm .control-label {
-    padding-top: 6px;   }
-}
-.form-control:focus, .datepicker input:focus {
-  border-color: #66afe9;
-  outline: 0;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); }
-
-.input-sm, .form-horizontal .form-group-sm .form-control,
-.input-group-sm .form-control, .input-group-sm .input-group-addon,
-.input-group-sm > .input-group-btn .btn,
-.form-horizontal .form-group-sm .datepicker input,
-.datepicker .form-horizontal .form-group-sm input,
-.input-group-sm .datepicker input, .datepicker .input-group-sm input {
-  height: 30px;
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px; }
-
-  select.input-sm, .form-horizontal .form-group-sm select.form-control,
-  .input-group-sm select.form-control, .input-group-sm select.input-group-addon,
-  .input-group-sm > .input-group-btn select.btn,
-  .input-group-sm .datepicker selectinput, .datepicker .input-group-sm selectinput,
-  .form-horizontal .form-group-sm .datepicker selectinput,
-  .datepicker .form-horizontal .form-group-sm selectinput {
-    height: 30px;
-    line-height: 30px; }
-
-    textarea.input-sm, select[multiple].input-sm,
-    .form-horizontal .form-group-sm textarea.form-control,
-    .form-horizontal .form-group-sm select[multiple].form-control,
-    .input-group-sm textarea.form-control, .input-group-sm textarea.input-group-addon,
-    .input-group-sm > .input-group-btn textarea.btn,
-    .input-group-sm select[multiple].form-control,
-    .input-group-sm select[multiple].input-group-addon,
-    .input-group-sm > .input-group-btn select[multiple].btn,
-    .form-horizontal .form-group-sm .datepicker selectinput[multiple],
-    .datepicker .form-horizontal .form-group-sm selectinput[multiple],
-    .form-horizontal .form-group-sm .datepicker textareainput,
-    .datepicker .form-horizontal .form-group-sm textareainput,
-    .input-group-sm .datepicker selectinput[multiple],
-    .datepicker .input-group-sm selectinput[multiple],
-    .input-group-sm .datepicker textareainput,
-    .datepicker .input-group-sm textareainput {
-      height: auto; }
-
-      .input-lg, .form-horizontal .form-group-lg .form-control,
-      .input-group-lg .form-control, .input-group-lg .input-group-addon,
-      .input-group-lg > .input-group-btn .btn, .input-group-lg .datepicker input,
-      .datepicker .input-group-lg input,
-      .form-horizontal .form-group-lg .datepicker input,
-      .datepicker .form-horizontal .form-group-lg input {
-        height: 45px;
-        padding: 10px 16px;
-        font-size: 17px;
-        line-height: 1.33;
-        border-radius: 6px; }
-
-        select.input-lg, .form-horizontal .form-group-lg select.form-control,
-        .input-group-lg select.form-control, .input-group-lg select.input-group-addon,
-        .input-group-lg > .input-group-btn select.btn,
-        .input-group-lg .datepicker selectinput, .datepicker .input-group-lg selectinput,
-        .form-horizontal .form-group-lg .datepicker selectinput,
-        .datepicker .form-horizontal .form-group-lg selectinput {
-          height: 45px;
-          line-height: 45px; }
-
-          textarea.input-lg, select[multiple].input-lg,
-          .form-horizontal .form-group-lg select[multiple].form-control,
-          .form-horizontal .form-group-lg textarea.form-control,
-          .input-group-lg select[multiple].form-control,
-          .input-group-lg select[multiple].input-group-addon,
-          .input-group-lg > .input-group-btn select[multiple].btn,
-          .input-group-lg textarea.form-control, .input-group-lg textarea.input-group-addon,
-          .input-group-lg > .input-group-btn textarea.btn,
-          .input-group-lg .datepicker selectinput[multiple],
-          .datepicker .input-group-lg selectinput[multiple],
-          .form-horizontal .form-group-lg .datepicker textareainput,
-          .datepicker .form-horizontal .form-group-lg textareainput,
-          .form-horizontal .form-group-lg .datepicker selectinput[multiple],
-          .datepicker .form-horizontal .form-group-lg selectinput[multiple],
-          .input-group-lg .datepicker textareainput,
-          .datepicker .input-group-lg textareainput {
-            height: auto; }
-            .has-success .help-block, .has-success .control-label, .has-success .radio,
-            .has-success .checkbox, .has-success .radio-inline, .has-success .checkbox-inline {
-              color: #3c763d; }
-              .has-success .form-control, .has-success .datepicker input,
-              .datepicker .has-success input {
-                border-color: #3c763d;
-                -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-                box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); }
-                .has-success .form-control:focus, .has-success .datepicker input:focus,
-                .datepicker .has-success input:focus {
-                  border-color: #2b542c;
-                  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
-                  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; }
-            .has-success .input-group-addon {
-              color: #3c763d;
-              border-color: #3c763d;
-              background-color: #dff0d8; }
-              .has-success .form-control-feedback {
-                color: #3c763d; }
-                .has-warning .help-block, .has-warning .control-label, .has-warning .radio,
-                .has-warning .checkbox, .has-warning .radio-inline, .has-warning .checkbox-inline {
-                  color: #8a6d3b; }
-                  .has-warning .form-control, .has-warning .datepicker input,
-                  .datepicker .has-warning input {
-                    border-color: #8a6d3b;
-                    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-                    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); }
-                    .has-warning .form-control:focus, .has-warning .datepicker input:focus,
-                    .datepicker .has-warning input:focus {
-                      border-color: #66512c;
-                      -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
-                      box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; }
-            .has-warning .input-group-addon {
-              color: #8a6d3b;
-              border-color: #8a6d3b;
-              background-color: #fcf8e3; }
-              .has-warning .form-control-feedback {
-                color: #8a6d3b; }
-                .has-error .help-block, .has-error .control-label, .has-error .radio,
-                .has-error .checkbox, .has-error .radio-inline, .has-error .checkbox-inline {
-                  color: #a94442; }
-                  .has-error .form-control, .has-error .datepicker input,
-                  .datepicker .has-error input {
-                    border-color: #a94442;
-                    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-                    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); }
-                    .has-error .form-control:focus, .has-error .datepicker input:focus,
-                    .datepicker .has-error input:focus {
-                      border-color: #843534;
-                      -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
-                      box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; }
-            .has-error .input-group-addon {
-              color: #a94442;
-              border-color: #a94442;
-              background-color: #f2dede; }
-              .has-error .form-control-feedback {
-                color: #a94442; }
-.form-control::-moz-placeholder, .datepicker input::-moz-placeholder {
-  color: #777;
-  opacity: 1; }
-  .form-control:-ms-input-placeholder, .datepicker input:-ms-input-placeholder {
-    color: #777; }
-    .form-control::-webkit-input-placeholder,
-    .datepicker input::-webkit-input-placeholder {
-      color: #777; }
-.input-group-addon.input-lg,
-.form-horizontal .form-group-lg .input-group-addon.form-control,
-.input-group-lg .input-group-addon.form-control,
-.input-group-lg .input-group-addon,
-.input-group-lg > .input-group-btn .input-group-addon.btn,
-.form-horizontal .form-group-lg .datepicker input.input-group-addon,
-.datepicker .form-horizontal .form-group-lg input.input-group-addon,
-.input-group-lg .datepicker input.input-group-addon,
-.datepicker .input-group-lg input.input-group-addon {
-  padding: 10px 16px;
-  font-size: 17px;
-  border-radius: 6px; }
-  .input-group-addon.input-sm,
-  .form-horizontal .form-group-sm .input-group-addon.form-control,
-  .input-group-sm .input-group-addon.form-control,
-  .input-group-sm .input-group-addon,
-  .input-group-sm > .input-group-btn .input-group-addon.btn,
-  .input-group-sm .datepicker input.input-group-addon,
-  .datepicker .input-group-sm input.input-group-addon,
-  .form-horizontal .form-group-sm .datepicker input.input-group-addon,
-  .datepicker .form-horizontal .form-group-sm input.input-group-addon {
-    padding: 5px 10px;
-    font-size: 12px;
-    border-radius: 3px; }
-
-.input-group {
-  position: relative;
-  display: table;
-  border-collapse: separate; }
-  .input-group[class*="col-"] {
-    float: none;
-    padding-left: 0;
-    padding-right: 0; }
-    .input-group .form-control, .input-group .datepicker input,
-    .datepicker .input-group input {
-      position: relative;
-      z-index: 2;
-      float: left;
-      width: 100%;
-      margin-bottom: 0; }
-
-.input-group-addon, .input-group-btn, .input-group .form-control,
-.input-group .datepicker input, .datepicker .input-group input {
-  display: table-cell; }
-  .input-group-addon:not(:first-child):not(:last-child),
-  .input-group-btn:not(:first-child):not(:last-child),
-  .input-group .form-control:not(:first-child):not(:last-child),
-  .input-group .datepicker input:not(:first-child):not(:last-child),
-  .datepicker .input-group input:not(:first-child):not(:last-child) {
-    border-radius: 0; }
-
-.input-group-addon, .input-group-btn {
-  width: 1%;
-  white-space: nowrap;
-  vertical-align: middle; }
-
-  .input-group-addon {
-    padding: 6px 12px;
-    font-size: 13px;
-    font-weight: normal;
-    line-height: 1;
-    color: #555;
-    text-align: center;
-    background-color: #eee;
-    border: 1px solid #ccc;
-    border-radius: 4px; }
-    .input-group-addon input[type="radio"], .input-group-addon input[type="checkbox"] {
-      margin-top: 0; }
-
-.input-group .form-control:first-child, .input-group-addon:first-child,
-.input-group-btn:first-child > .btn,
-.input-group-btn:first-child > .btn-group > .btn,
-.input-group-btn:first-child > .dropdown-toggle,
-.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
-.input-group-btn:last-child > .btn-group:not(:last-child) > .btn,
-.input-group .datepicker input:first-child,
-.datepicker .input-group input:first-child {
-  border-bottom-right-radius: 0;
-  border-top-right-radius: 0; }
-
-  .input-group-addon:first-child {
-    border-right: 0; }
-
-    .input-group .form-control:last-child, .input-group-addon:last-child,
-    .input-group-btn:last-child > .btn,
-    .input-group-btn:last-child > .btn-group > .btn,
-    .input-group-btn:last-child > .dropdown-toggle,
-    .input-group-btn:first-child > .btn:not(:first-child),
-    .input-group-btn:first-child > .btn-group:not(:first-child) > .btn,
-    .input-group .datepicker input:last-child,
-    .datepicker .input-group input:last-child {
-      border-bottom-left-radius: 0;
-      border-top-left-radius: 0; }
-
-      .input-group-addon:last-child {
-        border-left: 0; }
-
-        .input-group-btn {
-          position: relative;
-          font-size: 0;
-          white-space: nowrap; }
-          .input-group-btn > .btn {
-            position: relative; }
-            .input-group-btn > .btn + .btn {
-              margin-left: -1px; }
-              .input-group-btn > .btn:hover, .input-group-btn > .btn:focus,
-              .input-group-btn > .btn:active {
-                z-index: 2; }
-          .input-group-btn:first-child > .btn, .input-group-btn:first-child > .btn-group {
-            margin-right: -1px; }
-          .input-group-btn:last-child > .btn, .input-group-btn:last-child > .btn-group {
-            margin-left: -1px; }
-.btn {
-	display: inline-block;
-	margin-bottom: 0;
-	font-weight: normal;
-	text-align: center;
-	vertical-align: middle;
-	cursor: pointer;
-	background-image: none;
-	border: 1px solid transparent;
-	white-space: nowrap;
-	padding: 6px 12px;
-	font-size: 13px;
-	line-height: 1.5;
-	border-radius: 4px;
-	-webkit-user-select: none;
-	-moz-user-select: none;
-	-ms-user-select: none;
-	user-select: none; }
-.btn:focus, .btn:active:focus, .btn.active:focus {
-    outline: thin dotted;
-    outline: 5px auto -webkit-focus-ring-color;
-    outline-offset: -2px; }
-.btn:hover, .btn:focus {
-    color: #333;
-    text-decoration: none; }
-.btn:active, .btn.active {
-	outline: 0;
-	background-image: none;
-	-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.12);
-	box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.12); }
-.btn.disabled, .btn[disabled], fieldset[disabled] .btn {
-	cursor: not-allowed;
-	pointer-events: none;
-	opacity: 0.65;
-	filter: alpha(opacity=65);
-	-webkit-box-shadow: none;
-	box-shadow: none; }
-
-.btn-default {
-  color: #333;
-  background-color: #fff;
-  border-color: #ccc; }
-
-.btn-primary {
- 	font-weight: 700;
-    color: #ffffff !important;
-    background: #0572ce !important;
-    border-color: #0572ce !important; 
-   }
-
-.btn-success {
-	color: #fff;
-	background-color: #5cb85c;
-	border-color: #4cae4c; }
-
-.btn-info {
-	color: #fff;
-	background-color: #5bc0de;
-	border-color: #46b8da; }
-
-.btn-warning {
-	color: #fff;
-	background-color: #f0ad4e;
-	border-color: #eea236; }
-
-.table_actions .btn-danger {
-	color: #ffffff !important;
-	background: #0572ce !important;
-	border: 1px solid #0572ce !important; }
-
-.actions_column .btn-danger:hover, .actions_column .btn-danger:focus, .actions_column .btn-danger:active  {
-	background: #eeeeee !important;
-	border-color: #cccccc !important;
-	color: #000000;
-}
-	
-.btn-link {
-	color: #428bca;
-	font-weight: normal;
-	cursor: pointer;
-	border-radius: 0; }
-.btn-link, .btn-link:active, .btn-link[disabled], fieldset[disabled] .btn-link {
-	background-color: transparent;
-	-webkit-box-shadow: none;
-	box-shadow: none; }
-.btn-link, .btn-link:hover, .btn-link:focus, .btn-link:active {
-	border-color: transparent; }
-.btn-link:hover, .btn-link:focus {
-	color: #005D9D;
-	text-decoration: underline;
-	background-color: transparent; }
-.btn-link[disabled]:hover, .btn-link[disabled]:focus,
-fieldset[disabled] .btn-link:hover, fieldset[disabled] .btn-link:focus {
-	color: #777;
-	text-decoration: none; }
-
-.btn-lg, .btn-group-lg .btn {
-  padding: 10px 16px;
-  font-size: 17px;
-  line-height: 1.33;
-  border-radius: 6px; }
-
-.btn-sm, .btn-group-sm .btn {
-    padding: 5px 10px;
-    font-size: 12px;
-    line-height: 1.5;
-    border-radius: 3px; }
-
-.btn-xs, .btn-group-xs .btn {
-	padding: 1px 5px;
-	font-size: 12px;
-	line-height: 1.5;
-	border-radius: 3px; 
-	background: #0572ce;
-	border: 1px solid #0572ce;
-	color: #ffffff;
-	font-weight: 400;
-	}
-
-.btn-xs:hover, .btn-group-xs .btn:hover,
-.btn-sm:hover, .btn-group-sm .btn:hover {
-	background: #0572ce;
-	border: 1px solid 0572ce;	
-}
-
-.actions_column .btn-sm:hover {
-	background: #ffffff;
-}
-
-.btn-block {
-	display: block;
-	width: 100%; }
-
-.btn-block + .btn-block {
-	margin-top: 5px; }
-
-input[type="submit"].btn-block, input[type="reset"].btn-block,
-input[type="button"].btn-block {
-	width: 100%; }	
-.btn-default:hover, .btn-default:focus, .btn-default:active, .btn-default.active,
-.open > .btn-default.dropdown-toggle {
-	color: #333;
-	background-color: #e6e6e6;
-	border-color: #adadad; }
-.btn-default:active, .btn-default.active, .open > .btn-default.dropdown-toggle {
-    background-image: none; }
-.btn-default.disabled, .btn-default.disabled:hover, .btn-default.disabled:focus,
-.btn-default.disabled:active, .btn-default.disabled.active, .btn-default[disabled],
-.btn-default[disabled]:hover, .btn-default[disabled]:focus,
-.btn-default[disabled]:active, .btn-default[disabled].active,
-fieldset[disabled] .btn-default, fieldset[disabled] .btn-default:hover,
-fieldset[disabled] .btn-default:focus, fieldset[disabled] .btn-default:active,
-fieldset[disabled] .btn-default.active {
-	background-color: #fff;
-	border-color: #ccc; }
-.btn-default .badge {
-	color: #fff;
-	background-color: #333; }
-.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active,
-.open > .btn-primary.dropdown-toggle, .btn-danger:hover {
-	color: #fff;
-    background-color: 0572ce !important;
-    border-color: 0572ce !important; 
-}
-.btn-primary:active, .btn-primary.active, .open > .btn-primary.dropdown-toggle {
-	background-image: none; }
-.btn-primary.disabled, .btn-primary.disabled:hover, .btn-primary.disabled:focus,
-.btn-primary.disabled:active, .btn-primary.disabled.active, .btn-primary[disabled],
-.btn-primary[disabled]:hover, .btn-primary[disabled]:focus,
-.btn-primary[disabled]:active, .btn-primary[disabled].active,
-fieldset[disabled] .btn-primary, fieldset[disabled] .btn-primary:hover,
-fieldset[disabled] .btn-primary:focus, fieldset[disabled] .btn-primary:active,
-fieldset[disabled] .btn-primary.active {
-	background-color: #428bca;
-	border-color: #357ebd; }
-.btn-primary .badge {
-	color: #428bca;
-	background-color: #fff; }
-.btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active,
-.open > .btn-success.dropdown-toggle {
-	color: #fff;
-    background-color: #449d44;
-    border-color: #398439; }
-.btn-success:active, .btn-success.active, .open > .btn-success.dropdown-toggle {
-	background-image: none; }
-.btn-success.disabled, .btn-success.disabled:hover, .btn-success.disabled:focus,
-.btn-success.disabled:active, .btn-success.disabled.active, .btn-success[disabled],
-.btn-success[disabled]:hover, .btn-success[disabled]:focus,
-.btn-success[disabled]:active, .btn-success[disabled].active,
-	fieldset[disabled] .btn-success, fieldset[disabled] .btn-success:hover,
-	fieldset[disabled] .btn-success:focus, fieldset[disabled] .btn-success:active,
-	fieldset[disabled] .btn-success.active {
-	background-color: #5cb85c;
-	border-color: #4cae4c; }
-.btn-success .badge {
-	color: #5cb85c;
-	background-color: #fff; }
-.btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active,
-.open > .btn-info.dropdown-toggle {
-    color: #fff;
-    background-color: #31b0d5;
-    border-color: #269abc; }
-.btn-info:active, .btn-info.active, .open > .btn-info.dropdown-toggle {
-	background-image: none; }
-.btn-info.disabled, .btn-info.disabled:hover, .btn-info.disabled:focus,
-.btn-info.disabled:active, .btn-info.disabled.active, .btn-info[disabled],
-.btn-info[disabled]:hover, .btn-info[disabled]:focus, .btn-info[disabled]:active,
-.btn-info[disabled].active, fieldset[disabled] .btn-info,
-	fieldset[disabled] .btn-info:hover, fieldset[disabled] .btn-info:focus,
-	fieldset[disabled] .btn-info:active, fieldset[disabled] .btn-info.active {
-	background-color: #5bc0de;
-	border-color: #46b8da; }
-.btn-info .badge {
-	color: #5bc0de;
-	background-color: #fff; }
-.btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active,
-.open > .btn-warning.dropdown-toggle {
-    color: #fff;
-    background-color: #ec971f;
-	border-color: #d58512; }
-.btn-warning:active, .btn-warning.active, .open > .btn-warning.dropdown-toggle {
-	background-image: none; }
-.btn-warning.disabled, .btn-warning.disabled:hover, .btn-warning.disabled:focus,
-.btn-warning.disabled:active, .btn-warning.disabled.active, .btn-warning[disabled],
-.btn-warning[disabled]:hover, .btn-warning[disabled]:focus,
-.btn-warning[disabled]:active, .btn-warning[disabled].active,
-fieldset[disabled] .btn-warning, fieldset[disabled] .btn-warning:hover,
-fieldset[disabled] .btn-warning:focus, fieldset[disabled] .btn-warning:active,
-fieldset[disabled] .btn-warning.active {
-	background-color: #f0ad4e;
-	border-color: #eea236; }
-.btn-warning .badge {
-	color: #f0ad4e;
-	background-color: #fff; }
-.btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active,
-.open > .btn-danger.dropdown-toggle {
-	color: #ffffff;
-	background: 0572ce;
-	border-color: 0572ce;	
-   }
-.btn-danger:active, .btn-danger.active, .open > .btn-danger.dropdown-toggle {
-	background-image: none; }
-.btn-danger.disabled, .btn-danger.disabled:hover, .btn-danger.disabled:focus,
-.btn-danger.disabled:active, .btn-danger.disabled.active, .btn-danger[disabled],
-.btn-danger[disabled]:hover, .btn-danger[disabled]:focus,
-.btn-danger[disabled]:active, .btn-danger[disabled].active,
-fieldset[disabled] .btn-danger, fieldset[disabled] .btn-danger:hover,
-fieldset[disabled] .btn-danger:focus, fieldset[disabled] .btn-danger:active,
-fieldset[disabled] .btn-danger.active {
-	background-color: #dde7ee;
-	border-color: #cedae2; }
-.btn-danger .badge {
-  color: #d9534f;
-  background-color: #fff; }
-.fade {
-  opacity: 0;
-  -webkit-transition: opacity 0.15s linear;
-  -o-transition: opacity 0.15s linear;
-  transition: opacity 0.15s linear; }
-  .fade.in {
-    opacity: 1; }
-
-.collapse {
-  display: none; }
-  .collapse.in {
-    display: block; }
-
-tr.collapse.in {
-  display: table-row; }
-
-  tbody.collapse.in {
-    display: table-row-group; }
-
-    .collapsing {
-      position: relative;
-      height: 0;
-      overflow: hidden;
-      -webkit-transition: height 0.35s ease;
-      -o-transition: height 0.35s ease;
-      transition: height 0.35s ease; }
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  margin-left: 2px;
-  vertical-align: middle;
-  border-top: 4px solid;
-  border-right: 4px solid transparent;
-  border-left: 4px solid transparent; }
-
-  .dropdown {
-    position: relative; }
-
-    .dropdown-toggle:focus {
-      outline: 0; }
-
-.dropdown-menu {
-	position: absolute;
-	top: 100%;
-	left: 0;
-	z-index: 1000;
-	display: none;
-	float: left;
-	min-width: 160px;
-	padding: 5px 0;
-	margin: 2px 0 0;
-	list-style: none;
-	font-size: 13px;
-	text-align: left;
-	background-color: #fff;
-	border: 1px solid #c4ced7;
-	border-radius: 2px;
-	-webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.17);
-	box-shadow: 0 6px 12px rgba(0, 0, 0, 0.17);
-	background-clip: padding-box; }
-.dropdown-menu.pull-right {
-	right: 0;
-	left: auto; }
-.dropdown-menu .divider {
-	height: 1px;
-	margin: 8px 0;
-	overflow: hidden;
-	background-color: #e5e5e5; }
-.dropdown-menu > li > a {
-	display: block;
-	padding: 3px 20px;
-	clear: both;
-	font-weight: normal;
-	line-height: 1.5;
-	color: #333;
-	white-space: nowrap; }
-
-.dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus {
-  text-decoration: none;
-  color: #262626;
-  background-color: #f5f5f5; }
-
-.dropdown-menu > .active > a, .dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
-  color: #fff;
-  text-decoration: none;
-  outline: 0;
-  background-color: #428bca; }
-
-.dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  color: #777; }
-
-.dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus {
-  text-decoration: none;
-  background-color: transparent;
-  background-image: none;
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  cursor: not-allowed; }
-
-.open > .dropdown-menu {
-  display: block; }
-  .open > a {
-    outline: 0; }
-
-#editor_list li a {
-	border: 1px solid #ffffff;
-	background: #ffffff;
-	color: #000000;
-	height: 30px;
-	width: 100%;
-	line-height: 30px;
-	padding-left: 12px;
-	vertical-align: middle;
-}
-
-#editor_list li a:hover {
-	border: 1px solid #ebeced;
-	background: #ebeced;
-}
-
-.dropdown-menu-right {
-  left: auto;
-  right: 0; }
-
-  .dropdown-menu-left {
-    left: 0;
-    right: auto; }
-
-    .dropdown-header {
-      display: block;
-      padding: 3px 20px;
-      font-size: 12px;
-      line-height: 1.5;
-      color: #777;
-      white-space: nowrap; }
-
-      .dropdown-backdrop {
-        position: fixed;
-        left: 0;
-        right: 0;
-        bottom: 0;
-        top: 0;
-        z-index: 990; }
-
-        .pull-right > .dropdown-menu {
-          right: 0;
-          left: auto; }
-
-          .dropup .caret, .navbar-fixed-bottom .dropdown .caret {
-            border-top: 0;
-            border-bottom: 4px solid;
-            content: ""; }
-            .dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu {
-              top: auto;
-              bottom: 100%;
-              margin-bottom: 1px; }
-
-@media (min-width: 768px) {
-  .navbar-right .dropdown-menu {
-    right: 0;
-    left: auto;   }
-    .navbar-right .dropdown-menu-left {
-      left: 0;
-      right: auto;   }
-}
-.btn-group, .btn-group-vertical {
-  position: relative;
-  display: inline-block;
-  vertical-align: middle; }
-  .btn-group > .btn, .btn-group-vertical > .btn {
-    position: relative;
-    float: left; }
-    .btn-group > .btn:hover, .btn-group > .btn:focus, .btn-group > .btn:active,
-    .btn-group > .btn.active, .btn-group-vertical > .btn:hover,
-    .btn-group-vertical > .btn:focus, .btn-group-vertical > .btn:active,
-    .btn-group-vertical > .btn.active {
-      z-index: 2; }
-      .btn-group > .btn:focus, .btn-group-vertical > .btn:focus {
-        outline: 0; }
-
-.btn-group .btn + .btn, .btn-group .btn + .btn-group, .btn-group .btn-group + .btn,
-.btn-group .btn-group + .btn-group {
-  margin-left: -1px; }
-
-.btn-toolbar {
-	margin-left: -5px; }
-.btn-toolbar .btn-group, .btn-toolbar .input-group {
-	float: left; }
-.btn-toolbar > .btn, .btn-toolbar > .btn-group, .btn-toolbar > .input-group {
-	margin-left: 5px; }
-
-.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
-  border-radius: 0; }
-
-.btn-group > .btn:first-child {
-	margin-left: 0; }
-.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
-	border-bottom-right-radius: 0;
-	border-top-right-radius: 0; }
-
-.btn-group > .btn:last-child:not(:first-child),
-.btn-group > .dropdown-toggle:not(:first-child) {
-  border-bottom-left-radius: 0;
-  border-top-left-radius: 0; }
-
-.btn-group > .btn-group {
-    float: left; }
-
-.btn-group a:hover {
-	background: #ffffff;
-	border: 1px solid #cccccc;
-}
-
-.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
-	border-radius: 0; }
-
-.btn-group > .btn-group:first-child > .btn:last-child,
-.btn-group > .btn-group:first-child > .dropdown-toggle {
-	border-bottom-right-radius: 0;
-	border-top-right-radius: 0; }
-
-.btn-group > .btn-group:last-child > .btn:first-child {
-  border-bottom-left-radius: 0;
-  border-top-left-radius: 0; }
-
-  .btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle {
-    outline: 0; }
-
-    .btn-group > .btn-lg + .dropdown-toggle,
-    .btn-group .btn-group-lg > .btn + .dropdown-toggle,
-    .btn-group-lg .btn-group > .btn + .dropdown-toggle {
-      padding-left: 12px;
-      padding-right: 12px; }
-
-      .btn-lg .caret, .btn-group-lg .btn .caret {
-        border-width: 5px 5px 0;
-        border-bottom-width: 0; }
-
-        .dropup .btn-lg .caret, .dropup .btn-group-lg .btn .caret,
-        .btn-group-lg .dropup .btn .caret {
-          border-width: 0 5px 5px; }
-
-          .btn-group > .btn + .dropdown-toggle {
-            padding-left: 8px;
-            padding-right: 8px; }
-
-            .btn-group.open .dropdown-toggle {
-              -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.12);
-              box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.12); }
-              .btn-group.open .dropdown-toggle.btn-link {
-                -webkit-box-shadow: none;
-                box-shadow: none; }
-
-.btn .caret {
-  margin-left: 0; }
-
-  .btn-group-vertical > .btn, .btn-group-vertical > .btn-group,
-  .btn-group-vertical > .btn-group > .btn {
-    display: block;
-    float: none;
-    width: 100%;
-    max-width: 100%; }
-    .btn-group-vertical > .btn-group > .btn {
-      float: none; }
-  .btn-group-vertical > .btn + .btn, .btn-group-vertical > .btn + .btn-group,
-  .btn-group-vertical > .btn-group + .btn,
-  .btn-group-vertical > .btn-group + .btn-group {
-    margin-top: -1px;
-    margin-left: 0; }
-
-.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
-  border-radius: 0; }
-  .btn-group-vertical > .btn:first-child:not(:last-child) {
-    border-top-right-radius: 4px;
-    border-bottom-right-radius: 0;
-    border-bottom-left-radius: 0; }
-    .btn-group-vertical > .btn:last-child:not(:first-child) {
-      border-bottom-left-radius: 4px;
-      border-top-right-radius: 0;
-      border-top-left-radius: 0; }
-
-.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
-  border-radius: 0; }
-
-  .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
-  .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
-    border-bottom-right-radius: 0;
-    border-bottom-left-radius: 0; }
-
-.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
-  border-top-right-radius: 0;
-  border-top-left-radius: 0; }
-
-  .btn-group-justified {
-    display: table;
-    width: 100%;
-    table-layout: fixed;
-    border-collapse: separate; }
-    .btn-group-justified > .btn, .btn-group-justified > .btn-group {
-      float: none;
-      display: table-cell;
-      width: 1%; }
-      .btn-group-justified > .btn-group .btn {
-        width: 100%; }
-        .btn-group-justified > .btn-group .dropdown-menu {
-          left: auto; }
-
-[data-toggle="buttons"] > .btn > input[type="radio"],
-[data-toggle="buttons"] > .btn > input[type="checkbox"] {
-	position: absolute;
-	z-index: -1;
-	opacity: 0;
-	filter: alpha(opacity=0); }
-.navbar-btn.btn-xs, .btn-group-xs .navbar-btn.btn {
-	margin-top: 14px;
-	margin-bottom: 14px; }
-.navbar-btn.btn-sm, .btn-group-sm .navbar-btn.btn {
-	margin-top: 10px;
-    margin-bottom: 10px; }
-
-.navbar {
-	position: relative;
-	min-height: 50px;
-	margin-bottom: 18px;
-	border: 1px solid transparent; }
-@media (min-width: 768px) {
-    .navbar {
-      border-radius: 4px;   }
-}
-
-@media (min-width: 768px) {
-  .navbar-header {
-    float: left;   }
-}
-
-.navbar-collapse {
-  overflow-x: visible;
-  padding-right: 15px;
-  padding-left: 15px;
-  border-top: 1px solid transparent;
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
-  -webkit-overflow-scrolling: touch; }
-  .navbar-collapse.in {
-    overflow-y: auto; }
-    @media (min-width: 768px) {
-      .navbar-collapse {
-        width: auto;
-        border-top: 0;
-        box-shadow: none;   }
-        .navbar-collapse.collapse {
-          display: block !important;
-          height: auto !important;
-          padding-bottom: 0;
-          overflow: visible !important;   }
-          .navbar-collapse.in {
-            overflow-y: visible;   }
-            .navbar-fixed-top .navbar-collapse, .navbar-static-top .navbar-collapse,
-            .navbar-fixed-bottom .navbar-collapse {
-              padding-left: 0;
-              padding-right: 0;   }
-}
-
-.navbar-fixed-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse {
-  max-height: 340px; }
-  @media (max-width: 480px) and (orientation: landscape) {
-    .navbar-fixed-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse {
-      max-height: 200px;   }
-}
-
-.container > .navbar-header, .container > .navbar-collapse,
-.container-fluid > .navbar-header, .container-fluid > .navbar-collapse {
-  margin-right: -15px;
-  margin-left: -15px; }
-  @media (min-width: 768px) {
-    .container > .navbar-header, .container > .navbar-collapse,
-    .container-fluid > .navbar-header, .container-fluid > .navbar-collapse {
-      margin-right: 0;
-      margin-left: 0;   }
-}
-
-.navbar-static-top {
-  z-index: 1000;
-  border-width: 0 0 1px; }
-  @media (min-width: 768px) {
-    .navbar-static-top {
-      border-radius: 0;   }
-}
-
-.navbar-fixed-top, .navbar-fixed-bottom {
-  position: fixed;
-  right: 0;
-  left: 0;
-  z-index: 1030;
-  -webkit-transform: translate3d(0, 0, 0);
-  transform: translate3d(0, 0, 0); }
-  @media (min-width: 768px) {
-    .navbar-fixed-top, .navbar-fixed-bottom {
-      border-radius: 0;   }
-}
-
-.navbar-fixed-top {
-  top: 0;
-  border-width: 0 0 1px; }
-
-  .navbar-fixed-bottom {
-    bottom: 0;
-    margin-bottom: 0;
-    border-width: 1px 0 0; }
-
-    .navbar-brand {
-      float: left;
-      padding: 16px 15px;
-      font-size: 17px;
-      line-height: 18px;
-      height: 50px; }
-      .navbar-brand:hover, .navbar-brand:focus {
-        text-decoration: none; }
-        @media (min-width: 768px) {
-          .navbar > .container .navbar-brand, .navbar > .container-fluid .navbar-brand {
-            margin-left: -15px;   }
-}
-
-.navbar-toggle {
-  position: relative;
-  float: right;
-  margin-right: 15px;
-  padding: 9px 10px;
-  margin-top: 8px;
-  margin-bottom: 8px;
-  background-color: transparent;
-  background-image: none;
-  border: 1px solid transparent;
-  border-radius: 4px; }
-  .navbar-toggle:focus {
-    outline: 0; }
-    .navbar-toggle .icon-bar {
-      display: block;
-      width: 22px;
-      height: 2px;
-      border-radius: 1px; }
-      .navbar-toggle .icon-bar + .icon-bar {
-        margin-top: 4px; }
-        @media (min-width: 768px) {
-          .navbar-toggle {
-            display: none;   }
-}
-
-.navbar-nav {
-  margin: 8px -15px; }
-  .navbar-nav > li > a {
-    padding-top: 10px;
-    padding-bottom: 10px;
-    line-height: 18px; }
-    @media (max-width: 767px) {
-      .navbar-nav .open .dropdown-menu {
-        position: static;
-        float: none;
-        width: auto;
-        margin-top: 0;
-        background-color: transparent;
-        border: 0;
-        box-shadow: none;   }
-        .navbar-nav .open .dropdown-menu > li > a,
-        .navbar-nav .open .dropdown-menu .dropdown-header {
-          padding: 5px 15px 5px 25px;   }
-          .navbar-nav .open .dropdown-menu > li > a {
-            line-height: 18px;   }
-            .navbar-nav .open .dropdown-menu > li > a:hover,
-            .navbar-nav .open .dropdown-menu > li > a:focus {
-              background-image: none;   }
-}
-  @media (min-width: 768px) {
-    .navbar-nav {
-      float: left;
-      margin: 0;   }
-      .navbar-nav > li {
-        float: left;   }
-        .navbar-nav > li > a {
-          padding-top: 16px;
-          padding-bottom: 16px;   }
-      .navbar-nav.navbar-right:last-child {
-        margin-right: -15px;   }
-}
-
-@media (min-width: 768px) {
-  .navbar-left {
-    float: left !important;   }
-    .navbar-right {
-      float: right !important;   }
-}
-
-.navbar-form {
-  margin-left: -15px;
-  margin-right: -15px;
-  padding: 10px 15px;
-  border-top: 1px solid transparent;
-  border-bottom: 1px solid transparent;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
-  margin-top: 9px;
-  margin-bottom: 9px; }
-  @media (max-width: 767px) {
-    .navbar-form .form-group {
-      margin-bottom: 5px;   }
-}
-  @media (min-width: 768px) {
-    .navbar-form {
-      width: auto;
-      border: 0;
-      margin-left: 0;
-      margin-right: 0;
-      padding-top: 0;
-      padding-bottom: 0;
-      -webkit-box-shadow: none;
-      box-shadow: none;   }
-      .navbar-form.navbar-right:last-child {
-        margin-right: -15px;   }
-}
-
-.navbar-nav > li > .dropdown-menu {
-  margin-top: 0;
-  border-top-right-radius: 0;
-  border-top-left-radius: 0; }
-
-  .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
-    border-bottom-right-radius: 0;
-    border-bottom-left-radius: 0; }
-
-    .navbar-btn {
-      margin-top: 9px;
-      margin-bottom: 9px; }
-
-      .navbar-text {
-        margin-top: 16px;
-        margin-bottom: 16px; }
-        @media (min-width: 768px) {
-          .navbar-text {
-            float: left;
-            margin-left: 15px;
-            margin-right: 15px;   }
-            .navbar-text.navbar-right:last-child {
-              margin-right: 0;   }
-}
-
-.navbar-default {
-  background-color: #f8f8f8;
-  border-color: #e7e7e7; }
-  .navbar-default .navbar-brand {
-    color: #777; }
-    .navbar-default .navbar-brand:hover, .navbar-default .navbar-brand:focus {
-      color: #5e5e5e;
-      background-color: transparent; }
-  .navbar-default .navbar-text {
-    color: #777; }
-    .navbar-default .navbar-nav > li > a {
-      color: #777; }
-      .navbar-default .navbar-nav > li > a:hover,
-      .navbar-default .navbar-nav > li > a:focus {
-        color: #333;
-        background-color: transparent; }
-    .navbar-default .navbar-nav > .active > a,
-    .navbar-default .navbar-nav > .active > a:hover,
-    .navbar-default .navbar-nav > .active > a:focus {
-      color: #555;
-      background-color: #e7e7e7; }
-    .navbar-default .navbar-nav > .disabled > a,
-    .navbar-default .navbar-nav > .disabled > a:hover,
-    .navbar-default .navbar-nav > .disabled > a:focus {
-      color: #ccc;
-      background-color: transparent; }
-  .navbar-default .navbar-toggle {
-    border-color: #ddd; }
-    .navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus {
-      background-color: #ddd; }
-      .navbar-default .navbar-toggle .icon-bar {
-        background-color: #888; }
-  .navbar-default .navbar-collapse, .navbar-default .navbar-form {
-    border-color: #e7e7e7; }
-    .navbar-default .navbar-nav > .open > a,
-    .navbar-default .navbar-nav > .open > a:hover,
-    .navbar-default .navbar-nav > .open > a:focus {
-      background-color: #e7e7e7;
-      color: #555; }
-    @media (max-width: 767px) {
-      .navbar-default .navbar-nav .open .dropdown-menu > li > a {
-        color: #777;   }
-        .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
-        .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
-          color: #333;
-          background-color: transparent;   }
-      .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
-      .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
-      .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
-        color: #555;
-        background-color: #e7e7e7;   }
-      .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
-      .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
-      .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
-        color: #ccc;
-        background-color: transparent;   }
-}
-  .navbar-default .navbar-link {
-    color: #777; }
-    .navbar-default .navbar-link:hover {
-      color: #333; }
-  .navbar-default .btn-link {
-    color: #777; }
-    .navbar-default .btn-link:hover, .navbar-default .btn-link:focus {
-      color: #333; }
-      .navbar-default .btn-link[disabled]:hover,
-      .navbar-default .btn-link[disabled]:focus,
-      fieldset[disabled] .navbar-default .btn-link:hover,
-      fieldset[disabled] .navbar-default .btn-link:focus {
-        color: #ccc; }
-
-.navbar-inverse {
-  background-color: #222;
-  border-color: #080808; }
-  .navbar-inverse .navbar-brand {
-    color: #777; }
-    .navbar-inverse .navbar-brand:hover, .navbar-inverse .navbar-brand:focus {
-      color: #fff;
-      background-color: transparent; }
-  .navbar-inverse .navbar-text {
-    color: #777; }
-    .navbar-inverse .navbar-nav > li > a {
-      color: #777; }
-      .navbar-inverse .navbar-nav > li > a:hover,
-      .navbar-inverse .navbar-nav > li > a:focus {
-        color: #fff;
-        background-color: transparent; }
-    .navbar-inverse .navbar-nav > .active > a,
-    .navbar-inverse .navbar-nav > .active > a:hover,
-    .navbar-inverse .navbar-nav > .active > a:focus {
-      color: #fff;
-      background-color: #080808; }
-    .navbar-inverse .navbar-nav > .disabled > a,
-    .navbar-inverse .navbar-nav > .disabled > a:hover,
-    .navbar-inverse .navbar-nav > .disabled > a:focus {
-      color: #444;
-      background-color: transparent; }
-  .navbar-inverse .navbar-toggle {
-    border-color: #333; }
-    .navbar-inverse .navbar-toggle:hover, .navbar-inverse .navbar-toggle:focus {
-      background-color: #333; }
-      .navbar-inverse .navbar-toggle .icon-bar {
-        background-color: #fff; }
-  .navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form {
-    border-color: #101010; }
-    .navbar-inverse .navbar-nav > .open > a,
-    .navbar-inverse .navbar-nav > .open > a:hover,
-    .navbar-inverse .navbar-nav > .open > a:focus {
-      background-color: #080808;
-      color: #fff; }
-    @media (max-width: 767px) {
-      .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
-        border-color: #080808;   }
-        .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
-          background-color: #080808;   }
-          .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
-            color: #777;   }
-            .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
-            .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
-              color: #fff;
-              background-color: transparent;   }
-      .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
-      .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
-      .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
-        color: #fff;
-        background-color: #080808;   }
-      .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
-      .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
-      .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
-        color: #444;
-        background-color: transparent;   }
-}
-  .navbar-inverse .navbar-link {
-    color: #777; }
-    .navbar-inverse .navbar-link:hover {
-      color: #fff; }
-  .navbar-inverse .btn-link {
-    color: #777; }
-    .navbar-inverse .btn-link:hover, .navbar-inverse .btn-link:focus {
-      color: #fff; }
-      .navbar-inverse .btn-link[disabled]:hover,
-      .navbar-inverse .btn-link[disabled]:focus,
-      fieldset[disabled] .navbar-inverse .btn-link:hover,
-      fieldset[disabled] .navbar-inverse .btn-link:focus {
-        color: #444; }
-.btn-xs .badge, .btn-group-xs .btn .badge {
-  top: 0;
-  padding: 1px 5px; }
-
-.badge {
-  display: inline-block;
-  min-width: 10px;
-  padding: 3px 7px;
-  font-size: 12px;
-  font-weight: bold;
-  color: #fff;
-  line-height: 1;
-  vertical-align: baseline;
-  white-space: nowrap;
-  text-align: center;
-  background-color: #777;
-  border-radius: 10px; }
-  .badge:empty {
-    display: none; }
-    .btn .badge {
-      position: relative;
-      top: -1px; }
-a.list-group-item.active > .badge, .nav-pills > .active > a > .badge {
-	color: #428bca;
-	background-color: #fff; }
-.nav-pills > li > a > .badge {
-	margin-left: 3px; }
-
-a.badge:hover, a.badge:focus {
-  color: #fff;
-  text-decoration: none;
-  cursor: pointer; }
-.nav {
-  margin-bottom: 0;
-  padding-left: 0;
-  list-style: none; }
-  .nav > li {
-    position: relative;
-    display: block; }
-    .nav > li > a {
-      position: relative;
-      display: block;
-      padding: 10px 15px; }
-      .nav > li > a:hover, .nav > li > a:focus {
-        text-decoration: none;
-        background-color: #eee; }
-    .nav > li.disabled > a {
-      color: #777; }
-      .nav > li.disabled > a:hover, .nav > li.disabled > a:focus {
-        color: #777;
-        text-decoration: none;
-        background-color: transparent;
-        cursor: not-allowed; }
-.nav .open > a, .nav .open > a:hover, .nav .open > a:focus {
-	background-color: #eee;
-    border-color: #428bca; }
-.nav .nav-divider {
-    height: 1px;
-    margin: 8px 0;
-    overflow: hidden;
-    background-color: #e5e5e5; }
-    .nav > li > a > img {
-      max-width: none; }
-
-.nav-tabs {
-  border-bottom: 1px solid #dddddd; }
-.nav-tabs > li {
-    float: left;
-    margin-bottom: -1px; }
-.nav-tabs > li > a {
-      margin-right: 2px;
-      line-height: 1.5;
-      border: 1px solid transparent;
-}
-      
-.nav-tabs > li > a:hover {
-	border: 1px solid transparent;
-	border-bottom: 1px solid #dddddd;
-	/*border-color: #eee #eee #ddd;*/ 
-	text-decoration: underline;
-	background: #ffffff;
-}
-.nav-tabs > li.active > a, .nav-tabs > li.active > a:hover,
-.nav-tabs > li.active > a:focus {
-	/*color: #555;*/
-	font-weight: 600;
-	background-color: #fff;
-	border: 1px solid #ddd;
-	border-bottom-color: #fff;
-	text-decoration: none;
-	background: url(../img/content_tab_bkgd_selected.png) repeat-x;
-	cursor: default; }
-
-.nav-justified, .nav-tabs.nav-justified {
-  width: 100%; }
-  .nav-justified > li, .nav-tabs.nav-justified > li {
-    float: none; }
-    .nav-justified > li > a, .nav-tabs.nav-justified > li > a {
-      text-align: center;
-      margin-bottom: 5px; }
-  .nav-justified > .dropdown .dropdown-menu,
-  .nav-tabs.nav-justified > .dropdown .dropdown-menu {
-    top: auto;
-    left: auto; }
-    @media (min-width: 768px) {
-      .nav-justified > li, .nav-tabs.nav-justified > li {
-        display: table-cell;
-        width: 1%;   }
-        .nav-justified > li > a, .nav-tabs.nav-justified > li > a {
-          margin-bottom: 0;   }
-}
-
-.nav-tabs-justified, .nav-tabs.nav-justified {
-  border-bottom: 0; }
-  .nav-tabs-justified > li > a, .nav-tabs.nav-justified > li > a {
-    margin-right: 0;
-    border-radius: 4px; }
-    .nav-tabs-justified > .active > a, .nav-tabs-justified > .active > a:hover,
-    .nav-tabs-justified > .active > a:focus, .nav-tabs.nav-justified > .active > a,
-    .nav-tabs.nav-justified > .active > a:hover,
-    .nav-tabs.nav-justified > .active > a:focus {
-      border: 1px solid #ddd; }
-      @media (min-width: 768px) {
-        .nav-tabs-justified > li > a, .nav-tabs.nav-justified > li > a {
-          border-bottom: 1px solid #ddd;
-          border-radius: 4px 4px 0 0;   }
-          .nav-tabs-justified > .active > a, .nav-tabs-justified > .active > a:hover,
-          .nav-tabs-justified > .active > a:focus, .nav-tabs.nav-justified > .active > a,
-          .nav-tabs.nav-justified > .active > a:hover,
-          .nav-tabs.nav-justified > .active > a:focus {
-            border-bottom-color: #fff;   }
-}
-
-.nav-pills > li {
-	float: left; }
-.nav-pills > li > a {
-    border-radius: 4px; }
-.nav-pills > li + li {
-	margin-left: 2px; }
-.nav-pills > li.active > a, .nav-pills > li.active > a:hover,
-.nav-pills > li.active > a:focus {
-	color: #fff;
-	background-color: #428bca; }
-
-.nav-stacked > li {
-  float: none; }
-  .nav-stacked > li + li {
-    margin-top: 2px;
-    margin-left: 0; }
-
-.tab-content > .tab-pane {
-  display: none; }
-  .tab-content > .active {
-    display: block; }
-
-.nav-tabs .dropdown-menu {
-  margin-top: -1px;
-  border-top-right-radius: 0;
-  border-top-left-radius: 0; }
-.form-inline, .navbar-form, .table_actions {
-  display: inline; }
-.form-inline input, .form-inline button, .form-inline a.btn, .navbar-form input,
-.navbar-form button, .navbar-form a.btn, .table_actions input,
-.table_actions button, .table_actions a.btn {
-    margin-left: 5px; 
-	background: -moz-linear-gradient(top, #f1f3f4, #e3e8ea);
-  	background: -ms-linear-gradient(top, #f1f3f4, #e3e8ea);
-  	background: -webkit-gradient(linear, 0 0, 0 100%, from(#f1f3f4), to(#e3e8ea));
-  	background: -webkit-linear-gradient(top, #f1f3f4, #e3e8ea);
-  	background: -o-linear-gradient(top, #f1f3f4, #e3e8ea);
-  	background: linear-gradient(top, #f1f3f4, #e3e8ea);
-  	background-repeat: repeat-x;
-  	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);
- 	border: 1px solid #C3CED7;
- 	font-weight: 700;
-}
-
-.form-inline input:hover, .form-inline button:hover, .form-inline a.btn:hover, .navbar-form input:hover,
-.navbar-form button:hover, .navbar-form a.btn:hover, .table_actions input:hover,
-.table_actions button:hover, .table_actions a.btn:hover {
-  background: -moz-linear-gradient(top, #F8F9FA, #F1F4F5);
-  background: -ms-linear-gradient(top, #F8F9FA, #F1F4F5);
-  background: -webkit-gradient(linear, 0 0, 0 100%, from(#F8F9FA), to(#F1F4F5));
-  background: -webkit-linear-gradient(top, #F8F9FA, #F1F4F5);
-  background: -o-linear-gradient(top, #F8F9FA, #F1F4F5);
-  background: linear-gradient(top, #F8F9FA, #F1F4F5);  
-  text-decoration: none;
-}
-
-.table_count {
-	font-weight: 700;
-}
-
-.clearfix:after {
-  visibility: hidden;
-  display: block;
-  font-size: 0;
-  content: " ";
-  clear: both;
-  height: 0; }
-
-* html .clearfix {
-	zoom: 1; }
-
-*:first-child + html .clearfix {
-	zoom: 1; }
-	
-@font-face {
-	font-family: 'anivers';
-        src: url('/static/dashboard/fonts/Anivers_Regular-webfont.eot?5f61443eb372');
-        src: url('/static/dashboard/fonts/Anivers_Regular-webfont.eot?iefix&5f61443eb372') format('eot'),
-                url('/static/dashboard/fonts/Anivers_Regular-webfont.woff?2c3db88030ec') format('woff'),
-                url('/static/dashboard/fonts/Anivers_Regular-webfont.ttf?6a7822aa21cf') format('truetype'),
-                url('/static/dashboard/fonts/Anivers_Regular-webfont.svg?1dbc53d268e6#webfont3JLVF59W') format('svg');
-	font-weight: normal;
-	font-style: normal; }
-
-body {
-	background-color: #ffffff;
-	color: #333333;
-	min-width: 900px; }
-
-small {
-	font-size: 11px; }
-
-a {
-	color: #145c9e;
-	text-decoration: none; }
-
-a:hover, a:focus {
-	color: #145c9e;
-	text-decoration: underline; }
-
-ul {
-	list-style: none;
-	margin: 0; }
-
-.list-bullet {
- 	list-style: disc; }
-
-.small-padding {
-	padding-left: 0;
-	padding-right: 5px;
-	padding-bottom: 5px; }
-
-dt {
-	font-weight: bold; }
-
-.topbar {
-	background: url('../img/OpenStack_banner.png') repeat-x;
-	height: 79px;
-	padding: 17px 0px 0px 20px;
-}
-
-.topbar .switcher_bar {
-	display: inline-block;
-	height: auto;
-	width: 160px;
-	max-width: 160px;
-	/*margin-bottom: 0;
-	margin-right: 10px;*/
-	padding: 0;
-	background: url('/static/dashboard/img/dropdown_ena.png') no-repeat;
-	background-position: 140px center;
-}
-
-	
-.topbar .switcher_bar ul#tenant_list a {
-	max-width: 160px;
-	overflow: hidden;
-	text-overflow: ellipsis; }
-
-.topbar .switcher_bar a {
-	margin-left: 0;
-	display: block; 
-	border: 1px solid #f5f5f5;
-	border-radius: 2px;
-	padding: 0px 0px 0px 6px;
-	color: #000000;
-}
-
-.topbar .switcher_bar a:hover, .topbar .switcher_bar a:active {
-	text-decoration: none;
-	border: 1px solid #0572ce;
-	background: url('/static/dashboard/img/dropdown_dwn.png') no-repeat right 6px center #0572ce;
-	color: #ffffff;
-}
-
-.topbar .open a {
-	border: 1px solid #0572ce;
-	background: url('/static/dashboard/img/dropdown_dwn.png') no-repeat right 6px center #0572ce;
-	color: #ffffff;
-}
-
-
-.topbar .switcher_bar ul {
-	width: 130px; }
-
-.topbar .switcher_bar div {
-	padding: 0px 20px 0px 8px;
-	line-height: 28px;
-	text-decoration: none;
-	overflow: hidden;
-	text-overflow: ellipsis; }
-
-.topbar .switcher_bar div:first-letter {
-	text-transform: capitalize;
-}
-
-.topbar .context-box {
-	display: inline; 
-	float: right;
-	position: relative;
-	right: 165px;
-}
-
-.hide_image {
-	background-image: none !important; }
-
-#profile_editor_switcher {
-	width: auto;
-	height: 28px;
-	vertical-align: top;
-	white-space: nowrap;
-	/*background-image: url('/static/dashboard/img/profile_drop.png?94c62ed0a520');*/
-	background-repeat: no-repeat;
-	background-position: right 6px center; 
-	line-height: 28px;
-	position: relative;
-	top: 4px;	
-}
-
-#profile_editor_switcher a, #profile_editor_switcher a:hover {
-	text-decoration: none;
-}
-
-#user_info {
-	margin: 0px;
-	margin-right: -57px;
-}
-
-#user_info > a {
-	color: #145c9e;
-	margin-left: 14px;
-	line-height: 38px;
-	font-size: 13px !important; 
-}
-
-#user_info > a:hover {
-	color: #145c9e;
-}
-
-.page-header {
-	margin: 0px;
-	padding: 19px 0px;
-	font-family: Arial, Helvetica, sans-serif;
-	height: auto;
-	width: 100%; }
-.page-header h2 {
-	margin: 0; }
-
-h2 {
-  color: #333333;
-  font-size: 30px;
-  font-weight: normal; }
-
-#splash .login {
-    background: url('/static/dashboard/img/OracleSolaris_login_banner.png') no-repeat;
-    position: absolute;
-    top: 80px;
-    left: 50%;
-    margin: 0 0 0 -195px;
-    padding-top: 79px;
-    width: 390px;
-    border: 1px solid #dddddd;
-    max-height: none;
-    border-radius: 6px;
-    box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-    background-clip: padding-box; }
-#splash .login form .error {
-	width: 100%; }
-#splash .login form input {
-	width: 100%; }
-#splash .login form select {
-	width: 360px; }
-
-#splash p.help-block {
-  display: none; }
-
-#create_container_form .modal-footer {
-	margin-top: 190px; }
-
-.container-fluid {
-	padding-left: 0; }
-
-.sidebar {
-    border: none;	
-    border-right: 1px solid #c4ced8;
-    border-bottom: 1px solid #c4ced8;
-    float: left;
-    width: 235px;
-    height: 800px; 
-    background: #ebeced;
-}
-
-.sidebar h4 {
-	margin-left: 14px;
-	color: #333333; }
-
-.sidebar .nav-tabs {
-	margin-top: -34px; }
-
-.sidebar .nav-tabs li.active a {
-	background-color: #ffffff; }
-
-h1.brand {
-	width: 100%;
-	margin: 0; }
-
-h1.brand a {
-	background: url('/static/dashboard/img/OracleSolaris_Logo.png') top left no-repeat;
-	display: block;
-	float: left;
-	padding-left: 115px;
-	color: #000000;
-	font-weight: 400;
-	width: 310px;
-	font-family: Arial, Helvetica, sans-serif;
-	font-size: 19px;
-	line-height: 35px;
- }
-
-h1.brand a:hover {
-	color: #000000;
-	text-decoration: none;
-}
-
-                  a.current_item {
-                    width: 163px;
-                    float: left; }
-
-                    a.current_item:hover {
-                      text-decoration: none; }
-
-                      a.current_item:hover h3, a.current_item:hover h4 {
-                        color: #005D9D;
-                        border-radius: 4px; }
-
-                        .sidebar .switcher_bar {
-                          width: 190px;
-                          height: 38px;
-                          padding: 5px 0;
-                          margin-left: 14px;
-                          margin-bottom: 15px; }
-
-                          .sidebar .switcher_bar a.dropdown-toggle {
-                            display: block;
-                            padding: 5px 0;
-                            background-image: url('/static/dashboard/img/drop_arrow.png?2ec1100baed3');
-                            border: 1px solid #c0d9e4;
-                            background-color: #e9f5fa;
-                            background-repeat: no-repeat;
-                            background-position: 167px 23px; }
-
-                            .sidebar .switcher_bar a.dropdown-toggle:hover {
-                              text-decoration: none;
-                              background-color: #cde8f4; }
-
-                              .sidebar .switcher_bar:focus {
-                                outline: none; }
-
-                                .sidebar .switcher_bar h3 {
-                                  color: #4790ae;
-                                  font-size: 16px;
-                                  margin: -6px 0 0 14px;
-                                  padding: 0;
-                                  overflow: hidden;
-                                  text-overflow: ellipsis;
-                                  white-space: nowrap; }
-                                  .sidebar .switcher_bar h3:hover {
-                                    white-space: normal;
-                                    overflow: visible;
-                                    text-overflow: none;
-                                    padding-right: 1em;
-                                    word-wrap: break-word; }
-
-.sidebar .switcher_bar h4 {
-  color: #6fabc4;
-  font-size: 10px;
-  text-transform: uppercase;
-  font-weight: normal;
-  padding: 0; }
-
-  .sidebar .switcher_bar ul {
-    border: 1px solid #c0d9e4;
-    margin-left: -1px;
-    width: 190px; }
-
-    .sidebar .switcher_bar li a:hover {
-      background: #92d6f1; }
-
-      #usage {
-        margin-bottom: 25px;
-        height: 125px; }
-
-        .usage_block {
-          background: #e8f8ff;
-          color: #84b6c5;
-          border: 1px solid #afe3fb;
-          border-radius: 5px;
-          float: left;
-          width: 29%;
-          margin-right: 5%;
-          min-height: 125px; }
-
-          .usage_block.last {
-            margin-right: 0; }
-
-            .usage_block h3 {
-              background: #cef0ff;
-              color: #4fa5bf;
-              font-weight: normal;
-              padding: 0 0 0 10px;
-              border-bottom: 1px solid #c6e7f5;
-              border-top-left-radius: 5px;
-              border-top-right-radius: 5px; }
-
-.usage_block ul {
-	margin: 10px; }
-
-.usage_block .quantity {
-	font-size: 25px; }
-
-.usage_block li {
-	font-size: 11px;
-	margin: 0 0 15px 0; }
-
-.usage_block .unit {
-	font-size: 11px;
-	text-transform: uppercase;
-	padding: 0 0 0 1px; }
-
-.table-bordered {
-	border: none; }
-
-.table_header {
-	min-height: 35px;
-	padding: 5px 0; }
-
-.table_caption th {
-	background-color: transparent;
-	border: none; }
-
-.table-bordered th.table_header {
-	border: none; 
-	padding: 12px 0px;}
-
-#containers tr.table_caption {
-	height: 56px;}
-
-#containers th.table_header,
-#objects th.table_header {
-	padding: 12px;}
-
-.table-bordered tr.table_caption + tr th {
-	border: 1px solid #d5dfe6;
-	padding: 12px;
-	background-color: #ebeced;
-}
-
-.table-bordered tr.table_caption + tr th:first-child,
-.table-bordered tr.table_caption + tr th.hide + th {
-	border-top-left-radius: 4px;
-	border-left: 1px solid #d5dfe6; }
-
-.table-bordered tr.table_caption + tr th:last-child {
-	border-top-right-radius: 4px;
-	border-right: 1px solid #d5dfe6; }
-
-.table-bordered tbody tr td:first-child, .table-bordered tfoot tr td:first-child {
-	border-left: 1px solid #d5dfe6; }
-
-.table-bordered tbody tr td:last-child, .table-bordered tfoot tr td:last-child {
-	border-right: 1px solid #d5dfe6; }
-
-.table-bordered tfoot tr td:first-child {
-	border-bottom: 1px solid #d5dfe6;
-}
-
-.table-bordered tfoot tr td:last-child {
-	background-color: #f9f9f9;
-	padding: 8px 12px;
-	border-bottom: 1px solid #d5dfe6;
-}
-
-.table_title h3, .table_header h3 {
-	font-family: Arial, Helvetica, sans-serif;
-	font-weight: 600;
-	font-size: 16px;
-	line-height: 30px;
-	vertical-align: middle;
-	margin: 0px;
-	float: left; }
-
-                                              .table th.header {
-                                                cursor: pointer; }
-
-                                                .table th.header:hover {
-                                                  background-color: #e8e8e8;
-                                                  text-decoration: underline; }
-
-                                                  .table tbody td.anchor a {
-                                                    display: block; }
-
-                                                    .table tr.table_caption th.header:hover {
-                                                      background-color: transparent;
-                                                      cursor: default; }
-
-                                                      .table th.headerSortUp:hover, .table th.headerSortDown:hover {
-                                                        background-color: #dfdfdf; }
-
-                                                        .table th.headerSortUp, .table th.headerSortDown {
-                                                          background-color: #dfdfdf;
-                                                          background-repeat: no-repeat;
-                                                          background-position: 98% center; }
-
-                                                          .table th.headerSortDown {
-                                                            background-image: url('/static/dashboard/img/drop_arrow.png?2ec1100baed3'); }
-
-                                                            .table th.headerSortUp {
-                                                              background-image: url('/static/dashboard/img/up_arrow.png?4293b62aa222'); }
-
-                                                              .table tr.summation td:first-child, .table tr.summation td:last-child {
-                                                                border-radius: 0;
-                                                                border-bottom: 0 none; }
-
-                                                                .table li {
-                                                                  list-style-position: inside; }
-
-                                                                  th {
-                                                                    background: #f1f1f1; }
-
-                                                                    td.anchor {
-                                                                      padding: 0; }
-
-                                                                      .main_nav {
-                                                                        list-style: none;
-                                                                        width: 222px;
-                                                                        margin: 10px 0 20px 0; }
-
-                                                                        .main_nav a {
-                                                                          color: #999;
-                                                                          width: 185px;
-                                                                          padding: 10px;
-                                                                          display: block;
-                                                                          margin-left: 20px; }
-
-                                                                          .main_nav a.active {
-                                                                            background: #fff;
-                                                                            border: 2px solid #d8d8d8;
-                                                                            border-right: 0;
-                                                                            border-bottom-color: #ccc; }
-
-                                                                            table form {
-                                                                              margin-bottom: 0;
-                                                                              width: 1px; }
-
-                                                                              .messages {
-                                                                                position: fixed;
-                                                                                z-index: 9999;
-                                                                                top: 20px;
-                                                                                right: 20px;
-                                                                                width: 300px; }
-                                                                                .messages .alert {
-                                                                                  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-                                                                                  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); }
-                                                                                  .messages .alert.alert-danger {
-                                                                                    border-width: 1px;
-                                                                                    border-style: solid;
-                                                                                    border-color: #d43f3a; }
-                                                                                    .messages .alert.alert-success {
-                                                                                      border-width: 1px;
-                                                                                      border-style: solid;
-                                                                                      border-color: #4cae4c; }
-
-.alert .alert-actions {
-  margin-top: -23px;
-  margin-right: -23px; }
-
-  .modal > form, .login > form, .alert-actions > form {
-    margin-bottom: 0; }
-
-    .alert p {
-      overflow: hidden;
-      word-wrap: break-word; }
-
-      .alert p:last-child {
-        margin-bottom: 0; }
-
-        #actions.single {
-          width: 90px; }
-
-          .table-striped tr td {
-            transition: background 0.2s;
-            -webkit-transition: background 0.2s;
-            -moz-transition: background 0.2s;
-            -o-transition: background 0.2s; }
-
-            .inspect {
-              float: left;
-              display: block;
-              margin-top: 5px;
-              margin-right: 25px; }
-
-              .table {
-                margin-bottom: 25px; }
-                .table > thead > tr > th, .table > thead > tr > td, .table > tbody > tr > th,
-                .table > tbody > tr > td, .table > tfoot > tr > th, .table > tfoot > tr > td {
-                  vertical-align: middle; }
-
-.table tr td {
-  vertical-align: middle; }
-
-  .table tr.empty td {
-    text-align: center; }
-
-    .table tfoot tr td {
-      border-top: 1px solid #dddddd;
-      background-color: #f1f1f1;
-      font-size: 11px;
-      line-height: 14px; }
-
-      .table_actions {
-        float: right;
-        min-width: 400px; }
-
-        .table_actions .table_search, .table_actions .table_filter {
-          display: inline-block; }
-
-          .table_search input[type="text"] {
-            padding-right: 26px; }
-            .table_search select {
-              width: auto; }
-
-.table_actions .table_actions_menu {
-  display: inline-block;
-  position: relative;
-  margin-left: 5px; }
-  .table_actions .table_actions_menu .dropdown-menu {
-    left: auto;
-    right: 0; }
-    .table_actions .table_actions_menu .dropdown-menu a,
-    .table_actions .table_actions_menu .dropdown-menu button {
-      margin-left: 0px;
-      padding-left: 22px; }
-      .table_actions .table_actions_menu .dropdown-menu a .glyphicon,
-      .table_actions .table_actions_menu .dropdown-menu button .glyphicon,
-      .table_actions .table_actions_menu .dropdown-menu button .membership .role_dropdown li i,
-      .membership .role_dropdown li .table_actions .table_actions_menu .dropdown-menu button i,
-      .table_actions .table_actions_menu .dropdown-menu a .membership .role_dropdown li i,
-      .membership .role_dropdown li .table_actions .table_actions_menu .dropdown-menu a i {
-        margin-left: -14px; }
-
-td.no-transition {
-  -webkit-transition: none !important;
-  -moz-transition: none !important;
-  -o-transition: none !important;
-  -ms-transition: none !important;
-  transition: none !important; }
-
-  td.success {
-    background-color: #dff0d8 !important; }
-
-    td.loading {
-      background-color: #e6e6e6 !important; }
-
-      td.inline_edit_available div.table_cell_wrapper .table_cell_action button.ajax-inline-edit {
-        padding: 9px 12px 9px 12px;
-        position: relative;
-        border-radius: 0px;
-        position: relative;
-        display: block;
-        background: none;
-        border: 0 none; }
-        td.inline_edit_available div.table_cell_wrapper .table_cell_action button.ajax-inline-edit:before {
-          display: inline-block;
-          content: "";
-          width: 18px;
-          height: 20px;
-          margin-top: 0px;
-          *margin-right: 0.3em;
-          line-height: 14px;
-          background-image: url('/static/bootstrap/img/glyphicons-halflings.png');
-          background-position: 0 -72px;
-          background-repeat: no-repeat;
-          position: absolute;
-          top: 2px;
-          left: 4px; }
-
-div.table_cell_wrapper {
-  min-height: 18px;
-  position: relative; }
-  div.table_cell_wrapper .inline-edit-label {
-    display: inline; }
-    div.table_cell_wrapper .inline-edit-form {
-      float: left; }
-      div.table_cell_wrapper .inline-edit-actions,
-      div.table_cell_wrapper .table_cell_action {
-        float: right;
-        width: 20px;
-        margin: 0; }
-        div.table_cell_wrapper .inline-edit-actions button.ajax-inline-edit,
-        div.table_cell_wrapper .table_cell_action button.ajax-inline-edit {
-          padding: 10px;
-          position: relative;
-          display: none;
-          background: none;
-          border: 0 none; }
-  div.table_cell_wrapper .table_cell_action {
-    width: auto;
-    margin: auto 0px 0px 0px;
-    display: none;
-    position: absolute;
-    top: -10px;
-    right: 0px;
-    z-index: 99; }
-    div.table_cell_wrapper .inline-edit-error .error {
-      padding: 9px 12px 9px 12px;
-      position: relative;
-      border-radius: 0px;
-      position: absolute;
-      width: 18px;
-      height: 20px;
-      top: 20px;
-      left: 2px;
-      padding: 0; }
-      div.table_cell_wrapper .inline-edit-error .error:before {
-        display: inline-block;
-        content: "";
-        width: 20px;
-        height: 20px;
-        margin-top: 0px;
-        *margin-right: 0.3em;
-        line-height: 14px;
-        background-image: url('/static/bootstrap/img/glyphicons-halflings.png');
-        background-position: -144px -120px;
-        background-repeat: no-repeat;
-        position: absolute;
-        top: 0px;
-        left: 0px; }
-  div.table_cell_wrapper .inline-edit-status .success {
-    padding: 9px 12px 9px 12px;
-    position: relative;
-    border-radius: 0px;
-    padding: 0;
-    position: absolute;
-    top: 2px;
-    right: 18px;
-    width: 18px;
-    height: 20px;
-    z-index: 100; }
-    div.table_cell_wrapper .inline-edit-status .success:before {
-      display: inline-block;
-      content: "";
-      width: 20px;
-      height: 20px;
-      margin-top: 0px;
-      *margin-right: 0.3em;
-      line-height: 14px;
-      background-image: url('/static/bootstrap/img/glyphicons-halflings.png');
-      background-position: -288px 0px;
-      background-repeat: no-repeat;
-      position: absolute;
-      top: 0px;
-      left: 0px; }
-  div.table_cell_wrapper .inline-edit-status .loading {
-    padding: 9px 12px 9px 12px;
-    position: relative;
-    border-radius: 0px;
-    padding: 0;
-    position: absolute;
-    top: 0px;
-    right: 24px;
-    width: 18px;
-    height: 20px;
-    z-index: 100; }
-    div.table_cell_wrapper .inline-edit-status .loading:before {
-      display: inline-block;
-      content: "";
-      width: 20px;
-      height: 20px;
-      margin-top: 0px;
-      *margin-right: 0.3em;
-      line-height: 14px;
-      background-image: url('/static/dashboard/img/spinner.gif?a9f731a1424b');
-      background-position: 0px 0px;
-      background-repeat: no-repeat;
-      position: absolute;
-      top: 0px;
-      left: 0px; }
-  div.table_cell_wrapper .inline-edit-status.inline-edit-mod .loading {
-    top: 15px;
-    right: 34px; }
-
-.table_header .table_actions {
-  min-width: 0; }
-
-.table_header .table_actions a, .table_header .table_actions > button,
-.table_header .table_actions .table_search button {
-    display: inline-block;
-    float: none; }
-
-.table_header .table_actions .table_search select {
-      margin-bottom: 0;
-      line-height: 22px; }
-
-.table_header .table_filter {
-	vertical-align: bottom;
-	margin-right: 20px; }
-
-.table_header .table_filter i {
-	vertical-align: middle; }
-
-.table_actions form {
-	float: right;
-	margin-left: 10px; }
-
-.hidden {
-	display: none; }
-
-.table-striped.datatable tbody td {
-	background-clip: padding-box; }
-.table-striped.datatable tbody tr.odd td {
-	background-color: #f9f9f9; 
-	padding: 8px 12px;
-}
-.table-striped.datatable tbody tr.even td {
-	background-color: inherit; 
-	padding: 8px 12px;
-}
-.table-striped.datatable tbody tr.odd:hover td,
-.table-striped.datatable tbody tr.even:hover td,
-.table-striped.datatable tbody tr:hover th {
-	background-color: #e3e9f2; }
-
-.table-striped tbody tr.status_unknown:nth-child(odd) td {
-	background-color: #ffffb5; }
-
-.table-striped tbody tr.status_unknown:nth-child(even) td {
-	background-color: #ffffc6; }
-
-.nowrap-col {
-	white-space: nowrap; }
-
-.overview {
-	font-size: 24px; }
-
-#monitoring {
-          background: #ffffff;
-          font-size: 14px;
-          height: 20px;
-          margin: -18px 0 25px;
-          padding: 10px;
-          border: 1px solid #dddddd;
-          font-family: "anivers"; }
-
-          #monitoring h3 {
-            font-size: 14px;
-            font-weight: normal;
-            float: left;
-            line-height: 18px; }
-
-            #external_links, #external_links li {
-              float: left; }
-
-              #external_links li {
-                margin: 0 0 0 15px; }
-
-                .datatable th.narrow {
-                  width: 1em; }
-                  .datatable input {
-                    padding: 2px 5px;
-                    margin: 0; }
-                    .datatable th span.required:after {
-                      content: "*";
-                      font-weight: bold;
-                      line-height: 0;
-                      padding-left: 4px;
-                      color: #428bca; }
-                      .datatable .normal_column ul {
-                        padding-left: 0; }
-.capabilities .panel-heading .form-control,
-.capabilities .panel-heading .datepicker input,
-.datepicker .capabilities .panel-heading input {
-	width: 150px;
-	margin-left: 20px; }
-
-form label {
-  text-align: left;
-  color: #555555;
-  font-weight: bold;
-  display: inline-block; }
-
-  form .form-group > div.dynamic-select {
-    display: table;
-    border-collapse: separate; }
-    form .form-group > div.dynamic-select > * {
-      display: table-cell; }
-      form .form-group > div.dynamic-select > a {
-        width: 1%; }
-
-.modal.fullscreen .modal-dialog {
-  width: 90%;
-  margin: auto;
-  left: 5%; }
-
-  .modal.loading .modal-dialog {
-    width: 170px; }
-    .modal.loading .modal-dialog .modal-body {
-      height: 170px; }
-
-.modal.loading p {
-  text-align: center;
-  position: absolute;
-  bottom: 0;
-  width: 150px; }
-
-  .modal-body {
-    overflow-y: visible;
-    max-height: none; }
-
-    .modal-body table {
-      margin-bottom: 30px; }
-
-      .modal-body ~ hr {
-        margin-bottom: 0; }
-
-        .static_page {
-          float: left;
-          background-color: #ffffff;
-          border: 1px solid #dddddd; }
-
-          .static_page > form {
-            margin-bottom: 0; }
-
-            .left {
-              float: left;
-              width: 342px;
-              margin-right: 15px; }
-
-              .left form {
-                margin: 0; }
-
-                .right {
-                  float: left;
-                  width: 342px; }
-
-                  .clear {
-                    clear: both;
-                    width: 0;
-                    height: 0;
-                    padding: 0;
-                    margin: 0; }
-
-                    .modal {
-                      top: 0 !important; }
-
-                      .modal-footer input {
-                        width: auto; }
-
-                        .modal-body .modal-footer {
-                          width: 670px;
-                          margin-left: -25px;
-                          margin-right: -15px; }
-
-.modal-footer a.close {
-	background: -moz-linear-gradient(top, #f1f3f4, #e3e8ea);
-  	background: -ms-linear-gradient(top, #f1f3f4, #e3e8ea);
-  	background: -webkit-gradient(linear, 0 0, 0 100%, from(#f1f3f4), to(#e3e8ea));
-  	background: -webkit-linear-gradient(top, #f1f3f4, #e3e8ea);
-  	background: -o-linear-gradient(top, #f1f3f4, #e3e8ea);
-  	background: linear-gradient(top, #f1f3f4, #e3e8ea);
-  	background-repeat: repeat-x;
-  	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);
- 	border: 1px solid #C3CED7;
- 	font-weight: 700;
-	margin-top: 0;
-	margin-right: 5px;
-	font-size: 13px;
-	line-height: 1.5;
-	color: #000000;
-	/*font-weight: normal;*/
-	filter: alpha(opacity=100);
-	-khtml-opacity: 1;
-	-moz-opacity: 1;
-	opacity: 1; }
-
-.modal-footer a.close:hover {
-	color: #000000;
-  	background: -moz-linear-gradient(top, #F8F9FA, #F1F4F5);
-  	background: -ms-linear-gradient(top, #F8F9FA, #F1F4F5);
-  	background: -webkit-gradient(linear, 0 0, 0 100%, from(#F8F9FA), to(#F1F4F5));
-  	background: -webkit-linear-gradient(top, #F8F9FA, #F1F4F5);
-  	background: -o-linear-gradient(top, #F8F9FA, #F1F4F5);
-  	background: linear-gradient(top, #F8F9FA, #F1F4F5);  
-	text-decoration: none; 
-}
-
-                              .modal-body .help-block {
-                                text-align: left;
-                                float: left;
-                                width: 100%;
-                                margin-bottom: 10px; }
-
-                                #create_keypair_modal .clearfix {
-                                  margin-bottom: 115px; }
-
-                                  #actions {
-                                    width: 90px; }
-
-                                    #actions .btn {
-                                      margin-bottom: 5px; }
-
-                                      #actions a.btn {
-                                        width: 70px; }
-
-                                        #actions input.btn {
-                                          text-align: left; }
-
-                                          #images #actions {
-                                            width: 100px; }
-
-                                            .details-modal .modal-body {
-                                              padding-bottom: 20px; }
-
-                                              td.select {
-                                                width: 10px; }
-
-                                                td.actions_column {
-                                                  white-space: nowrap;
-                                                  padding: 10px;
-                                                  position: relative;
-                                                  width: 200px;
-                                                  background-clip: padding-box; }
-
-                                                  td.actions_column .btn-group {
-                                                    display: inline-block; }
-
-                                                    td.actions_column .row_actions a, td.actions_column .row_actions input,
-                                                    td.actions_column .row_actions button, div.table_actions_menu .dropdown-menu a,
-                                                    div.table_actions_menu .dropdown-menu input,
-                                                    div.table_actions_menu .dropdown-menu button {
-                                                      background: none;
-                                                      float: none;
-                                                      display: block;
-                                                      padding: 5px 10px;
-                                                      color: #333333;
-                                                      text-align: left;
-                                                      border-radius: 0;
-                                                      border: 0 none;
-                                                      -webkit-box-shadow: none;
-                                                      box-shadow: none; }
-
-                                                      td.actions_column .row_actions .hide {
-                                                        display: none; }
-
-                                                        td.actions_column .btn-action-required {
-                                                          font-weight: bold; }
-
-                                                          .tab-content {
-                                                            overflow: visible; }
-
-                                                            .btn.hide, .btn-group .hide {
-                                                              display: none; }
-
-                                                              .btn-group .dropdown-toggle:focus {
-                                                                outline: none; }
-
-                                                                .dropdown-menu button {
-                                                                  line-height: 18px;
-                                                                  width: 100%; }
-
-                                                                  .btn-group .dropdown-menu .btn {
-                                                                    border-radius: 0; }
-
-.dropdown-menu .btn.btn-danger, .dropdown-menu .btn.btn-danger:hover,
-.dropdown-menu .btn.btn-success, .dropdown-menu .btn.btn-success:hover,
-.dropdown-menu .btn.btn-info, .dropdown-menu .btn.btn-info:hover {
-	text-shadow: none; }
-.dropdown-menu li:hover {
-	background: none; }
-td.actions_column .dropdown-menu a:hover,
-td.actions_column .dropdown-menu button:hover,
-div.table_actions_menu .dropdown-menu a:hover,
-div.table_actions_menu .dropdown-menu button:hover {
-	background-color: #eeeeee; }
-.dropdown-menu .btn.btn-danger {
-	color: #333333; }
-.dropdown-menu .btn.btn-danger:hover {
-	background-color: #eeeeee !important; }
-	
-tr td.actions_column ul.row_actions.single,
-tr:hover td.actions_column ul.row_actions.single,
-td.actions_column ul.row_actions.single,
-td.actions_column ul.row_actions.single:hover {
-	border: none; }
-
-                                                                                td.actions_column ul.row_actions.single li.action {
-                                                                                  display: block; }
-
-                                                                                  td.actions_column ul.row_actions.single li.action:hover {
-                                                                                    background-color: transparent; }
-
-                                                                                    td.actions_column ul.row_actions.single a,
-                                                                                    td.actions_column ul.row_actions.single input,
-                                                                                    td.actions_column ul.row_actions.single button {
-                                                                                      color: #5bc0de; }
-
-                                                                                      td.actions_column ul.row_actions.single a:hover,
-                                                                                      td.actions_column ul.row_actions.single input:hover,
-                                                                                      td.actions_column ul.row_actions.single button:hover {
-                                                                                        color: #333333; }
-
-                                                                                        th.multi_select_column, td.multi_select_column {
-                                                                                          width: 41px; }
-
-                                                                                          th.multi_select_column, td.multi_select_column {
-                                                                                            text-align: center; }
-
-                                                                                            .table-fixed {
-                                                                                              table-layout: fixed; }
-
-                                                                                              .table input[type="checkbox"] {
-                                                                                                display: inline; }
-
-                                                                                                div.input input[type="checkbox"] {
-                                                                                                  float: left;
-                                                                                                  width: 25px; }
-
-                                                                                                  .table_title a {
-                                                                                                    font-size: 11px;
-                                                                                                    float: right;
-                                                                                                    margin-left: 10px;
-                                                                                                    margin-top: 10px; }
-
-                                                                                                    tr.terminated {
-                                                                                                      color: #999999; }
-
-                                                                                                      #instance_tabs {
-                                                                                                        float: left;
-                                                                                                        width: 100%;
-                                                                                                        border-bottom: 1px solid #e1e1e1; }
-
-                                                                                                        #instance_tabs li a {
-                                                                                                          background: #f2f2f2;
-                                                                                                          display: block;
-                                                                                                          font-size: 14px;
-                                                                                                          float: left;
-                                                                                                          padding: 5px 10px;
-                                                                                                          margin-right: 10px;
-                                                                                                          border: 1px solid #e1e1e1;
-                                                                                                          border-bottom: none; }
-
-                                                                                                          #instance_tabs li.active a {
-                                                                                                            background: #fff;
-                                                                                                            padding-bottom: 8px;
-                                                                                                            margin-bottom: -5px; }
-
-#main_content {
-	position: relative;
-	top: -5px;
-}
-
-                                                                                                            #main_content .nav-tabs {
-                                                                                                              margin-bottom: 0; }
-
-                                                                                                              #main_content .tab-content {
-                                                                                                                border: 1px solid #ddd;
-                                                                                                                border-top: 0 none;
-                                                                                                                padding: 10px; }
-
-                                                                                                                #main_content .workflow .modal-body {
-                                                                                                                  padding-left: 0;
-                                                                                                                  padding-right: 0; }
-
-                                                                                                                  #main_content .workflow .modal-body .tab-content {
-                                                                                                                    border-left: 0 none;
-                                                                                                                    border-right: 0 none;
-                                                                                                                    border-bottom: 0 none; }
-
-                                                                                                                    #content_body {
-                                                                                                                      padding-left: 255px;
-                                                                                                                      padding-right: 25px; }
-
-                                                                                                                      .tab_wrapper {
-                                                                                                                        padding-top: 50px; }
-
-                                                                                                                        .tooltip {
-                                                                                                                          z-index: 12000; }
-
-                                                                                                                          .volume_boot_disclosure {
-                                                                                                                            font-weight: bold;
-                                                                                                                            color: #555;
-                                                                                                                            cursor: pointer;
-                                                                                                                            background-image: url('/static/dashboard/img/right_droparrow.png?b14134630332');
-                                                                                                                            background-repeat: no-repeat;
-                                                                                                                            background-position: 130px center; }
-
-                                                                                                                            .volume_boot_disclosure.on {
-                                                                                                                              width: 334px;
-                                                                                                                              margin-bottom: 10px;
-                                                                                                                              border-bottom: solid 1px #dddddd;
-                                                                                                                              background-image: url('/static/dashboard/img/drop_arrow.png?2ec1100baed3'); }
-
-                                                                                                                              .nav-tabs a {
-                                                                                                                                cursor: pointer; }
-
-                                                                                                                                .nav-tabs li.error a {
-                                                                                                                                  color: #d9534f; }
-
-                                                                                                                                  .nav-tabs li.error a:after {
-                                                                                                                                    content: "*"; }
-
-                                                                                                                                    .nav-tabs li.required a:after, form .form-group.required > label:after,
-                                                                                                                                    form .form-field.required > label:after {
-                                                                                                                                      content: "*";
-                                                                                                                                      font-weight: bold;
-                                                                                                                                      line-height: 0;
-                                                                                                                                      padding-left: 4px;
-                                                                                                                                      color: #428bca; }
-
-                                                                                                                                      #region_selector {
-                                                                                                                                        position: absolute;
-                                                                                                                                        z-index: 9999;
-                                                                                                                                        right: 0;
-                                                                                                                                        top: 24px; }
-
-                                                                                                                                        #region_selector a {
-                                                                                                                                          margin-left: 0; }
-
-                                                                                                                                          #region_selector ul {
-                                                                                                                                            float: left;
-                                                                                                                                            margin-left: 5px;
-                                                                                                                                            padding-right: 21px;
-                                                                                                                                            width: 125px; }
-
-                                                                                                                                            #region_selector ul:hover a {
-                                                                                                                                              display: block; }
-
-                                                                                                                                              #region_selector li a {
-                                                                                                                                                padding: 3px 3px 3px 5px;
-                                                                                                                                                display: none;
-                                                                                                                                                background: #e1e1e1;
-                                                                                                                                                margin-top: -10px; }
-
-                                                                                                                                                #region_selector li:first-child p {
-                                                                                                                                                  background: #ededed url('/static/dashboard/img/drop_arrow.png?2ec1100baed3') no-repeat 106px 9px !important;
-                                                                                                                                                  display: block;
-                                                                                                                                                  border: 1px solid #e1e1e1;
-                                                                                                                                                  padding: 5px; }
-
-                                                                                                                                                  iframe {
-                                                                                                                                                    border: none; }
-
-                                                                                                                                                    .item_detail ul li label {
-                                                                                                                                                      color: #333333;
-                                                                                                                                                      font-weight: bold;
-                                                                                                                                                      display: block;
-                                                                                                                                                      margin-top: 5px; }
-
-                                                                                                                                                      .progress_bar {
-                                                                                                                                                        height: 100%;
-                                                                                                                                                        width: 100%;
-                                                                                                                                                        border: 1px solid #cccccc;
-                                                                                                                                                        background-color: #cccccc; }
-
-                                                                                                                                                        .progress_bar_fill, .progress_bar_selected {
-                                                                                                                                                          height: 100%;
-                                                                                                                                                          float: left; }
-
-                                                                                                                                                          .progress_bar_fill {
-                                                                                                                                                            background-color: #555555; }
-
-                                                                                                                                                            .progress_bar_selected {
-                                                                                                                                                              background-color: #428bca;
-                                                                                                                                                              width: 0; }
-
-                                                                                                                                                              .progress_bar_over {
-                                                                                                                                                                background-color: #d9534f; }
-
-                                                                                                                                                                .d3_quota_bar {
-                                                                                                                                                                  width: 20%;
-                                                                                                                                                                  margin-bottom: 8px;
-                                                                                                                                                                  margin-top: 10px;
-                                                                                                                                                                  float: left;
-                                                                                                                                                                  text-align: center; }
-
-                                                                                                                                                                  .quota-dynamic {
-                                                                                                                                                                    overflow: hidden;
-                                                                                                                                                                    margin-bottom: 8px; }
-
-                                                                                                                                                                    .quota_title {
-                                                                                                                                                                      color: #cccccc;
-                                                                                                                                                                      padding-bottom: 0;
-                                                                                                                                                                      margin-bottom: 8px; }
-
-                                                                                                                                                                      .quota_title strong {
-                                                                                                                                                                        color: #333333; }
-
-                                                                                                                                                                        .quota_title strong span {
-                                                                                                                                                                          font-weight: normal; }
-
-                                                                                                                                                                          .quota_title p {
-                                                                                                                                                                            float: right;
-                                                                                                                                                                            margin-bottom: 0; }
-
-                                                                                                                                                                            .quota_bar {
-                                                                                                                                                                              margin: -8px 0 8px; }
-
-                                                                                                                                                                              div .flavor_table {
-                                                                                                                                                                                border: 1px solid #dddddd;
-                                                                                                                                                                                width: 100%;
-                                                                                                                                                                                margin-bottom: 14px; }
-
-                                                                                                                                                                                .flavor_table .flavor_name {
-                                                                                                                                                                                  white-space: nowrap;
-                                                                                                                                                                                  font-weight: bold;
-                                                                                                                                                                                  text-align: left;
-                                                                                                                                                                                  padding: 7px 12px 7px 7px;
-                                                                                                                                                                                  width: 160px; }
-
-                                                                                                                                                                                  #main_content .row {
-                                                                                                                                                                                    margin: 10px 0 20px; }
-
-                                                                                                                                                                                    #main_content .row:last-child {
-                                                                                                                                                                                      margin-bottom: 0; }
-
-                                                                                                                                                                                      .version_label {
-                                                                                                                                                                                        position: relative;
-                                                                                                                                                                                        text-align: right; }
-
-                                                                                                                                                                                        .header_rule {
-                                                                                                                                                                                          margin: 0 0 10px; }
-
-                                                                                                                                                                                          .item_detail .detail_section {
-                                                                                                                                                                                            margin-bottom: 25px;
-                                                                                                                                                                                            float: left;
-                                                                                                                                                                                            margin-right: 50px; }
-
-                                                                                                                                                                                            .has-error .help-block, .dynamic-error {
-                                                                                                                                                                                              padding: 10px; }
-
-                                                                                                                                                                                              .dynamic-error {
-                                                                                                                                                                                                background: #ffffff;
-                                                                                                                                                                                                border: 1px solid #dddddd;
-                                                                                                                                                                                                color: #d9534f;
-                                                                                                                                                                                                margin-bottom: 0.5em; }
-
-                                                                                                                                                                                                label.log-length {
-                                                                                                                                                                                                  line-height: 28px;
-                                                                                                                                                                                                  margin-right: 10px; }
-
-                                                                                                                                                                                                  .progress-success.bar {
-                                                                                                                                                                                                    background-color: #5eb95e;
-                                                                                                                                                                                                    background-image: -moz-linear-gradient(top, #62c462, #57a957);
-                                                                                                                                                                                                    background-image: -ms-linear-gradient(top, #62c462, #57a957);
-                                                                                                                                                                                                    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
-                                                                                                                                                                                                    background-image: -webkit-linear-gradient(top, #62c462, #57a957);
-                                                                                                                                                                                                    background-image: -o-linear-gradient(top, #62c462, #57a957);
-                                                                                                                                                                                                    background-image: linear-gradient(top, #62c462, #57a957);
-                                                                                                                                                                                                    background-repeat: repeat-x;
-                                                                                                                                                                                                    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462',
-                                                                                                                                                                                                                                                                                                                                                                                                        endColorstr='#57a957', GradientType=0); }
-
-                                                                                                                                                                                                    .progress_bar_fill.progress-warning.bar {
-                                                                                                                                                                                                      background-color: #898989;
-                                                                                                                                                                                                      background-image: -moz-linear-gradient(top, #999999, #333333);
-                                                                                                                                                                                                      background-image: -ms-linear-gradient(top, #999999, #333333);
-                                                                                                                                                                                                      background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#999999), to(#333333));
-                                                                                                                                                                                                      background-image: -webkit-linear-gradient(top, #999999, #333333);
-                                                                                                                                                                                                      background-image: -o-linear-gradient(top, #999999, #333333);
-                                                                                                                                                                                                      background-image: linear-gradient(top, #999999, #333333);
-                                                                                                                                                                                                      background-repeat: repeat-x;
-                                                                                                                                                                                                      filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#999999',
-                                                                                                                                                                                                                                                                                                                                                                                                            endColorstr='#333333', GradientType=0); }
-
-                                                                                                                                                                                                      .progress_bar_over.bar {
-                                                                                                                                                                                                        background-color: #dd514c;
-                                                                                                                                                                                                        background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
-                                                                                                                                                                                                        background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
-                                                                                                                                                                                                        background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
-                                                                                                                                                                                                        background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
-                                                                                                                                                                                                        background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
-                                                                                                                                                                                                        background-image: linear-gradient(top, #ee5f5b, #c43c35);
-                                                                                                                                                                                                        background-repeat: repeat-x;
-                                                                                                                                                                                                        filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b',
-                                                                                                                                                                                                                                                                                                                                                                                                                endColorstr='#c43c35', GradientType=0); }
-
-                                                                                                                                                                                                        .split_five div.form-group input[type="text"], .split_five div.form-group select {
-                                                                                                                                                                                                          width: 120px; }
-
-                                                                                                                                                                                                          .warning {
-                                                                                                                                                                                                            background-color: #ffffff;
-                                                                                                                                                                                                            border-bottom: 1px solid #d9534f;
-                                                                                                                                                                                                            padding: 5px 10px; }
-                                                                                                                                                                                                            .warning .warning-text {
-                                                                                                                                                                                                              text-align: center; }
-                                                                                                                                                                                                              .warning .warning-text h3, .warning .warning-text a {
-                                                                                                                                                                                                                display: inline-block; }
-                                                                                                                                                                                                                .warning .warning-text h3 {
-                                                                                                                                                                                                                  vertical-align: bottom; }
-
-#admin_warning_detail ul {
-  list-style: circle;
-  padding-left: 20px;
-  margin-bottom: 10px; }
-
-.no_split {
-  margin-top: -60px; }
-
-  .capabilities {
-    min-height: 200px; }
-    .capabilities .panel .list-group {
-      height: 400px;
-      overflow: auto; }
-      .capabilities .dark-stripe {
-        background-color: #f9f9f9; }
-        .capabilities .light-stripe {
-          background-color: white; }
-          .capabilities .list-group-item.level-0 > * {
-            padding-left: 0px; }
-            .capabilities .list-group-item.level-1 > * {
-              padding-left: 15px; }
-              .capabilities .list-group-item.level-2 > * {
-                padding-left: 30px; }
-                .capabilities .list-group-item .leaf {
-                  padding-left: 10px; }
-                  .capabilities .list-group-item span.input-group-addon {
-                    overflow: hidden;
-                    text-overflow: ellipsis;
-                    white-space: nowrap;
-                    width: 50%;
-                    max-width: 140px;
-                    text-align: right; }
-                    .capabilities .list-group-item .label-info {
-                      display: inline-block;
-                      position: absolute;
-                      z-index: 10;
-                      top: 1px;
-                      left: 25px;
-                      max-width: 80%;
-                      overflow: hidden;
-                      text-overflow: ellipsis; }
-                      .capabilities .list-group-item .label-danger {
-                        display: inline-block;
-                        position: absolute;
-                        z-index: 10;
-                        bottom: 1px;
-                        left: 25px; }
-
-.membership {
-	min-height: 200px; }
-.membership .btn-group {
-    margin-left: 0px;
-    padding: 3px 10px;
-    margin-bottom: 0px;
-    border: 1px solid #cccccc;
-    border-bottom: none; }
-.membership .btn-group .active {
-	float: right; }
-.membership a.btn-primary:hover {
-	background-color: #005d9d; 
-}
-.membership .help_text {
-          margin-left: 5px;
-          margin-bottom: 15px;
-          width: 650px; }
-.membership .members_title {
-	color: #555555;
-	font-weight: bold;
-	float: left;
-	line-height: 30px;
-	width: 160px; }
-.membership input[type="text"]:disabled + span.glyphicon-search {
-	color: #cccccc; }
-.membership .fake_table_header {
-	background-color: #ffffff;
-	padding: 10px;
-	border: 1px solid #dddddd;
-	border-bottom: none;
-	overflow: hidden; }
-.membership .fake_table > ul {
-                  padding: 0; }
-                  .membership .fake_table > ul.no_results {
-                    border: 1px solid #dddddd;
-                    padding: 10px; }
-.membership .fake_table ul.btn-group:hover {
-	background-color: #dddddd; 
-}
-  .membership .member {
-    text-align: left;
-    line-height: 32px; }
-    .membership .members ul.btn-group, .membership .available_members ul.btn-group {
-      display: block; }
-      .membership .members ul.btn-group.nav-pills > li > a,
-      .membership .available_members ul.btn-group.nav-pills > li > a {
-        padding: 6px 11px; }
-  .membership .dark_stripe {
-    background-color: #f9f9f9; }
-    .membership .light_stripe {
-      background-color: white; }
-      .membership .last_stripe {
-        border-bottom: 1px solid #dddddd; }
-        .membership .has-feedback {
-          display: inline-block;
-          float: right;
-          margin-bottom: 0; }
-          .membership .filter {
-            width: 130px; }
-            .membership .form-control-feedback {
-              top: 0; }
-              .membership .role_dropdown li {
-                cursor: pointer;
-                background: none;
-                float: none;
-                display: block;
-                padding: 5px 10px;
-                color: #000;
-                text-align: left;
-                border-radius: 0;
-                border: 0 none;
-                -webkit-box-shadow: none;
-                box-shadow: none;
-                z-index: 99999; }
-                .membership .role_dropdown li i {
-                  opacity: 0;
-                  display: inline-block;
-                  width: 14px;
-                  font-size: 12px;
-                  line-height: 14px;
-                  vertical-align: text-top; }
-                  .membership .role_dropdown li i:before {
-                    content: "\e013"; }
-                .membership .role_dropdown li:hover {
-                  background-color: #cdcdcd; }
-                  .membership .role_dropdown li.selected i {
-                    opacity: 1; }
-  .membership .dropdown-menu.role_dropdown {
-    right: 0;
-    left: auto; }
-    .membership .nav .role_options {
-      float: right;
-      padding-right: 5px; }
-
-.add_member_btn {
-  display: inline; }
-
-  #add_member {
-    clear: both; }
-
-    .add_member {
-      float: right;
-      margin-top: 10px;
-      margin-right: 15px; }
-
-      .dropdown_fix {
-        overflow: visible; }
-
-        .loading_gif {
-          margin-right: 0.5em;
-          float: left; }
-
-          .btn-inline {
-            margin-bottom: 9px; }
-
-            .modal-body fieldset .form-field select[data-add-item-url] {
-              width: 275px;
-              margin-right: 2px; }
-
-              #networkListSortContainer {
-                display: none; }
-
-                .networklist {
-                  padding: 6px;
-                  background: #eee;
-                  border: 1px solid #dddddd;
-                  min-height: 2em;
-                  width: auto !important;
-                  -webkit-box-sizing: border-box;
-                  -moz-box-sizing: border-box;
-                  box-sizing: border-box; }
-                  .networklist li {
-                    width: 226px;
-                    list-style-type: none;
-                    margin: 6px auto;
-                    padding: 3px;
-                    background: #ffffff;
-                    border: 1px solid #aaa;
-                    line-height: 18px;
-                    border-radius: 3px;
-                    cursor: move;
-                    padding-left: 23px;
-                    background: #ffffff url('/static/dashboard/img/drag.png?93ec7e23f795') no-repeat 11px 50%; }
-                    .networklist li em {
-                      font-size: 0.5em;
-                      line-height: 1em;
-                      color: #999;
-                      font-style: normal;
-                      margin-left: 0.8em; }
-                      .networklist li i {
-                        margin-right: 5px;
-                        vertical-align: middle; }
-                        .networklist li a.btn {
-                          -webkit-box-sizing: border-box;
-                          -moz-box-sizing: border-box;
-                          box-sizing: border-box;
-                          font-size: 11px;
-                          line-height: 12px;
-                          padding: 2px 5px 3px;
-                          margin-right: 1px;
-                          width: 18px;
-                          text-align: center;
-                          right: 5px;
-                          vertical-align: middle;
-                          float: right; }
-                          .networklist li a.btn:before {
-                            content: "+"; }
-                  .networklist li.ui-sortable-helper {
-                    background-color: #def; }
-                    .networklist li.ui-state-highlight {
-                      border: 1px dotted #cccccc;
-                      background: #efefef;
-                      height: 0.5em; }
-                      .networklist li:after {
-                        visibility: hidden;
-                        display: block;
-                        font-size: 0;
-                        content: " ";
-                        clear: both;
-                        height: 0; }
-
-#selected_network {
-  margin-bottom: 1.5em;
-  counter-reset: v1 0;
-  background: #edf9ff;
-  border: 1px solid #c0d9e4; }
-  #selected_network li {
-    position: relative; }
-    #selected_network li a.btn:before {
-      content: "-"; }
-#selected_network li:before {
-    content: "NIC:" counter(v1);
-    counter-increment: v1;
-    display: inline-block;
-    margin-right: 5px;
-    background: #555555;
-    color: #ffffff;
-    font-size: 90%;
-    padding: 0px 4px;
-    vertical-align: middle;
-    border-radius: 2px;
-    position: absolute;
-    left: -2em; }
-#selected_network.dragging li:before {
-      content: "NIC:";
-      background-color: rgba(102, 102, 102, 0.5);
-      padding-right: 10px; }
-#selected_network.dragging li.ui-state-highlight:before {
-        content: "";
-        background: transparent; }
-
-#topologyCanvasContainer {
-	-webkit-box-sizing: border-box;
-	-moz-box-sizing: border-box;
-	box-sizing: border-box;
-	width: 100%;
-	height: auto;
-	padding: 25px;
-	padding-left: 50px;
-	background: #efefef;
-	min-height: 400px; }
-#topologyCanvasContainer div.nodata {
-    font-size: 150%;
-    text-align: center;
-    padding-top: 150px;
-    display: none; }
-#topologyCanvasContainer.noinfo div.nodata {
-	display: block; }
-#topologyCanvasContainer.noinfo #topology_canvas {
-	display: none; }
-
-.topologyNavi {
-  overflow: hidden;
-  margin: 10px 0 20px; }
-.topologyNavi i {
-    margin-right: 3px; }
-.topologyNavi .toggleView {
-	float: left; }
-.topologyNavi .launchButtons {
-	float: right;
-	text-align: right; }
-
-.toggleView .btn,
-.topologyNavi .launchButtons a.btn {
-	margin-left: 10px; 
-	background: -moz-linear-gradient(top, #f1f3f4, #e3e8ea);
-  	background: -ms-linear-gradient(top, #f1f3f4, #e3e8ea);
-  	background: -webkit-gradient(linear, 0 0, 0 100%, from(#f1f3f4), to(#e3e8ea));
-  	background: -webkit-linear-gradient(top, #f1f3f4, #e3e8ea);
-  	background: -o-linear-gradient(top, #f1f3f4, #e3e8ea);
-  	background: linear-gradient(top, #f1f3f4, #e3e8ea);
-  	background-repeat: repeat-x;
-  	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);
- 	border: 1px solid #C3CED7;
- 	font-weight: 700;
-}
-
-.toggleView .btn:hover,
-.topologyNavi .launchButtons a.btn:hover {
-  background: -moz-linear-gradient(top, #F8F9FA, #F1F4F5);
-  background: -ms-linear-gradient(top, #F8F9FA, #F1F4F5);
-  background: -webkit-gradient(linear, 0 0, 0 100%, from(#F8F9FA), to(#F1F4F5));
-  background: -webkit-linear-gradient(top, #F8F9FA, #F1F4F5);
-  background: -o-linear-gradient(top, #F8F9FA, #F1F4F5);
-  background: linear-gradient(top, #F8F9FA, #F1F4F5);  
-  text-decoration: none;
-}
-
-.topologyBalloon {
-	display: none;
-	background: #ffffff;
-	position: absolute;
-	left: 100px;
-	top: 20px;
-	z-index: 600;
-	border-radius: 5px;
-	color: #333;
-	min-width: 200px;
-	line-height: 1.2;
-	font-size: 11px;
-	-webkit-box-shadow: 0px 1px 6px #777;
-	box-shadow: 0px 1px 6px #777; }
-.topologyBalloon.on {
-    display: block; }
-.topologyBalloon .vnc_window {
-	margin-left: 10px; }
-.topologyBalloon .closeTopologyBalloon {
-    font-size: 16px;
-    line-height: 1;
-    display: block;
-    position: absolute;
-    font-weight: bold;
-    right: 6px;
-    top: 0px;
-    cursor: pointer;
-    padding: 3px;
-    color: #aaa; }
-.topologyBalloon .closeTopologyBalloon:hover {
-	color: #777;
-	text-decoration: none; }
-.topologyBalloon .contentBody {
-    padding: 8px 8px 0; }
-.topologyBalloon span.active:before, .topologyBalloon span.down:before {
-	content: "";
-	width: 9px;
-	height: 9px;
-	display: inline-block;
-	background: #5cb85c;
-	margin-right: 3px;
-	border-radius: 10px;
-	vertical-align: middle; }
-.topologyBalloon span.down:before {
-    background: #d9534f; }
-.topologyBalloon .footer {
-    background: #efefef;
-    border-top: 1px solid #dddddd;
-    padding: 8px;
-    border-radius: 0px 0px 7px 7px; }
-    .topologyBalloon .footer .footerInner {
-      display: table;
-      width: 100%; }
-.topologyBalloon .footer .cell {
-	display: table-cell;
-	padding-right: 5px; }
-.topologyBalloon .footer .link {
-	font-size: 12px; }
-.topologyBalloon .footer .delete {
-	padding-right: 0;
-	text-align: right; }
-.topologyBalloon table.detailInfoTable {
-    margin-bottom: 5px; }
-.topologyBalloon table.detailInfoTable caption {
-      text-align: left;
-      font-size: 12px;
-      color: #000000;
-      font-weight: bold;
-      margin-bottom: 5px; }
-.topologyBalloon table.detailInfoTable th,
-.topologyBalloon table.detailInfoTable td {
-        text-align: left;
-        vertical-align: middle;
-        padding-bottom: 3px;
-        background: transparent; }
-.topologyBalloon table.detailInfoTable th {
-	color: #cccccc;
-	padding-right: 8px;
-	width: 80px; }
-.topologyBalloon table.detailInfoTable th span {
-	vertical-align: middle;
-	width: 80px;
-	white-space: nowrap;
-	overflow: hidden;
-	text-overflow: ellipsis;
-	display: inline-block; }
-.topologyBalloon table.detailInfoTable th.device {
-	color: #333333;
-	text-align: right; }
-.topologyBalloon table.detailInfoTable td {
-      padding-right: 5px;
-      white-space: nowrap; }
-.topologyBalloon table.detailInfoTable td.delete {
-	padding-right: 0;
-	text-align: right; }
-.topologyBalloon table.detailInfoTable .btn {
-	line-height: 1.4; }
-.topologyBalloon:before {
-    border-top: 7px solid transparent;
-    border-bottom: 7px solid transparent;
-    border-right: 9px solid #dddddd;
-    display: block;
-    position: absolute;
-    top: 30px;
-    left: -9px;
-    width: 0;
-    height: 0;
-    content: ""; }
-.topologyBalloon:after {
-      border-top: 6px solid transparent;
-      border-bottom: 6px solid transparent;
-      border-right: 8px solid #ffffff;
-      display: block;
-      position: absolute;
-      top: 31px;
-      left: -8px;
-      width: 0;
-      height: 0;
-      content: ""; }
-.topologyBalloon.leftPosition:before {
-	border-right: none;
-	border-left: 9px solid #dddddd;
-	right: -9px;
-	top: 30px;
-	left: auto; }
-.topologyBalloon.leftPosition:after {
-	border-right: none;
-	border-left: 8px solid #ffffff;
-	right: -8px;
-	top: 31px;
-	left: auto; }
-
-#topologyMessages {
-	width: 1px;
-	height: 1px;
-	visibility: hidden;
-	position: absolute;
-	top: -100px; }
-
-.quota-heading {
-    /*font-family: anivers;*/
-    font-weight: normal;
-    font-size: 24px;
-    margin-bottom: 10px; }
-
-.link {
-	width: 200px;
-	stroke: #999;
-	stroke-width: 1.5px; }
-
-.node {
-	cursor: pointer; }
-
-.node text {
-	font: 12px sans-serif; }
-
-#resource_container {
-	position: relative; }
-
-#stack_box {
-	position: absolute;
-	width: 300px;
-	top: 10px;
-	left: 10px; }
-
-#stack_box h3 {
-	font-size: 11pt;
-	line-height: 20px; }
-
-#stack_box p {
-	margin: 0;
-	font-size: 9pt;
-	line-height: 14px; }
-
-#stack_box a {
-	margin: 0;
-	font-size: 9pt;
-	line-height: 14px; }
-
-#stack_box img {
-	float: left; }
-
-#stack_box #stack_info {
-	float: left;
-	white-space: normal;
-	width: 200px; }
-
-#info_box {
-	position: absolute;
-	width: 300px;
-	top: 100px;
-	left: 10px; }
-
-                      #info_box h3 {
-                        font-size: 9pt;
-                        line-height: 20px; }
-
-                        #info_box p {
-                          margin: 0;
-                          font-size: 9pt;
-                          line-height: 14px; }
-
-                          #info_box a {
-                            margin: 0;
-                            font-size: 9pt;
-                            line-height: 14px; }
-
-                            #info_box .error {
-                              color: #a02622; }
-
-                              #ruleListSortContainer {
-                                display: none; }
-
-                                .rulelist {
-                                  padding: 6px;
-                                  background: #eee;
-                                  border: 1px solid #dddddd;
-                                  min-height: 2em;
-                                  width: auto !important;
-                                  -webkit-box-sizing: border-box;
-                                  -moz-box-sizing: border-box;
-                                  box-sizing: border-box; }
-                                  .rulelist li {
-                                    width: 226px;
-                                    list-style-type: none;
-                                    margin: 6px auto;
-                                    padding: 3px;
-                                    background: #ffffff;
-                                    border: 1px solid #dddddd;
-                                    line-height: 18px;
-                                    border-radius: 3px;
-                                    cursor: move;
-                                    padding-left: 23px;
-                                    background: #ffffff url('/static/dashboard/img/drag.png?93ec7e23f795') no-repeat 11px 50%; }
-                    .rulelist li em {
-                      font-size: 0.5em;
-                      line-height: 1em;
-                      color: #999;
-                      font-style: normal;
-                      margin-left: 0.8em; }
-                      .rulelist li i {
-                        margin-right: 5px;
-                        vertical-align: middle; }
-                        .rulelist li a.btn {
-                          -webkit-box-sizing: border-box;
-                          -moz-box-sizing: border-box;
-                          box-sizing: border-box;
-                          font-size: 11px;
-                          line-height: 12px;
-                          padding: 2px 5px 3px;
-                          margin-right: 1px;
-                          width: 18px;
-                          text-align: center;
-                          right: 5px;
-                          vertical-align: middle;
-                          float: right; }
-                          .rulelist li a.btn:before {
-                            content: "+"; }
-                  .rulelist li.ui-sortable-helper {
-                    background-color: #def; }
-                    .rulelist li.ui-state-highlight {
-                      border: 1px dotted #dddddd;
-                      background: #efefef;
-                      height: 0.5em; }
-                      .rulelist li:after {
-                        visibility: hidden;
-                        display: block;
-                        font-size: 0;
-                        content: " ";
-                        clear: both;
-                        height: 0; }
-
-#selected_rule {
-  margin-bottom: 1.5em;
-  counter-reset: v1 0;
-  background: #edf9ff;
-  border: 1px solid #dddddd; }
-  #selected_rule li {
-    position: relative; }
-    #selected_rule li a.btn:before {
-      content: "-"; }
-  #selected_rule li:before {
-    content: "rule:" counter(v1);
-    counter-increment: v1;
-    display: inline-block;
-    margin-right: 5px;
-    background: #555555;
-    color: #ffffff;
-    font-size: 90%;
-    padding: 0px 4px;
-    vertical-align: middle;
-    border-radius: 2px;
-    position: absolute;
-    left: -2em; }
-    #selected_rule.dragging li:before {
-      content: "rule:";
-      background-color: rgba(102, 102, 102, 0.5);
-      padding-right: 10px; }
-      #selected_rule.dragging li.ui-state-highlight:before {
-        content: "";
-        background: transparent; }
-
-.tablesorter thead tr th.tablesorter-header {
-  cursor: pointer;
-  background-repeat: no-repeat;
-  background-position: 99% center;
-  background-position: right 5px center; }
-  .tablesorter thead tr th.tablesorter-headerAsc {
-    background-image: url('/static/dashboard/img/up_arrow.png?4293b62aa222'); }
-    .tablesorter thead tr th.tablesorter-headerDesc {
-      background-image: url('/static/dashboard/img/drop_arrow.png?2ec1100baed3'); }
-
-a.link-popover {
-  cursor: default; }
-
-  a:hover.link-popover {
-    text-decoration: none; }
-.breadcrumb {
-  padding: 8px 15px;
-  margin-bottom: 18px;
-  list-style: none;
-  background-color: #f5f5f5;
-  border-radius: 4px; }
-  .breadcrumb > li {
-    display: inline-block; }
-    .breadcrumb > li + li:before {
-      content: "/\00a0";
-      padding: 0 5px;
-      color: #ccc; }
-  .breadcrumb > .active {
-    color: #777; }
-.pagination {
-  display: inline-block;
-  padding-left: 0;
-  margin: 18px 0;
-  border-radius: 4px; }
-  .pagination > li {
-    display: inline; }
-    .pagination > li > a, .pagination > li > span {
-      position: relative;
-      float: left;
-      padding: 6px 12px;
-      line-height: 1.5;
-      text-decoration: none;
-      color: #428bca;
-      background-color: #fff;
-      border: 1px solid #ddd;
-      margin-left: -1px; }
-      .pagination > li:first-child > a, .pagination > li:first-child > span {
-        margin-left: 0;
-        border-bottom-left-radius: 4px;
-        border-top-left-radius: 4px; }
-    .pagination > li:last-child > a, .pagination > li:last-child > span {
-      border-bottom-right-radius: 4px;
-      border-top-right-radius: 4px; }
-  .pagination > li > a:hover, .pagination > li > a:focus,
-  .pagination > li > span:hover, .pagination > li > span:focus {
-    color: #005D9D;
-    background-color: #eee;
-    border-color: #ddd; }
-  .pagination > .active > a, .pagination > .active > a:hover,
-  .pagination > .active > a:focus, .pagination > .active > span,
-  .pagination > .active > span:hover, .pagination > .active > span:focus {
-    z-index: 2;
-    color: #fff;
-    background-color: #428bca;
-    border-color: #428bca;
-    cursor: default; }
-  .pagination > .disabled > span, .pagination > .disabled > span:hover,
-  .pagination > .disabled > span:focus, .pagination > .disabled > a,
-  .pagination > .disabled > a:hover, .pagination > .disabled > a:focus {
-    color: #777;
-    background-color: #fff;
-    border-color: #ddd;
-    cursor: not-allowed; }
-.pagination-lg > li > a, .pagination-lg > li > span {
-  padding: 10px 16px;
-  font-size: 17px; }
-  .pagination-lg > li:first-child > a, .pagination-lg > li:first-child > span {
-    border-bottom-left-radius: 6px;
-    border-top-left-radius: 6px; }
-.pagination-lg > li:last-child > a, .pagination-lg > li:last-child > span {
-  border-bottom-right-radius: 6px;
-  border-top-right-radius: 6px; }
-.pagination-sm > li > a, .pagination-sm > li > span {
-  padding: 5px 10px;
-  font-size: 12px; }
-  .pagination-sm > li:first-child > a, .pagination-sm > li:first-child > span {
-    border-bottom-left-radius: 3px;
-    border-top-left-radius: 3px; }
-.pagination-sm > li:last-child > a, .pagination-sm > li:last-child > span {
-  border-bottom-right-radius: 3px;
-  border-top-right-radius: 3px; }
-.pager {
-  padding-left: 0;
-  margin: 18px 0;
-  list-style: none;
-  text-align: center; }
-  .pager li {
-    display: inline; }
-    .pager li > a, .pager li > span {
-      display: inline-block;
-      padding: 5px 14px;
-      background-color: #fff;
-      border: 1px solid #ddd;
-      border-radius: 15px; }
-      .pager li > a:hover, .pager li > a:focus {
-        text-decoration: none;
-        background-color: #eee; }
-  .pager .next > a, .pager .next > span {
-    float: right; }
-  .pager .previous > a, .pager .previous > span {
-    float: left; }
-  .pager .disabled > a, .pager .disabled > a:hover, .pager .disabled > a:focus,
-  .pager .disabled > span {
-    color: #777;
-    background-color: #fff;
-    cursor: not-allowed; }
-.label {
-  display: inline;
-  padding: 0.2em 0.6em 0.3em;
-  font-size: 75%;
-  font-weight: bold;
-  line-height: 1;
-  color: #fff;
-  text-align: center;
-  white-space: nowrap;
-  vertical-align: baseline;
-  border-radius: 0.25em; }
-  .label:empty {
-    display: none; }
-    .btn .label {
-      position: relative;
-      top: -1px; }
-
-a.label:hover, a.label:focus {
-  color: #fff;
-  text-decoration: none;
-  cursor: pointer; }
-
-.label-default {
-  background-color: #777; }
-
-  .label-primary {
-    background-color: #428bca; }
-
-    .label-success {
-      background-color: #5cb85c; }
-
-      .label-info {
-        background-color: #5bc0de; }
-
-        .label-warning {
-          background-color: #f0ad4e; }
-
-          .label-danger {
-            background-color: #d9534f; }
-.label-default[href]:hover, .label-default[href]:focus {
-  background-color: #5e5e5e; }
-.label-primary[href]:hover, .label-primary[href]:focus {
-  background-color: #3071a9; }
-.label-success[href]:hover, .label-success[href]:focus {
-  background-color: #449d44; }
-.label-info[href]:hover, .label-info[href]:focus {
-  background-color: #31b0d5; }
-.label-warning[href]:hover, .label-warning[href]:focus {
-  background-color: #ec971f; }
-.label-danger[href]:hover, .label-danger[href]:focus {
-  background-color: #c9302c; }
-.jumbotron {
-  padding: 30px;
-  margin-bottom: 30px;
-  color: inherit;
-  background-color: #eee; }
-  .jumbotron h1, .jumbotron .h1 {
-    color: inherit; }
-    .jumbotron p {
-      margin-bottom: 15px;
-      font-size: 20px;
-      font-weight: 200; }
-      .jumbotron > hr {
-        border-top-color: #d5d5d5; }
-        .container .jumbotron {
-          border-radius: 6px; }
-          .jumbotron .container {
-            max-width: 100%; }
-            @media screen and (min-width: 768px) {
-              .jumbotron {
-                padding-top: 48px;
-                padding-bottom: 48px;   }
-                .container .jumbotron {
-                  padding-left: 60px;
-                  padding-right: 60px;   }
-                  .jumbotron h1, .jumbotron .h1 {
-                    font-size: 58.5px;   }
-}
-.thumbnail {
-  display: block;
-  padding: 4px;
-  margin-bottom: 18px;
-  line-height: 1.5;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  border-radius: 4px;
-  -webkit-transition: all 0.2s ease-in-out;
-  -o-transition: all 0.2s ease-in-out;
-  transition: all 0.2s ease-in-out; }
-  .thumbnail > img, .thumbnail a > img {
-    display: block;
-    width: 100% \9;
-    max-width: 100%;
-    height: auto;
-    margin-left: auto;
-    margin-right: auto; }
-    .thumbnail .caption {
-      padding: 9px;
-      color: #333; }
-
-a.thumbnail:hover, a.thumbnail:focus, a.thumbnail.active {
-  border-color: #428bca; }
-.alert {
-  padding: 15px;
-  margin-bottom: 18px;
-  border: 1px solid transparent;
-  border-radius: 4px; }
-  .alert h4 {
-    margin-top: 0;
-    color: inherit; }
-    .alert .alert-link {
-      font-weight: bold; }
-      .alert > p, .alert > ul {
-        margin-bottom: 0; }
-        .alert > p + p {
-          margin-top: 5px; }
-
-.alert-dismissable, .alert-dismissible {
-  padding-right: 35px; }
-  .alert-dismissable .close, .alert-dismissible .close {
-    position: relative;
-    top: -2px;
-    right: -21px;
-    color: inherit; }
-
-.alert-success {
-  background-color: #dff0d8;
-  border-color: #d6e9c6;
-  color: #3c763d; }
-
-  .alert-info {
-    background-color: #d9edf7;
-    border-color: #bce8f1;
-    color: #31708f; }
-
-    .alert-warning {
-      background-color: #fcf8e3;
-      border-color: #faebcc;
-      color: #8a6d3b; }
-
-      .alert-danger {
-        background-color: #f2dede;
-        border-color: #ebccd1;
-        color: #a94442; }
-.alert-success hr {
-  border-top-color: #c9e2b3; }
-  .alert-success .alert-link {
-    color: #2b542c; }
-    .alert-info hr {
-      border-top-color: #a6e1ec; }
-      .alert-info .alert-link {
-        color: #245269; }
-        .alert-warning hr {
-          border-top-color: #f7e1b5; }
-          .alert-warning .alert-link {
-            color: #66512c; }
-            .alert-danger hr {
-              border-top-color: #e4b9c0; }
-              .alert-danger .alert-link {
-                color: #843534; }
-@-webkit-keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;   }
-    to {
-      background-position: 0 0;   }
-}
-
-@keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;   }
-    to {
-      background-position: 0 0;   }
-}
-
-.progress {
-  overflow: hidden;
-  height: 18px;
-  margin-bottom: 18px;
-  background-color: #f5f5f5;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); }
-
-  .progress-bar {
-    float: left;
-    width: 0%;
-    height: 100%;
-    font-size: 12px;
-    line-height: 18px;
-    color: #fff;
-    text-align: center;
-    background-color: #428bca;
-    -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-    box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-    -webkit-transition: width 0.6s ease;
-    -o-transition: width 0.6s ease;
-    transition: width 0.6s ease; }
-
-    .progress-striped .progress-bar, .progress-bar-striped {
-      background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
-            transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
-            transparent 75%, transparent);
-      background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
-            transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
-            transparent 75%, transparent);
-      background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
-            transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
-            transparent 75%, transparent);
-      background-size: 40px 40px; }
-
-      .progress.active .progress-bar, .progress-bar.active {
-        -webkit-animation: progress-bar-stripes 2s linear infinite;
-        -o-animation: progress-bar-stripes 2s linear infinite;
-        animation: progress-bar-stripes 2s linear infinite; }
-
-        .progress-bar[aria-valuenow="1"], .progress-bar[aria-valuenow="2"] {
-          min-width: 30px; }
-          .progress-bar[aria-valuenow="0"] {
-            color: #777;
-            min-width: 30px;
-            background-color: transparent;
-            background-image: none;
-            box-shadow: none; }
-
-.progress-bar-success {
-  background-color: #5cb85c; }
-
-  .progress-bar-info {
-    background-color: #5bc0de; }
-
-    .progress-bar-warning {
-      background-color: #f0ad4e; }
-
-      .progress-bar-danger {
-        background-color: #d9534f; }
-.progress-striped .progress-bar-success {
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
-    transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
-    transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
-    transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
-    transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
-    transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
-    transparent 75%, transparent); }
-  .progress-striped .progress-bar-info {
-    background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
-        transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
-        transparent 75%, transparent);
-    background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
-        transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
-        transparent 75%, transparent);
-    background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
-        transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
-        transparent 75%, transparent); }
-    .progress-striped .progress-bar-warning {
-      background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
-            transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
-            transparent 75%, transparent);
-      background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
-            transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
-            transparent 75%, transparent);
-      background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
-            transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
-            transparent 75%, transparent); }
-      .progress-striped .progress-bar-danger {
-        background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
-                transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
-                transparent 75%, transparent);
-        background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
-                transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
-                transparent 75%, transparent);
-        background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
-                transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
-                transparent 75%, transparent); }
-.media, .media-body {
-  overflow: hidden;
-  zoom: 1; }
-
-  .media, .media .media {
-    margin-top: 15px; }
-
-    .media:first-child {
-      margin-top: 0; }
-
-      .media-object {
-        display: block; }
-
-        .media-heading {
-          margin: 0 0 5px; }
-
-          .media > .pull-left {
-            margin-right: 10px; }
-            .media > .pull-right {
-              margin-left: 10px; }
-
-.media-list {
-  padding-left: 0;
-  list-style: none; }
-.list-group {
-  margin-bottom: 20px;
-  padding-left: 0; }
-
-  .list-group-item {
-    position: relative;
-    display: block;
-    padding: 10px 15px;
-    margin-bottom: -1px;
-    background-color: #fff;
-    border: 1px solid #ddd; }
-    .list-group-item:first-child {
-      border-top-right-radius: 4px;
-      border-top-left-radius: 4px; }
-      .list-group-item:last-child {
-        margin-bottom: 0;
-        border-bottom-right-radius: 4px;
-        border-bottom-left-radius: 4px; }
-        .list-group-item > .badge {
-          float: right; }
-          .list-group-item > .badge + .badge {
-            margin-right: 5px; }
-
-a.list-group-item {
-  color: #555; }
-  a.list-group-item .list-group-item-heading {
-    color: #333; }
-    a.list-group-item:hover, a.list-group-item:focus {
-      text-decoration: none;
-      color: #555;
-      background-color: #f5f5f5; }
-
-.list-group-item.disabled, .list-group-item.disabled:hover,
-.list-group-item.disabled:focus {
-  background-color: #eee;
-  color: #777; }
-  .list-group-item.disabled .list-group-item-heading,
-  .list-group-item.disabled:hover .list-group-item-heading,
-  .list-group-item.disabled:focus .list-group-item-heading {
-    color: inherit; }
-    .list-group-item.disabled .list-group-item-text,
-    .list-group-item.disabled:hover .list-group-item-text,
-    .list-group-item.disabled:focus .list-group-item-text {
-      color: #777; }
-.list-group-item.active, .list-group-item.active:hover,
-.list-group-item.active:focus {
-  z-index: 2;
-  color: #fff;
-  background-color: #428bca;
-  border-color: #428bca; }
-  .list-group-item.active .list-group-item-heading,
-  .list-group-item.active .list-group-item-heading > small,
-  .list-group-item.active .list-group-item-heading > .small,
-  .list-group-item.active:hover .list-group-item-heading,
-  .list-group-item.active:hover .list-group-item-heading > small,
-  .list-group-item.active:hover .list-group-item-heading > .small,
-  .list-group-item.active:focus .list-group-item-heading,
-  .list-group-item.active:focus .list-group-item-heading > small,
-  .list-group-item.active:focus .list-group-item-heading > .small {
-    color: inherit; }
-    .list-group-item.active .list-group-item-text,
-    .list-group-item.active:hover .list-group-item-text,
-    .list-group-item.active:focus .list-group-item-text {
-      color: #e1edf7; }
-
-.list-group-item-heading {
-  margin-top: 0;
-  margin-bottom: 5px; }
-
-  .list-group-item-text {
-    margin-bottom: 0;
-    line-height: 1.3; }
-.list-group-item-success {
-  color: #3c763d;
-  background-color: #dff0d8; }
-
-  a.list-group-item-success {
-    color: #3c763d; }
-    a.list-group-item-success .list-group-item-heading {
-      color: inherit; }
-      a.list-group-item-success:hover, a.list-group-item-success:focus {
-        color: #3c763d;
-        background-color: #d0e9c6; }
-        a.list-group-item-success.active, a.list-group-item-success.active:hover,
-        a.list-group-item-success.active:focus {
-          color: #fff;
-          background-color: #3c763d;
-          border-color: #3c763d; }
-
-.list-group-item-info {
-  color: #31708f;
-  background-color: #d9edf7; }
-
-  a.list-group-item-info {
-    color: #31708f; }
-    a.list-group-item-info .list-group-item-heading {
-      color: inherit; }
-      a.list-group-item-info:hover, a.list-group-item-info:focus {
-        color: #31708f;
-        background-color: #c4e3f3; }
-        a.list-group-item-info.active, a.list-group-item-info.active:hover,
-        a.list-group-item-info.active:focus {
-          color: #fff;
-          background-color: #31708f;
-          border-color: #31708f; }
-
-.list-group-item-warning {
-  color: #8a6d3b;
-  background-color: #fcf8e3; }
-
-  a.list-group-item-warning {
-    color: #8a6d3b; }
-    a.list-group-item-warning .list-group-item-heading {
-      color: inherit; }
-      a.list-group-item-warning:hover, a.list-group-item-warning:focus {
-        color: #8a6d3b;
-        background-color: #faf2cc; }
-        a.list-group-item-warning.active, a.list-group-item-warning.active:hover,
-        a.list-group-item-warning.active:focus {
-          color: #fff;
-          background-color: #8a6d3b;
-          border-color: #8a6d3b; }
-
-.list-group-item-danger {
-  color: #a94442;
-  background-color: #f2dede; }
-
-  a.list-group-item-danger {
-    color: #a94442; }
-    a.list-group-item-danger .list-group-item-heading {
-      color: inherit; }
-      a.list-group-item-danger:hover, a.list-group-item-danger:focus {
-        color: #a94442;
-        background-color: #ebcccc; }
-        a.list-group-item-danger.active, a.list-group-item-danger.active:hover,
-        a.list-group-item-danger.active:focus {
-          color: #fff;
-          background-color: #a94442;
-          border-color: #a94442; }
-.panel {
-  margin-bottom: 18px;
-  background-color: #fff;
-  border: 1px solid transparent;
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
-  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); }
-
-  .panel-body {
-    padding: 15px; }
-
-    .panel-heading {
-      padding: 10px 15px;
-      border-bottom: 1px solid transparent;
-      border-top-right-radius: 3px;
-      border-top-left-radius: 3px; }
-      .panel-heading > .dropdown .dropdown-toggle {
-        color: inherit; }
-
-.panel-title {
-  margin-top: 0;
-  margin-bottom: 0;
-  font-size: 15px;
-  color: inherit; }
-  .panel-title > a {
-    color: inherit; }
-
-.panel-footer {
-  padding: 10px 15px;
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-  border-bottom-right-radius: 3px;
-  border-bottom-left-radius: 3px; }
-
-  .panel > .list-group {
-    margin-bottom: 0; }
-    .panel > .list-group .list-group-item {
-      border-width: 1px 0;
-      border-radius: 0; }
-      .panel > .list-group:first-child .list-group-item:first-child {
-        border-top: 0;
-        border-top-right-radius: 3px;
-        border-top-left-radius: 3px; }
-    .panel > .list-group:last-child .list-group-item:last-child {
-      border-bottom: 0;
-      border-bottom-right-radius: 3px;
-      border-bottom-left-radius: 3px; }
-
-.panel-heading + .list-group .list-group-item:first-child {
-  border-top-width: 0; }
-
-.list-group + .panel-footer {
-  border-top-width: 0; }
-
-  .panel > .table, .panel > .table-responsive > .table,
-  .panel > .panel-collapse > .table {
-    margin-bottom: 0; }
-    .panel > .table:first-child,
-    .panel > .table-responsive:first-child > .table:first-child {
-      border-top-right-radius: 3px;
-      border-top-left-radius: 3px; }
-      .panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
-      .panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
-      .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
-      .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
-      .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
-      .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
-      .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
-      .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
-        border-top-left-radius: 3px; }
-        .panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
-        .panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
-        .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
-        .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
-        .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
-        .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
-        .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
-        .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
-          border-top-right-radius: 3px; }
-  .panel > .table:last-child,
-  .panel > .table-responsive:last-child > .table:last-child {
-    border-bottom-right-radius: 3px;
-    border-bottom-left-radius: 3px; }
-    .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
-    .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
-    .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
-    .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
-    .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
-    .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
-    .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
-    .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
-      border-bottom-left-radius: 3px; }
-      .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
-      .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
-      .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
-      .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
-      .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
-      .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
-      .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
-      .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
-        border-bottom-right-radius: 3px; }
-  .panel > .panel-body + .table, .panel > .panel-body + .table-responsive {
-    border-top: 1px solid #ddd; }
-    .panel > .table > tbody:first-child > tr:first-child th,
-    .panel > .table > tbody:first-child > tr:first-child td {
-      border-top: 0; }
-      .panel > .table-bordered, .panel > .table-responsive > .table-bordered {
-        border: 0; }
-        .panel > .table-bordered > thead > tr > th:first-child,
-        .panel > .table-bordered > thead > tr > td:first-child,
-        .panel > .table-bordered > tbody > tr > th:first-child,
-        .panel > .table-bordered > tbody > tr > td:first-child,
-        .panel > .table-bordered > tfoot > tr > th:first-child,
-        .panel > .table-bordered > tfoot > tr > td:first-child,
-        .panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
-        .panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
-        .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
-        .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
-        .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
-        .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
-          border-left: 0; }
-          .panel > .table-bordered > thead > tr > th:last-child,
-          .panel > .table-bordered > thead > tr > td:last-child,
-          .panel > .table-bordered > tbody > tr > th:last-child,
-          .panel > .table-bordered > tbody > tr > td:last-child,
-          .panel > .table-bordered > tfoot > tr > th:last-child,
-          .panel > .table-bordered > tfoot > tr > td:last-child,
-          .panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
-          .panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
-          .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
-          .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
-          .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
-          .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
-            border-right: 0; }
-        .panel > .table-bordered > thead > tr:first-child > td,
-        .panel > .table-bordered > thead > tr:first-child > th,
-        .panel > .table-bordered > tbody > tr:first-child > td,
-        .panel > .table-bordered > tbody > tr:first-child > th,
-        .panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
-        .panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
-        .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
-        .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
-          border-bottom: 0; }
-        .panel > .table-bordered > tbody > tr:last-child > td,
-        .panel > .table-bordered > tbody > tr:last-child > th,
-        .panel > .table-bordered > tfoot > tr:last-child > td,
-        .panel > .table-bordered > tfoot > tr:last-child > th,
-        .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
-        .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
-        .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
-        .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
-          border-bottom: 0; }
-  .panel > .table-responsive {
-    border: 0;
-    margin-bottom: 0; }
-
-.panel-group {
-  margin-bottom: 18px; }
-  .panel-group .panel {
-    margin-bottom: 0;
-    border-radius: 4px; }
-    .panel-group .panel + .panel {
-      margin-top: 5px; }
-  .panel-group .panel-heading {
-    border-bottom: 0; }
-    .panel-group .panel-heading + .panel-collapse > .panel-body {
-      border-top: 1px solid #ddd; }
-  .panel-group .panel-footer {
-    border-top: 0; }
-    .panel-group .panel-footer + .panel-collapse .panel-body {
-      border-bottom: 1px solid #ddd; }
-
-.panel-default {
-  border-color: #ddd; }
-
-  .panel-primary {
-    border-color: #428bca; }
-
-    .panel-success {
-      border-color: #d6e9c6; }
-
-      .panel-info {
-        border-color: #bce8f1; }
-
-        .panel-warning {
-          border-color: #faebcc; }
-
-          .panel-danger {
-            border-color: #ebccd1; }
-.panel-default > .panel-heading {
-  color: #333;
-  background-color: #f5f5f5;
-  border-color: #ddd; }
-  .panel-default > .panel-heading + .panel-collapse > .panel-body {
-    border-top-color: #ddd; }
-    .panel-default > .panel-heading .badge {
-      color: #f5f5f5;
-      background-color: #333; }
-.panel-default > .panel-footer + .panel-collapse > .panel-body {
-  border-bottom-color: #ddd; }
-.panel-primary > .panel-heading {
-  color: #fff;
-  background-color: #428bca;
-  border-color: #428bca; }
-  .panel-primary > .panel-heading + .panel-collapse > .panel-body {
-    border-top-color: #428bca; }
-    .panel-primary > .panel-heading .badge {
-      color: #428bca;
-      background-color: #fff; }
-.panel-primary > .panel-footer + .panel-collapse > .panel-body {
-  border-bottom-color: #428bca; }
-.panel-success > .panel-heading {
-  color: #3c763d;
-  background-color: #dff0d8;
-  border-color: #d6e9c6; }
-  .panel-success > .panel-heading + .panel-collapse > .panel-body {
-    border-top-color: #d6e9c6; }
-    .panel-success > .panel-heading .badge {
-      color: #dff0d8;
-      background-color: #3c763d; }
-.panel-success > .panel-footer + .panel-collapse > .panel-body {
-  border-bottom-color: #d6e9c6; }
-.panel-info > .panel-heading {
-  color: #31708f;
-  background-color: #d9edf7;
-  border-color: #bce8f1; }
-  .panel-info > .panel-heading + .panel-collapse > .panel-body {
-    border-top-color: #bce8f1; }
-    .panel-info > .panel-heading .badge {
-      color: #d9edf7;
-      background-color: #31708f; }
-.panel-info > .panel-footer + .panel-collapse > .panel-body {
-  border-bottom-color: #bce8f1; }
-.panel-warning > .panel-heading {
-  color: #8a6d3b;
-  background-color: #fcf8e3;
-  border-color: #faebcc; }
-  .panel-warning > .panel-heading + .panel-collapse > .panel-body {
-    border-top-color: #faebcc; }
-    .panel-warning > .panel-heading .badge {
-      color: #fcf8e3;
-      background-color: #8a6d3b; }
-.panel-warning > .panel-footer + .panel-collapse > .panel-body {
-  border-bottom-color: #faebcc; }
-.panel-danger > .panel-heading {
-  color: #a94442;
-  background-color: #f2dede;
-  border-color: #ebccd1; }
-  .panel-danger > .panel-heading + .panel-collapse > .panel-body {
-    border-top-color: #ebccd1; }
-    .panel-danger > .panel-heading .badge {
-      color: #f2dede;
-      background-color: #a94442; }
-.panel-danger > .panel-footer + .panel-collapse > .panel-body {
-  border-bottom-color: #ebccd1; }
-.embed-responsive {
-  position: relative;
-  display: block;
-  height: 0;
-  padding: 0;
-  overflow: hidden; }
-  .embed-responsive .embed-responsive-item, .embed-responsive iframe,
-  .embed-responsive embed, .embed-responsive object {
-    position: absolute;
-    top: 0;
-    left: 0;
-    bottom: 0;
-    height: 100%;
-    width: 100%;
-    border: 0; }
-    .embed-responsive.embed-responsive-16by9 {
-      padding-bottom: 56.25%; }
-      .embed-responsive.embed-responsive-4by3 {
-        padding-bottom: 75%; }
-.well {
-  min-height: 20px;
-  padding: 19px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border: 1px solid #e3e3e3;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); }
-  .well blockquote {
-    border-color: #ddd;
-    border-color: rgba(0, 0, 0, 0.15); }
-
-.well-lg {
-  padding: 24px;
-  border-radius: 6px; }
-
-  .well-sm {
-    padding: 9px;
-    border-radius: 3px; }
-.close {
-  float: right;
-  font-size: 19.5px;
-  font-weight: bold;
-  line-height: 1;
-  color: #000;
-  text-shadow: 0 1px 0 #fff;
-  opacity: 0.2;
-  filter: alpha(opacity=20); }
-  .close:hover, .close:focus {
-    color: #000;
-    text-decoration: none;
-    cursor: pointer;
-    opacity: 0.5;
-    filter: alpha(opacity=50); }
-
-button.close {
-  padding: 0;
-  cursor: pointer;
-  background: transparent;
-  border: 0;
-  -webkit-appearance: none; }
-.modal-open {
-  overflow: hidden; }
-
-  .modal {
-    display: none;
-    overflow: hidden;
-    position: fixed;
-    top: 0;
-    right: 0;
-    bottom: 0;
-    left: 0;
-    z-index: 1050;
-    -webkit-overflow-scrolling: touch;
-    outline: 0; }
-    .modal.fade .modal-dialog {
-      -webkit-transform: translate3d(0, -25%, 0);
-      transform: translate3d(0, -25%, 0);
-      -webkit-transition: -webkit-transform 0.3s ease-out;
-      -moz-transition: -moz-transform 0.3s ease-out;
-      -o-transition: -o-transform 0.3s ease-out;
-      transition: transform 0.3s ease-out; }
-      .modal.in .modal-dialog {
-        -webkit-transform: translate3d(0, 0, 0);
-        transform: translate3d(0, 0, 0); }
-
-.modal-open .modal {
-  overflow-x: hidden;
-  overflow-y: auto; }
-
-  .modal-dialog {
-    position: relative;
-    width: auto;
-    margin: 10px; }
-
-    .modal-content {
-      position: relative;
-      background-color: #fff;
-      border: 1px solid #999;
-      border: 1px solid rgba(0, 0, 0, 0.2);
-      border-radius: 6px;
-      -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
-      box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
-      background-clip: padding-box;
-      outline: 0; }
-
-      .modal-backdrop {
-        position: fixed;
-        top: 0;
-        right: 0;
-        bottom: 0;
-        left: 0;
-        z-index: 1040;
-        background-color: #000; }
-        .modal-backdrop.fade {
-          opacity: 0;
-          filter: alpha(opacity=0); }
-          .modal-backdrop.in {
-            opacity: 0.5;
-            filter: alpha(opacity=50); }
-
-.modal-header {
-	/*padding: 15px;
-	min-height: 16.42857px; */
-	height: 39px;
-	padding-top: 0px;
-	padding: 0px 0px 15px 15px;;	
-}
-.modal-header .close {
-	margin-top: -2px;
-	margin-right: 15px;
-}
-.modal-title {
-	margin: 0;
-	line-height: 1.5; }
-.modal-body {
-	position: relative;
-	padding: 15px; }
-.modal-footer {
-	padding: 15px;
-	text-align: right;
-	background: #f5f5f5;
-	border-top: 1px solid #e5e5e5; }
-.modal-footer .btn + .btn {
-	margin-left: 5px;
-	margin-bottom: 0; }
-.modal-footer .btn-group .btn + .btn {
-	margin-left: -1px; }
-.modal-footer .btn-block + .btn-block {
-	margin-left: 0; }
-.modal-scrollbar-measure {
-  position: absolute;
-  top: -9999px;
-  width: 50px;
-  height: 50px;
-  overflow: scroll; }
-
-  @media (min-width: 768px) {
-    .modal-dialog {
-      width: 732px;
-      margin: 30px auto;   }
-      .modal-content {
-        -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
-        box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);   }
-        .modal-sm {
-          width: 300px;   }
-}
-
-@media (min-width: 992px) {
-  .modal-lg {
-    width: 900px;   }
-}
-.tooltip {
-  position: absolute;
-  z-index: 1070;
-  display: block;
-  visibility: visible;
-  font-size: 12px;
-  line-height: 1.4;
-  opacity: 0;
-  filter: alpha(opacity=0); }
-  .tooltip.in {
-    opacity: 0.9;
-    filter: alpha(opacity=90); }
-    .tooltip.top {
-      margin-top: -3px;
-      padding: 5px 0; }
-      .tooltip.right {
-        margin-left: 3px;
-        padding: 0 5px; }
-        .tooltip.bottom {
-          margin-top: 3px;
-          padding: 5px 0; }
-          .tooltip.left {
-            margin-left: -3px;
-            padding: 0 5px; }
-
-.tooltip-inner {
-  max-width: 200px;
-  padding: 3px 8px;
-  color: #fff;
-  text-align: center;
-  text-decoration: none;
-  background-color: #000;
-  border-radius: 4px; }
-
-  .tooltip-arrow {
-    position: absolute;
-    width: 0;
-    height: 0;
-    border-color: transparent;
-    border-style: solid; }
-
-    .tooltip.top .tooltip-arrow {
-      bottom: 0;
-      left: 50%;
-      margin-left: -5px;
-      border-width: 5px 5px 0;
-      border-top-color: #000; }
-      .tooltip.top-left .tooltip-arrow {
-        bottom: 0;
-        left: 5px;
-        border-width: 5px 5px 0;
-        border-top-color: #000; }
-        .tooltip.top-right .tooltip-arrow {
-          bottom: 0;
-          right: 5px;
-          border-width: 5px 5px 0;
-          border-top-color: #000; }
-          .tooltip.right .tooltip-arrow {
-            top: 50%;
-            left: 0;
-            margin-top: -5px;
-            border-width: 5px 5px 5px 0;
-            border-right-color: #000; }
-            .tooltip.left .tooltip-arrow {
-              top: 50%;
-              right: 0;
-              margin-top: -5px;
-              border-width: 5px 0 5px 5px;
-              border-left-color: #000; }
-              .tooltip.bottom .tooltip-arrow {
-                top: 0;
-                left: 50%;
-                margin-left: -5px;
-                border-width: 0 5px 5px;
-                border-bottom-color: #000; }
-                .tooltip.bottom-left .tooltip-arrow {
-                  top: 0;
-                  left: 5px;
-                  border-width: 0 5px 5px;
-                  border-bottom-color: #000; }
-                  .tooltip.bottom-right .tooltip-arrow {
-                    top: 0;
-                    right: 5px;
-                    border-width: 0 5px 5px;
-                    border-bottom-color: #000; }
-.popover {
-  position: absolute;
-  top: 0;
-  left: 0;
-  z-index: 1060;
-  display: none;
-  max-width: 276px;
-  padding: 1px;
-  text-align: left;
-  background-color: #fff;
-  background-clip: padding-box;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  border-radius: 6px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  white-space: normal; }
-  .popover.top {
-    margin-top: -10px; }
-    .popover.right {
-      margin-left: 10px; }
-      .popover.bottom {
-        margin-top: 10px; }
-        .popover.left {
-          margin-left: -10px; }
-
-.popover-title {
-  margin: 0;
-  padding: 8px 14px;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 18px;
-  background-color: #f7f7f7;
-  border-bottom: 1px solid #ebebeb;
-  border-radius: 5px 5px 0 0; }
-
-  .popover-content {
-    padding: 9px 14px; }
-
-    .popover > .arrow, .popover > .arrow:after {
-      position: absolute;
-      display: block;
-      width: 0;
-      height: 0;
-      border-color: transparent;
-      border-style: solid; }
-
-.popover > .arrow {
-  border-width: 11px; }
-
-  .popover > .arrow:after {
-    border-width: 10px;
-    content: ""; }
-
-    .popover.top > .arrow {
-      left: 50%;
-      margin-left: -11px;
-      border-bottom-width: 0;
-      border-top-color: #999;
-      border-top-color: rgba(0, 0, 0, 0.25);
-      bottom: -11px; }
-      .popover.top > .arrow:after {
-        content: " ";
-        bottom: 1px;
-        margin-left: -10px;
-        border-bottom-width: 0;
-        border-top-color: #fff; }
-    .popover.right > .arrow {
-      top: 50%;
-      left: -11px;
-      margin-top: -11px;
-      border-left-width: 0;
-      border-right-color: #999;
-      border-right-color: rgba(0, 0, 0, 0.25); }
-      .popover.right > .arrow:after {
-        content: " ";
-        left: 1px;
-        bottom: -10px;
-        border-left-width: 0;
-        border-right-color: #fff; }
-    .popover.bottom > .arrow {
-      left: 50%;
-      margin-left: -11px;
-      border-top-width: 0;
-      border-bottom-color: #999;
-      border-bottom-color: rgba(0, 0, 0, 0.25);
-      top: -11px; }
-      .popover.bottom > .arrow:after {
-        content: " ";
-        top: 1px;
-        margin-left: -10px;
-        border-top-width: 0;
-        border-bottom-color: #fff; }
-    .popover.left > .arrow {
-      top: 50%;
-      right: -11px;
-      margin-top: -11px;
-      border-right-width: 0;
-      border-left-color: #999;
-      border-left-color: rgba(0, 0, 0, 0.25); }
-      .popover.left > .arrow:after {
-        content: " ";
-        right: 1px;
-        border-right-width: 0;
-        border-left-color: #fff;
-        bottom: -10px; }
-.carousel {
-  position: relative; }
-
-  .carousel-inner {
-    position: relative;
-    overflow: hidden;
-    width: 100%; }
-    .carousel-inner > .item {
-      display: none;
-      position: relative;
-      -webkit-transition: 0.6s ease-in-out left;
-      -o-transition: 0.6s ease-in-out left;
-      transition: 0.6s ease-in-out left; }
-      .carousel-inner > .item > img, .carousel-inner > .item > a > img {
-        display: block;
-        width: 100% \9;
-        max-width: 100%;
-        height: auto;
-        line-height: 1; }
-    .carousel-inner > .active, .carousel-inner > .next, .carousel-inner > .prev {
-      display: block; }
-      .carousel-inner > .active {
-        left: 0; }
-        .carousel-inner > .next, .carousel-inner > .prev {
-          position: absolute;
-          top: 0;
-          width: 100%; }
-          .carousel-inner > .next {
-            left: 100%; }
-            .carousel-inner > .prev {
-              left: -100%; }
-              .carousel-inner > .next.left, .carousel-inner > .prev.right {
-                left: 0; }
-                .carousel-inner > .active.left {
-                  left: -100%; }
-                  .carousel-inner > .active.right {
-                    left: 100%; }
-
-.carousel-control {
-  position: absolute;
-  top: 0;
-  left: 0;
-  bottom: 0;
-  width: 15%;
-  opacity: 0.5;
-  filter: alpha(opacity=50);
-  font-size: 20px;
-  color: #fff;
-  text-align: center;
-  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); }
-  .carousel-control.left {
-    background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
-    background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
-    background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.0001));
-    background-repeat: repeat-x;
-    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',
-        endColorstr='#00000000', GradientType=1); }
-    .carousel-control.right {
-      left: auto;
-      right: 0;
-      background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
-      background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
-      background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001), rgba(0, 0, 0, 0.5));
-      background-repeat: repeat-x;
-      filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',
-            endColorstr='#80000000', GradientType=1); }
-      .carousel-control:hover, .carousel-control:focus {
-        outline: 0;
-        color: #fff;
-        text-decoration: none;
-        opacity: 0.9;
-        filter: alpha(opacity=90); }
-        .carousel-control .icon-prev, .carousel-control .icon-next,
-        .carousel-control .glyphicon-chevron-left,
-        .carousel-control .glyphicon-chevron-right {
-          position: absolute;
-          top: 50%;
-          z-index: 5;
-          display: inline-block; }
-          .carousel-control .icon-prev, .carousel-control .glyphicon-chevron-left {
-            left: 50%;
-            margin-left: -10px; }
-            .carousel-control .icon-next, .carousel-control .glyphicon-chevron-right {
-              right: 50%;
-              margin-right: -10px; }
-              .carousel-control .icon-prev, .carousel-control .icon-next {
-                width: 20px;
-                height: 20px;
-                margin-top: -10px;
-                font-family: serif; }
-                .carousel-control .icon-prev:before {
-                  content: '\2039'; }
-  .carousel-control .icon-next:before {
-    content: '\203a'; }
-
-.carousel-indicators {
-  position: absolute;
-  bottom: 10px;
-  left: 50%;
-  z-index: 15;
-  width: 60%;
-  margin-left: -30%;
-  padding-left: 0;
-  list-style: none;
-  text-align: center; }
-  .carousel-indicators li {
-    display: inline-block;
-    width: 10px;
-    height: 10px;
-    margin: 1px;
-    text-indent: -999px;
-    border: 1px solid #fff;
-    border-radius: 10px;
-    cursor: pointer;
-    background-color: #000 \9;
-    background-color: transparent; }
-    .carousel-indicators .active {
-      margin: 0;
-      width: 12px;
-      height: 12px;
-      background-color: #fff; }
-
-.carousel-caption {
-  position: absolute;
-  left: 15%;
-  right: 15%;
-  bottom: 20px;
-  z-index: 10;
-  padding-top: 20px;
-  padding-bottom: 20px;
-  color: #fff;
-  text-align: center;
-  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); }
-  .carousel-caption .btn {
-    text-shadow: none; }
-
-@media screen and (min-width: 768px) {
-  .carousel-control .glyphicon-chevron-left,
-  .carousel-control .glyphicon-chevron-right, .carousel-control .icon-prev,
-  .carousel-control .icon-next {
-    width: 30px;
-    height: 30px;
-    margin-top: -15px;
-    font-size: 30px;   }
-    .carousel-control .glyphicon-chevron-left, .carousel-control .icon-prev {
-      margin-left: -15px;   }
-      .carousel-control .glyphicon-chevron-right, .carousel-control .icon-next {
-        margin-right: -15px;   }
-  .carousel-caption {
-    left: 20%;
-    right: 20%;
-    padding-bottom: 30px;   }
-    .carousel-indicators {
-      bottom: 20px;   }
-}
-.center-block {
-  display: block;
-  margin-left: auto;
-  margin-right: auto; }
-
-  .pull-right {
-    float: right !important; }
-
-    .pull-left {
-      float: left !important; }
-
-      .hide {
-        display: none !important; }
-
-        .show {
-          display: block !important; }
-
-          .invisible {
-            visibility: hidden; }
-
-            .text-hide {
-              font: 0 / 0 a;
-              color: transparent;
-              text-shadow: none;
-              background-color: transparent;
-              border: 0; }
-
-              .hidden {
-                display: none !important;
-                visibility: hidden !important; }
-
-                .affix {
-                  position: fixed;
-                  -webkit-transform: translate3d(0, 0, 0);
-                  transform: translate3d(0, 0, 0); }
-@-ms-viewport {
-  width: device-width; }
-
-  .visible-xs-block, .visible-xs-inline, .visible-xs-inline-block, .visible-sm-block,
-  .visible-sm-inline, .visible-sm-inline-block, .visible-md-block,
-  .visible-md-inline, .visible-md-inline-block, .visible-lg-block,
-  .visible-lg-inline, .visible-lg-inline-block {
-    display: none !important; }
-
-    @media (max-width: 767px) {
-      .visible-xs-block {
-        display: block !important;   }
-}
-
-@media (max-width: 767px) {
-  .visible-xs-inline {
-    display: inline !important;   }
-}
-
-@media (max-width: 767px) {
-  .visible-xs-inline-block {
-    display: inline-block !important;   }
-}
-
-@media (min-width: 768px) and (max-width: 991px) {
-  .visible-sm-block {
-    display: block !important;   }
-}
-
-@media (min-width: 768px) and (max-width: 991px) {
-  .visible-sm-inline {
-    display: inline !important;   }
-}
-
-@media (min-width: 768px) and (max-width: 991px) {
-  .visible-sm-inline-block {
-    display: inline-block !important;   }
-}
-
-@media (min-width: 992px) and (max-width: 1199px) {
-  .visible-md-block {
-    display: block !important;   }
-}
-
-@media (min-width: 992px) and (max-width: 1199px) {
-  .visible-md-inline {
-    display: inline !important;   }
-}
-
-@media (min-width: 992px) and (max-width: 1199px) {
-  .visible-md-inline-block {
-    display: inline-block !important;   }
-}
-
-@media (min-width: 1200px) {
-  .visible-lg-block {
-    display: block !important;   }
-}
-
-@media (min-width: 1200px) {
-  .visible-lg-inline {
-    display: inline !important;   }
-}
-
-@media (min-width: 1200px) {
-  .visible-lg-inline-block {
-    display: inline-block !important;   }
-}
-
-.visible-print-block {
-  display: none !important; }
-  @media print {
-    .visible-print-block {
-      display: block !important;   }
-}
-
-.visible-print-inline {
-  display: none !important; }
-  @media print {
-    .visible-print-inline {
-      display: inline !important;   }
-}
-
-.visible-print-inline-block {
-  display: none !important; }
-  @media print {
-    .visible-print-inline-block {
-      display: inline-block !important;   }
-}
-.visible-xs, .visible-sm, .visible-md, .visible-lg {
-  display: none !important; }
-  @media (max-width: 767px) {
-    .visible-xs {
-      display: block !important;   }
-      table.visible-xs {
-        display: table;   }
-        tr.visible-xs {
-          display: table-row !important;   }
-          th.visible-xs, td.visible-xs {
-            display: table-cell !important;   }
-}
-          @media (min-width: 768px) and (max-width: 991px) {
-            .visible-sm {
-              display: block !important;   }
-              table.visible-sm {
-                display: table;   }
-                tr.visible-sm {
-                  display: table-row !important;   }
-                  th.visible-sm, td.visible-sm {
-                    display: table-cell !important;   }
-}
-                  @media (min-width: 992px) and (max-width: 1199px) {
-                    .visible-md {
-                      display: block !important;   }
-                      table.visible-md {
-                        display: table;   }
-                        tr.visible-md {
-                          display: table-row !important;   }
-                          th.visible-md, td.visible-md {
-                            display: table-cell !important;   }
-}
-                          @media (min-width: 1200px) {
-                            .visible-lg {
-                              display: block !important;   }
-                              table.visible-lg {
-                                display: table;   }
-                                tr.visible-lg {
-                                  display: table-row !important;   }
-                                  th.visible-lg, td.visible-lg {
-                                    display: table-cell !important;   }
-}
-                                  @media (max-width: 767px) {
-                                    .hidden-xs {
-                                      display: none !important;   }
-}
-                                    @media (min-width: 768px) and (max-width: 991px) {
-                                      .hidden-sm {
-                                        display: none !important;   }
-}
-                                      @media (min-width: 992px) and (max-width: 1199px) {
-                                        .hidden-md {
-                                          display: none !important;   }
-}
-                                        @media (min-width: 1200px) {
-                                          .hidden-lg {
-                                            display: none !important;   }
-}
-
-.visible-print {
-  display: none !important; }
-  @media print {
-    .visible-print {
-      display: block !important;   }
-      table.visible-print {
-        display: table;   }
-        tr.visible-print {
-          display: table-row !important;   }
-          th.visible-print, td.visible-print {
-            display: table-cell !important;   }
-}
-@media print {
-            .hidden-print {
-              display: none !important;   }
-}
-.datepicker {
-	padding: 4px;
-	-webkit-border-radius: 4px;
-	-moz-border-radius: 4px;
-	border-radius: 4px;
-	direction: ltr; }
-
-.datepicker-inline {
-	width: 220px; }
-
-.datepicker.datepicker-rtl {
-	direction: rtl; }
-
-.datepicker.datepicker-rtl table tr td span {
-	float: right; }
-
-.datepicker-dropdown {
-	top: 0;
-	left: 0; }
-
-.datepicker-dropdown:before {
-            content: '';
-            display: inline-block;
-            border-left: 7px solid transparent;
-            border-right: 7px solid transparent;
-            border-bottom: 7px solid #ccc;
-            border-top: 0;
-            border-bottom-color: rgba(0, 0, 0, 0.2);
-            position: absolute; }
-
-            .datepicker-dropdown:after {
-              content: '';
-              display: inline-block;
-              border-left: 6px solid transparent;
-              border-right: 6px solid transparent;
-              border-bottom: 6px solid #ffffff;
-              border-top: 0;
-              position: absolute; }
-
-              .datepicker-dropdown.datepicker-orient-left:before {
-                left: 6px; }
-
-                .datepicker-dropdown.datepicker-orient-left:after {
-                  left: 7px; }
-
-                  .datepicker-dropdown.datepicker-orient-right:before {
-                    right: 6px; }
-
-                    .datepicker-dropdown.datepicker-orient-right:after {
-                      right: 7px; }
-
-                      .datepicker-dropdown.datepicker-orient-top:before {
-                        top: -7px; }
-
-                        .datepicker-dropdown.datepicker-orient-top:after {
-                          top: -6px; }
-
-                          .datepicker-dropdown.datepicker-orient-bottom:before {
-                            bottom: -7px;
-                            border-bottom: 0;
-                            border-top: 7px solid #999; }
-
-                            .datepicker-dropdown.datepicker-orient-bottom:after {
-                              bottom: -6px;
-                              border-bottom: 0;
-                              border-top: 6px solid #ffffff; }
-
-                              .datepicker > div {
-                                display: none; }
-
-                                .datepicker.days div.datepicker-days {
-                                  display: block; }
-
-                                  .datepicker.months div.datepicker-months {
-                                    display: block; }
-
-                                    .datepicker.years div.datepicker-years {
-                                      display: block; }
-
-                                      .datepicker table {
-                                        margin: 0;
-                                        -webkit-touch-callout: none;
-                                        -webkit-user-select: none;
-                                        -khtml-user-select: none;
-                                        -moz-user-select: none;
-                                        -ms-user-select: none;
-                                        user-select: none; }
-
-                                        .datepicker td, .datepicker th {
-                                          text-align: center;
-                                          width: 20px;
-                                          height: 20px;
-                                          -webkit-border-radius: 4px;
-                                          -moz-border-radius: 4px;
-                                          border-radius: 4px;
-                                          border: none; }
-
-                                          .table-striped .datepicker table tr td, .table-striped .datepicker table tr th {
-                                            background-color: transparent; }
-
-                                            .datepicker table tr td.day:hover, .datepicker table tr td.day.focused {
-                                              background: #eeeeee;
-                                              cursor: pointer; }
-
-                                              .datepicker table tr td.old, .datepicker table tr td.new {
-                                                color: #999999; }
-
-                                                .datepicker table tr td.disabled, .datepicker table tr td.disabled:hover {
-                                                  background: none;
-                                                  color: #999999;
-                                                  cursor: default; }
-
-                                                  .datepicker table tr td.today, .datepicker table tr td.today:hover,
-                                                  .datepicker table tr td.today.disabled,
-                                                  .datepicker table tr td.today.disabled:hover {
-                                                    background-color: #fde19a;
-                                                    background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);
-                                                    background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);
-                                                    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));
-                                                    background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);
-                                                    background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);
-                                                    background-image: linear-gradient(top, #fdd49a, #fdf59a);
-                                                    background-repeat: repeat-x;
-                                                    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a',
-                                                                                                        endColorstr='#fdf59a', GradientType=0);
-                                                    border-color: #fdf59a #fdf59a #fbed50;
-                                                    border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-                                                    filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-                                                    color: #000; }
-
-                                                    .datepicker table tr td.today:hover, .datepicker table tr td.today:hover:hover,
-                                                    .datepicker table tr td.today.disabled:hover,
-                                                    .datepicker table tr td.today.disabled:hover:hover,
-                                                    .datepicker table tr td.today:active, .datepicker table tr td.today:hover:active,
-                                                    .datepicker table tr td.today.disabled:active,
-                                                    .datepicker table tr td.today.disabled:hover:active,
-                                                    .datepicker table tr td.today.active, .datepicker table tr td.today:hover.active,
-                                                    .datepicker table tr td.today.disabled.active,
-                                                    .datepicker table tr td.today.disabled:hover.active,
-                                                    .datepicker table tr td.today.disabled,
-                                                    .datepicker table tr td.today:hover.disabled,
-                                                    .datepicker table tr td.today.disabled.disabled,
-                                                    .datepicker table tr td.today.disabled:hover.disabled,
-                                                    .datepicker table tr td.today[disabled],
-                                                    .datepicker table tr td.today:hover[disabled],
-                                                    .datepicker table tr td.today.disabled[disabled],
-                                                    .datepicker table tr td.today.disabled:hover[disabled] {
-                                                      background-color: #fdf59a; }
-
-                                                      .datepicker table tr td.today:active, .datepicker table tr td.today:hover:active,
-                                                      .datepicker table tr td.today.disabled:active,
-                                                      .datepicker table tr td.today.disabled:hover:active,
-                                                      .datepicker table tr td.today.active, .datepicker table tr td.today:hover.active,
-                                                      .datepicker table tr td.today.disabled.active,
-                                                      .datepicker table tr td.today.disabled:hover.active {
-                                                        background-color: #fbf069 \9; }
-
-                                                        .datepicker table tr td.today:hover:hover {
-                                                          color: #000; }
-
-                                                          .datepicker table tr td.today.active:hover {
-                                                            color: #fff; }
-
-                                                            .datepicker table tr td.range, .datepicker table tr td.range:hover,
-                                                            .datepicker table tr td.range.disabled,
-                                                            .datepicker table tr td.range.disabled:hover {
-                                                              background: #eeeeee;
-                                                              -webkit-border-radius: 0;
-                                                              -moz-border-radius: 0;
-                                                              border-radius: 0; }
-
-                                                              .datepicker table tr td.range.today, .datepicker table tr td.range.today:hover,
-                                                              .datepicker table tr td.range.today.disabled,
-                                                              .datepicker table tr td.range.today.disabled:hover {
-                                                                background-color: #f3d17a;
-                                                                background-image: -moz-linear-gradient(top, #f3c17a, #f3e97a);
-                                                                background-image: -ms-linear-gradient(top, #f3c17a, #f3e97a);
-                                                                background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a));
-                                                                background-image: -webkit-linear-gradient(top, #f3c17a, #f3e97a);
-                                                                background-image: -o-linear-gradient(top, #f3c17a, #f3e97a);
-                                                                background-image: linear-gradient(top, #f3c17a, #f3e97a);
-                                                                background-repeat: repeat-x;
-                                                                filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a',
-                                                                                                                                endColorstr='#f3e97a', GradientType=0);
-                                                                border-color: #f3e97a #f3e97a #edde34;
-                                                                border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-                                                                filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-                                                                -webkit-border-radius: 0;
-                                                                -moz-border-radius: 0;
-                                                                border-radius: 0; }
-
-                                                                .datepicker table tr td.range.today:hover,
-                                                                .datepicker table tr td.range.today:hover:hover,
-                                                                .datepicker table tr td.range.today.disabled:hover,
-                                                                .datepicker table tr td.range.today.disabled:hover:hover,
-                                                                .datepicker table tr td.range.today:active,
-                                                                .datepicker table tr td.range.today:hover:active,
-                                                                .datepicker table tr td.range.today.disabled:active,
-                                                                .datepicker table tr td.range.today.disabled:hover:active,
-                                                                .datepicker table tr td.range.today.active,
-                                                                .datepicker table tr td.range.today:hover.active,
-                                                                .datepicker table tr td.range.today.disabled.active,
-                                                                .datepicker table tr td.range.today.disabled:hover.active,
-                                                                .datepicker table tr td.range.today.disabled,
-                                                                .datepicker table tr td.range.today:hover.disabled,
-                                                                .datepicker table tr td.range.today.disabled.disabled,
-                                                                .datepicker table tr td.range.today.disabled:hover.disabled,
-                                                                .datepicker table tr td.range.today[disabled],
-                                                                .datepicker table tr td.range.today:hover[disabled],
-                                                                .datepicker table tr td.range.today.disabled[disabled],
-                                                                .datepicker table tr td.range.today.disabled:hover[disabled] {
-                                                                  background-color: #f3e97a; }
-
-                                                                  .datepicker table tr td.range.today:active,
-                                                                  .datepicker table tr td.range.today:hover:active,
-                                                                  .datepicker table tr td.range.today.disabled:active,
-                                                                  .datepicker table tr td.range.today.disabled:hover:active,
-                                                                  .datepicker table tr td.range.today.active,
-                                                                  .datepicker table tr td.range.today:hover.active,
-                                                                  .datepicker table tr td.range.today.disabled.active,
-                                                                  .datepicker table tr td.range.today.disabled:hover.active {
-                                                                    background-color: #efe24b \9; }
-
-                                                                    .datepicker table tr td.selected, .datepicker table tr td.selected:hover,
-                                                                    .datepicker table tr td.selected.disabled,
-                                                                    .datepicker table tr td.selected.disabled:hover {
-                                                                      background-color: #9e9e9e;
-                                                                      background-image: -moz-linear-gradient(top, #b3b3b3, #808080);
-                                                                      background-image: -ms-linear-gradient(top, #b3b3b3, #808080);
-                                                                      background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080));
-                                                                      background-image: -webkit-linear-gradient(top, #b3b3b3, #808080);
-                                                                      background-image: -o-linear-gradient(top, #b3b3b3, #808080);
-                                                                      background-image: linear-gradient(top, #b3b3b3, #808080);
-                                                                      background-repeat: repeat-x;
-                                                                      filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3',
-                                                                                                                                            endColorstr='#808080', GradientType=0);
-                                                                      border-color: #808080 #808080 #595959;
-                                                                      border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-                                                                      filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-                                                                      color: #fff;
-                                                                      text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); }
-
-                                                                      .datepicker table tr td.selected:hover,
-                                                                      .datepicker table tr td.selected:hover:hover,
-                                                                      .datepicker table tr td.selected.disabled:hover,
-                                                                      .datepicker table tr td.selected.disabled:hover:hover,
-                                                                      .datepicker table tr td.selected:active,
-                                                                      .datepicker table tr td.selected:hover:active,
-                                                                      .datepicker table tr td.selected.disabled:active,
-                                                                      .datepicker table tr td.selected.disabled:hover:active,
-                                                                      .datepicker table tr td.selected.active,
-                                                                      .datepicker table tr td.selected:hover.active,
-                                                                      .datepicker table tr td.selected.disabled.active,
-                                                                      .datepicker table tr td.selected.disabled:hover.active,
-                                                                      .datepicker table tr td.selected.disabled,
-                                                                      .datepicker table tr td.selected:hover.disabled,
-                                                                      .datepicker table tr td.selected.disabled.disabled,
-                                                                      .datepicker table tr td.selected.disabled:hover.disabled,
-                                                                      .datepicker table tr td.selected[disabled],
-                                                                      .datepicker table tr td.selected:hover[disabled],
-                                                                      .datepicker table tr td.selected.disabled[disabled],
-                                                                      .datepicker table tr td.selected.disabled:hover[disabled] {
-                                                                        background-color: #808080; }
-
-                                                                        .datepicker table tr td.selected:active,
-                                                                        .datepicker table tr td.selected:hover:active,
-                                                                        .datepicker table tr td.selected.disabled:active,
-                                                                        .datepicker table tr td.selected.disabled:hover:active,
-                                                                        .datepicker table tr td.selected.active,
-                                                                        .datepicker table tr td.selected:hover.active,
-                                                                        .datepicker table tr td.selected.disabled.active,
-                                                                        .datepicker table tr td.selected.disabled:hover.active {
-                                                                          background-color: #666666 \9; }
-
-                                                                          .datepicker table tr td.active, .datepicker table tr td.active:hover,
-                                                                          .datepicker table tr td.active.disabled,
-                                                                          .datepicker table tr td.active.disabled:hover {
-                                                                            background-color: #006dcc;
-                                                                            background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
-                                                                            background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
-                                                                            background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
-                                                                            background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
-                                                                            background-image: -o-linear-gradient(top, #0088cc, #0044cc);
-                                                                            background-image: linear-gradient(top, #0088cc, #0044cc);
-                                                                            background-repeat: repeat-x;
-                                                                            filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc',
-                                                                                                                                                        endColorstr='#0044cc', GradientType=0);
-                                                                            border-color: #0044cc #0044cc #002a80;
-                                                                            border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-                                                                            filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-                                                                            color: #fff;
-                                                                            text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); }
-
-                                                                            .datepicker table tr td.active:hover, .datepicker table tr td.active:hover:hover,
-                                                                            .datepicker table tr td.active.disabled:hover,
-                                                                            .datepicker table tr td.active.disabled:hover:hover,
-                                                                            .datepicker table tr td.active:active, .datepicker table tr td.active:hover:active,
-                                                                            .datepicker table tr td.active.disabled:active,
-                                                                            .datepicker table tr td.active.disabled:hover:active,
-                                                                            .datepicker table tr td.active.active, .datepicker table tr td.active:hover.active,
-                                                                            .datepicker table tr td.active.disabled.active,
-                                                                            .datepicker table tr td.active.disabled:hover.active,
-                                                                            .datepicker table tr td.active.disabled,
-                                                                            .datepicker table tr td.active:hover.disabled,
-                                                                            .datepicker table tr td.active.disabled.disabled,
-                                                                            .datepicker table tr td.active.disabled:hover.disabled,
-                                                                            .datepicker table tr td.active[disabled],
-                                                                            .datepicker table tr td.active:hover[disabled],
-                                                                            .datepicker table tr td.active.disabled[disabled],
-                                                                            .datepicker table tr td.active.disabled:hover[disabled] {
-                                                                              background-color: #0044cc; }
-
-                                                                              .datepicker table tr td.active:active, .datepicker table tr td.active:hover:active,
-                                                                              .datepicker table tr td.active.disabled:active,
-                                                                              .datepicker table tr td.active.disabled:hover:active,
-                                                                              .datepicker table tr td.active.active, .datepicker table tr td.active:hover.active,
-                                                                              .datepicker table tr td.active.disabled.active,
-                                                                              .datepicker table tr td.active.disabled:hover.active {
-                                                                                background-color: #003399 \9; }
-
-                                                                                .datepicker table tr td span {
-                                                                                  display: block;
-                                                                                  width: 23%;
-                                                                                  height: 54px;
-                                                                                  line-height: 54px;
-                                                                                  float: left;
-                                                                                  margin: 1%;
-                                                                                  cursor: pointer;
-                                                                                  -webkit-border-radius: 4px;
-                                                                                  -moz-border-radius: 4px;
-                                                                                  border-radius: 4px; }
-
-                                                                                  .datepicker table tr td span:hover {
-                                                                                    background: #eeeeee; }
-
-                                                                                    .datepicker table tr td span.disabled, .datepicker table tr td span.disabled:hover {
-                                                                                      background: none;
-                                                                                      color: #999999;
-                                                                                      cursor: default; }
-
-                                                                                      .datepicker table tr td span.active, .datepicker table tr td span.active:hover,
-                                                                                      .datepicker table tr td span.active.disabled,
-                                                                                      .datepicker table tr td span.active.disabled:hover {
-                                                                                        background-color: #006dcc;
-                                                                                        background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
-                                                                                        background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
-                                                                                        background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
-                                                                                        background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
-                                                                                        background-image: -o-linear-gradient(top, #0088cc, #0044cc);
-                                                                                        background-image: linear-gradient(top, #0088cc, #0044cc);
-                                                                                        background-repeat: repeat-x;
-                                                                                        filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc',
-                                                                                                                                                                                endColorstr='#0044cc', GradientType=0);
-                                                                                        border-color: #0044cc #0044cc #002a80;
-                                                                                        border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-                                                                                        filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-                                                                                        color: #fff;
-                                                                                        text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); }
-
-                                                                                        .datepicker table tr td span.active:hover,
-                                                                                        .datepicker table tr td span.active:hover:hover,
-                                                                                        .datepicker table tr td span.active.disabled:hover,
-                                                                                        .datepicker table tr td span.active.disabled:hover:hover,
-                                                                                        .datepicker table tr td span.active:active,
-                                                                                        .datepicker table tr td span.active:hover:active,
-                                                                                        .datepicker table tr td span.active.disabled:active,
-                                                                                        .datepicker table tr td span.active.disabled:hover:active,
-                                                                                        .datepicker table tr td span.active.active,
-                                                                                        .datepicker table tr td span.active:hover.active,
-                                                                                        .datepicker table tr td span.active.disabled.active,
-                                                                                        .datepicker table tr td span.active.disabled:hover.active,
-                                                                                        .datepicker table tr td span.active.disabled,
-                                                                                        .datepicker table tr td span.active:hover.disabled,
-                                                                                        .datepicker table tr td span.active.disabled.disabled,
-                                                                                        .datepicker table tr td span.active.disabled:hover.disabled,
-                                                                                        .datepicker table tr td span.active[disabled],
-                                                                                        .datepicker table tr td span.active:hover[disabled],
-                                                                                        .datepicker table tr td span.active.disabled[disabled],
-                                                                                        .datepicker table tr td span.active.disabled:hover[disabled] {
-                                                                                          background-color: #0044cc; }
-
-                                                                                          .datepicker table tr td span.active:active,
-                                                                                          .datepicker table tr td span.active:hover:active,
-                                                                                          .datepicker table tr td span.active.disabled:active,
-                                                                                          .datepicker table tr td span.active.disabled:hover:active,
-                                                                                          .datepicker table tr td span.active.active,
-                                                                                          .datepicker table tr td span.active:hover.active,
-                                                                                          .datepicker table tr td span.active.disabled.active,
-                                                                                          .datepicker table tr td span.active.disabled:hover.active {
-                                                                                            background-color: #003399 \9; }
-
-                                                                                            .datepicker table tr td span.old, .datepicker table tr td span.new {
-                                                                                              color: #999999; }
-
-                                                                                              .datepicker th.datepicker-switch {
-                                                                                                width: 145px; }
-
-                                                                                                .datepicker thead tr:first-child th, .datepicker tfoot tr th {
-                                                                                                  cursor: pointer; }
-
-                                                                                                  .datepicker thead tr:first-child th:hover, .datepicker tfoot tr th:hover {
-                                                                                                    background: #eeeeee; }
-
-                                                                                                    .datepicker .cw {
-                                                                                                      font-size: 10px;
-                                                                                                      width: 12px;
-                                                                                                      padding: 0 2px 0 5px;
-                                                                                                      vertical-align: middle; }
-
-                                                                                                      .datepicker thead tr:first-child th.cw {
-                                                                                                        cursor: default;
-                                                                                                        background-color: transparent; }
-
-                                                                                                        .input-append.date .add-on i, .input-prepend.date .add-on i {
-                                                                                                          cursor: pointer;
-                                                                                                          width: 16px;
-                                                                                                          height: 16px; }
-
-                                                                                                          .input-daterange input {
-                                                                                                            text-align: center; }
-
-                                                                                                            .input-daterange input:first-child {
-                                                                                                              -webkit-border-radius: 3px 0 0 3px;
-                                                                                                              -moz-border-radius: 3px 0 0 3px;
-                                                                                                              border-radius: 3px 0 0 3px; }
-
-                                                                                                              .input-daterange input:last-child {
-                                                                                                                -webkit-border-radius: 0 3px 3px 0;
-                                                                                                                -moz-border-radius: 0 3px 3px 0;
-                                                                                                                border-radius: 0 3px 3px 0; }
-
-                                                                                                                .input-daterange .add-on {
-                                                                                                                  display: inline-block;
-                                                                                                                  width: auto;
-                                                                                                                  min-width: 16px;
-                                                                                                                  height: 20px;
-                                                                                                                  padding: 4px 5px;
-                                                                                                                  font-weight: normal;
-                                                                                                                  line-height: 20px;
-                                                                                                                  text-align: center;
-                                                                                                                  text-shadow: 0 1px 0 #ffffff;
-                                                                                                                  vertical-align: middle;
-                                                                                                                  background-color: #eeeeee;
-                                                                                                                  border: 1px solid #ccc;
-                                                                                                                  margin-left: -5px;
-                                                                                                                  margin-right: -5px; }
-
-                                                                                                                  .datepicker.dropdown-menu {
-                                                                                                                    position: absolute;
-                                                                                                                    top: 100%;
-                                                                                                                    left: 0;
-                                                                                                                    z-index: 1000;
-                                                                                                                    float: left;
-                                                                                                                    display: none;
-                                                                                                                    min-width: 160px;
-                                                                                                                    list-style: none;
-                                                                                                                    background-color: #ffffff;
-                                                                                                                    border: 1px solid #ccc;
-                                                                                                                    border: 1px solid rgba(0, 0, 0, 0.2);
-                                                                                                                    -webkit-border-radius: 5px;
-                                                                                                                    -moz-border-radius: 5px;
-                                                                                                                    border-radius: 5px;
-                                                                                                                    -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-                                                                                                                    -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-                                                                                                                    box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-                                                                                                                    -webkit-background-clip: padding-box;
-                                                                                                                    -moz-background-clip: padding;
-                                                                                                                    background-clip: padding-box;
-                                                                                                                    *border-right-width: 2px;
-                                                                                                                    *border-bottom-width: 2px;
-                                                                                                                    color: #333333;
-                                                                                                                    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-                                                                                                                    font-size: 13px;
-                                                                                                                    line-height: 20px; }
-
-                                                                                                                    .datepicker.dropdown-menu th, .datepicker.datepicker-inline th,
-                                                                                                                    .datepicker.dropdown-menu td, .datepicker.datepicker-inline td {
-                                                                                                                      padding: 4px 5px; }
-.nav_accordion {
-	background-color: #ebeced;
-	color: #252525;
-	margin: 0px; 
-}
-.nav_accordion dt, .nav_accordion dd {
-	padding-left: 13px;
-	margin: 0px;
-	line-height: 39px;
-	width: 235px; 
-}
-.nav_accordion dt h4, .nav_accordion dd h4 {
-      border: 1px solid #c4ced8;
-      border-bottom: 0;
-      background-color: #ebeced;
-      background-repeat: no-repeat;
-      background-position: 96% center;
-      background-image: url('/static/dashboard/img/right_droparrow.png');
-      padding-left: 28px;
-      line-height: 39px;
-      width: 235px;
-      margin: 0px;
-      color: #252525;
-      text-rendering: optimizelegibility;
-      cursor: pointer; }
-.nav_accordion dt h4 div, .nav_accordion dd h4 div {
-	color: #6e6e6e;
-	font-size: 13px;      
-	display: block;
-	outline: none;
-	overflow: hidden;
-	text-overflow: ellipsis;
-	max-width: 177px; }
-.nav_accordion dt h4.active, .nav_accordion dd h4.active {
-	border-bottom: 1px solid #c4ced8;
-	background: url('/static/dashboard/img/drop_arrow.png') no-repeat #ebeced; 
-	background-position: 96% center;
-}
-.nav_accordion dt a, .nav_accordion dd a {
-	color: #6e6e6e;
-	font-size: 16px;
-	margin: 0px;
-	padding: 0;
-	display: block;
-	font-weight: bold;
-	outline: none;
-	text-decoration: none; }
-.nav_accordion dt ul, .nav_accordion dd ul {
-	list-style: none outside none;
-	margin: 0px;
-	padding: 0px;
-	width: 235px; 
-}
-.nav_accordion dt ul li, .nav_accordion dd ul li {
-	vertical-align: middle;
-}
-nav_accordion dt:last-of-type ul li:last-of-type, 
-.nav_accordion dd:last-of-type ul li:last-of-type {
-	border-bottom: 1px solid #c4ced8;
-	border-top: 1px solid #c4ced8;
-}
-
-nav_accordion dt:last-of-type ul li:last-of-type a.active, 
-.nav_accordion dd:last-of-type ul li:last-of-type a.active {
-	border-top: none;
-}
-nav_accordion dt:last-of-type ul li:first-of-type a.active, 
-.nav_accordion dd:last-of-type ul li:first-of-type a.active {
-	border-bottom: none;
-}
-.nav_accordion dt li a, .nav_accordion dd li a {
-	height: 39px;
-	line-height: 39px;
-	vertical-align: middle;
-	padding-left: 44px;
-	display: block;
-	line-height: 18px;
-	font-weight: normal;
-	font-size: 13px; 
-	padding-top: 10px;
-	color: #145c9e;
-}
-.nav_accordion dt li a.active, .nav_accordion dd li a.active {
-	background: white;
-	border-top: 1px solid #c4ced8;
-	border-bottom: 1px solid #c4ced8;
-	padding-left: 44px;
-	width: 235px;
-	font-weight: 600;	
-}
-.nav_accordion dt li:first-child a.active, .nav_accordion dd li:first-child a.active {
-	border-top: none;
-}
-.nav_accordion dt li:last-child a.active, .nav_accordion dd li:last-child a.active {
-	border-bottom: none;
-}
-
-.nav_accordion dt li a:last-child, .nav_accordion dd li a:last-child {
-	/*margin-bottom: 8px; */
-}
-.nav_accordion dd {
-    padding: 0px;
-	font-size: 13px; 
-}
-.nav_accordion dt {
-	border-top: 1px solid #c4ced8;
-	border-right: 1px solid #c4ced8;
-	background: url('/static/dashboard/img/right_droparrow.png') no-repeat #ebeced;
-	background-position: 96% center;		
-	padding-left: 13px;
-	width: 235px;
-	cursor: pointer; 
-}
-
-.nav_accordion dt:last-of-type {
-	border-bottom: 1px solid #c4ced8;
-}
-.nav_accordion dt div {
-	color: #6e6e6e;
-	font-size: 13px;
-	padding: 0;
-	outline: none;
-	overflow: hidden;
-	text-overflow: ellipsis;
-	max-width: 201px; }
-.nav_accordion dt.active {
-    background-image: url('/static/dashboard/img/drop_arrow.png'); }
-.nav_accordion dt:first-child {
-	border-top: 0; }
-.nav_accordion dt a {
-	text-decoration: none; }
-#browser_wrapper {
-  width: 100%;
-  min-width: 1360px;
-  background-color: #ffffff;
-  border: none;
-  border-radius: 4px; }
-#browser_wrapper .tfoot {
-    clear: both;
-    padding: 8px;
-    border-bottom: 1px solid #d5dfe6;
-    border-top: 1px solid #eeeeee;    
-    background-color: #f9f9f9;
-    font-size: 11px;
-    line-height: 14px; }
-#browser_wrapper .tfoot span {
-	display: inline-block; }
-#browser_wrapper .tfoot span.navigation_table_count {
-	width: 40%; }
-#browser_wrapper form, #browser_wrapper table {
-    margin-bottom: 0; }
-#browser_wrapper .navigation_wrapper, #browser_wrapper .content_wrapper {
-	position: relative;
-	float: left; }
-#browser_wrapper div.navigation_wrapper {
-	z-index: 10;
-	width: 40%; }
-#browser_wrapper div.navigation_wrapper div.table_wrapper,
-#browser_wrapper div.navigation_wrapper thead th.table_header {
-	border-right: 0 none;
-	border-top-right-radius: 0; }
-#browser_wrapper div.navigation_wrapper td:first-child {
-	border-left: 0 none; }
-#browser_wrapper div.navigation_wrapper td.breadcrumb_td {
-	padding-right: 0;
-	max-width: 200px; }
-#browser_wrapper div.navigation_wrapper tr.current_selected td {
-	background-color: #bfd4e5; }
-#browser_wrapper div.navigation_wrapper tfoot td {
-	border-right: 0 none;
-	border-bottom-right-radius: 0; }
-#browser_wrapper div.navigation_wrapper ul.breadcrumb {
-	padding-right: 0;
-	border-top-right-radius: 0;
-	border-bottom-right-radius: 0;
-	border-right: 0;
-	white-space: nowrap; }
-#browser_wrapper div.navigation_wrapper tbody td {
-	border: 1px solid #eeeeee;
-	background-color: #ffffff; }
-#browser_wrapper div.navigation_wrapper tbody td.anchor {
-	/*border-left: 1px solid #d5dfe6;*/
-	word-wrap: break-word;
-	white-space: normal;
-	max-width: 145px; }
-#browser_wrapper div.content_wrapper {
-    width: 60%; }
-#browser_wrapper div.content_wrapper div.table_wrapper,
-#browser_wrapper div.content_wrapper thead th.table_header {
-	border-left: 0 none;
-	border-top-left-radius: 0; }
-#browser_wrapper div.content_wrapper td {
-	border: 1px solid #eeeeee; 
-	border-left: none; }
-#browser_wrapper div.content_wrapper td:last-child {
-	border-right: 0 none; }
-#browser_wrapper div.content_wrapper td.breadcrumb_td {
-	padding-left: 0; }
-#browser_wrapper div.content_wrapper tfoot td {
-      border-left: 0 none;
-      border-bottom-left-radius: 0; }
-#browser_wrapper div.content_wrapper ul.breadcrumb {
-	padding-left: 0;
-	border-top-left-radius: 0;
-	border-bottom-left-radius: 0;
-	border-left: 0; }
-#browser_wrapper div.content_wrapper ul.breadcrumb li {
-          visibility: hidden; }
-#browser_wrapper table {
-    border-collapse: collapse; }
-#browser_wrapper table thead tr th {
-      border-bottom: 0;
-      background-color: #ffffff; }
-#browser_wrapper table tbody tr:last-child td {
-      border-bottom: 1px solid #dddddd;
-      border-radius: 0; }
-#browser_wrapper table tbody tr.empty td {
-        height: 28px;
-        padding: 10px; }
-#browser_wrapper table tbody td.actions_column {
-      position: static; }
-#browser_wrapper .breadcrumb {
-    padding: 6px;
-    margin: 0 0 1px; }
-.topbar .context-box .context-selection {
-  display: inline-block; 
-	position: relative;
-	top: 3px;
-}
-
-.topbar .context-box .context-selection .dropdown-toggle {
-    background: url('/static/dashboard/img/dropdown_ena.png') transparent no-repeat;
-    background-repeat: no-repeat;
-	background-position: right 6px top 7px;
-    font-size: 13px;
-    color: transparent; 
-	border: 1px solid #f5f5f5;
-	border-radius: 2px;	    
-}
-.topbar .context-box .context-selection .dropdown-toggle:hover,
-.topbar .context-box .open .dropdown-toggle {
-	background: url('/static/dashboard/img/dropdown_dwn.png') #0572ce no-repeat;
-	background-position: right 6px center;
-	border: 1px solid #0572ce;
-	border-radius: 2px;	  
-	color: #ffffff;	
-}
-
-.topbar .context-box .context-selection .dropdown-toggle .context-overview {
-	padding: 0px 1px 0px 0px;
-	text-transform: capitalize; 
-	color: #000000;
-}
-
-.topbar .context-box .open .dropdown-toggle .context-overview {
-	color: #ffffff;
-}
-
-.topbar .context-box .context-selection .dropdown-toggle:hover .context-overview {
-	color: #ffffff;
-}
-
-.topbar .context-box .context-selection .dropdown-menu {
-	padding: 0; 
-	border: 1px solid #c4ced7;
-}
-.topbar .context-box .context-selection .dropdown-header {
-	font-size: 13px;
-	color: #000000;
-	font-weight: 600; 
-}
-
-.topbar .context-box .context-selection .dropdown-header:hover {
-	background: #ffffff;
-}
-
-.topbar .context-box .context-selection .context-lists {
-	display: table;
-	padding: 0px;
-	width: 100%; 
-}
-.topbar .context-box .context-selection .footer {
-	width: 100%;
-	height: 30px;
-	line-height: 30px;
-	padding-left: 12px;
-	/*margin-top: 1em;
-	padding: 0.4em 1em;*/
-	background: #f9f9f9;
-	border-top: 1px solid #c4ced7;
-	/*text-align: right; */
-}
-.topbar .context-box .context-selection .disabled {
-	cursor: not-allowed;
-	color: #cccccc; }
-.topbar .context-box .context-selection a {
-	cursor: pointer;
-	text-decoration: none;
-	white-space: nowrap; }
-.topbar .context-box .context-selection em {
-	font-size: 17px;
-	font-weight: bold;
-	vertical-align: middle; }
-.topbar .context-box .context-selection ul {
-	display: table-cell;
-	padding-left: 0px; 
-}
-.topbar .context-box .context-selection ul li {
-	padding-left: 0;
-	font-size: 13px;
-	text-overflow: ellipsis;
-	overflow: hidden;
-	max-width: 160px; 
-	height: 30px;
-	line-height: 30px;
-	padding-left: 12px;
-}
-
-.topbar .context-box .context-selection ul li:hover {
-	background: #ebeced;
-}
-
-.topbar .context-box .context-selection ul li a {
-	background: transparent;
-	color: #333333;
-	border: none;
-	text-transform: capitalize;
-}
-
-.topbar .context-box .context-selection ul li .glyphicon-ok {
-	margin: 0px 8px 0px 0px;
-	line-height: 30px; 
-	float: left;
-	color: #333333;
-}
-.topbar .context-box .context-selection ul:not(:last-child) {
-    border-right: 1px solid #cccccc; }
-
-.rickshaw_graph .detail {
-    pointer-events: none;
-    position: absolute;
-    top: 0;
-    z-index: 2;
-    background: rgba(0, 0, 0, 0.1);
-    bottom: 0;
-    width: 1px;
-    transition: opacity 0.25s linear;
-    -moz-transition: opacity 0.25s linear;
-    -o-transition: opacity 0.25s linear;
-    -webkit-transition: opacity 0.25s linear;
-}
-.rickshaw_graph .detail.inactive {
-    opacity: 0;
-}
-.rickshaw_graph .detail .item.active {
-    opacity: 1;
-}
-.rickshaw_graph .detail .x_label {
-    font-family: Arial, sans-serif;
-    border-radius: 3px;
-    padding: 6px;
-    opacity: 0.5;
-    border: 1px solid #e0e0e0;
-    font-size: 12px;
-    position: absolute;
-    background: white;
-    white-space: nowrap;
-}
-.rickshaw_graph .detail .item {
-    position: absolute;
-    z-index: 2;
-    border-radius: 3px;
-    padding: 0.25em;
-    font-size: 12px;
-    font-family: Arial, sans-serif;
-    opacity: 0;
-    background: rgba(0, 0, 0, 0.4);
-    color: white;
-    border: 1px solid rgba(0, 0, 0, 0.4);
-    margin-left: 1em;
-    margin-top: -1em;
-    white-space: nowrap;
-}
-.rickshaw_graph .detail .item.active {
-    opacity: 1;
-    background: rgba(0, 0, 0, 0.8);
-}
-.rickshaw_graph .detail .item:before {
-    content: "\25c2";
-    position: absolute;
-    left: -0.5em;
-    color: rgba(0, 0, 0, 0.7);
-    width: 0;
-}
-.rickshaw_graph .detail .dot {
-    width: 4px;
-    height: 4px;
-    margin-left: -4px;
-    margin-top: -3px;
-    border-radius: 5px;
-    position: absolute;
-    box-shadow: 0 0 2px rgba(0, 0, 0, 0.6);
-    background: white;
-    border-width: 2px;
-    border-style: solid;
-    display: none;
-    background-clip: padding-box;
-}
-.rickshaw_graph .detail .dot.active {
-    display: block;
-}
-/* graph */
-
-.rickshaw_graph {
-    position: relative;
-}
-.rickshaw_graph svg {
-    display: block;
-    overflow: hidden;
-}
-
-/* ticks */
-
-.rickshaw_graph .x_tick {
-    position: absolute;
-    top: 0;
-    bottom: 0;
-    width: 0px;
-    border-left: 1px dotted rgba(0, 0, 0, 0.2);
-    pointer-events: none;
-}
-.rickshaw_graph .x_tick .title {
-    position: absolute;
-    font-size: 12px;
-    font-family: Arial, sans-serif;
-    opacity: 0.5;
-    white-space: nowrap;
-    margin-left: 3px;
-    bottom: 1px;
-}
-
-/* annotations */
-
-.rickshaw_annotation_timeline {
-    height: 1px;
-    border-top: 1px solid #e0e0e0;
-    margin-top: 10px;
-    position: relative;
-}
-.rickshaw_annotation_timeline .annotation {
-    position: absolute;
-    height: 6px;
-    width: 6px;
-    margin-left: -2px;
-    top: -3px;
-    border-radius: 5px;
-    background-color: rgba(0, 0, 0, 0.25);
-}
-.rickshaw_graph .annotation_line {
-    position: absolute;
-    top: 0;
-    bottom: -6px;
-    width: 0px;
-    border-left: 2px solid rgba(0, 0, 0, 0.3);
-    display: none;
-}
-.rickshaw_graph .annotation_line.active {
-    display: block;
-}
-
-.rickshaw_graph .annotation_range {
-        background: rgba(0, 0, 0, 0.1);
-        display: none;
-        position: absolute;
-        top: 0;
-        bottom: -6px;
-}
-.rickshaw_graph .annotation_range.active {
-        display: block;
-}
-.rickshaw_graph .annotation_range.active.offscreen {
-        display: none;
-}
-
-.rickshaw_annotation_timeline .annotation .content {
-    background: white;
-    color: black;
-    opacity: 0.9;
-    padding: 5px 5px;
-    box-shadow: 0 0 2px rgba(0, 0, 0, 0.8);
-    border-radius: 3px;
-    position: relative;
-    z-index: 20;
-    font-size: 12px;
-    padding: 6px 8px 8px;
-    top: 18px;
-    left: -11px;
-    width: 160px;
-    display: none;
-    cursor: pointer;
-}
-.rickshaw_annotation_timeline .annotation .content:before {
-    content: "\25b2";
-    position: absolute;
-    top: -11px;
-    color: white;
-    text-shadow: 0 -1px 1px rgba(0, 0, 0, 0.8);
-}
-.rickshaw_annotation_timeline .annotation.active,
-.rickshaw_annotation_timeline .annotation:hover {
-    background-color: rgba(0, 0, 0, 0.8);
-    cursor: none;
-}
-.rickshaw_annotation_timeline .annotation .content:hover {
-    z-index: 50;
-}
-.rickshaw_annotation_timeline .annotation.active .content {
-    display: block;
-}
-.rickshaw_annotation_timeline .annotation:hover .content {
-    display: block;
-    z-index: 50;
-}
-.rickshaw_graph .y_axis,
-.rickshaw_graph  .x_axis_d3 {
-    fill: none;
-}
-.rickshaw_graph .y_ticks .tick,
-.rickshaw_graph .x_ticks_d3 .tick {
-    stroke: rgba(0, 0, 0, 0.16);
-    stroke-width: 2px;
-    shape-rendering: crisp-edges;
-    pointer-events: none;
-}
-.rickshaw_graph .y_grid .tick,
-.rickshaw_graph .x_grid_d3 .tick {
-    z-index: -1;
-    stroke: rgba(0, 0, 0, 0.20);
-    stroke-width: 1px;
-    stroke-dasharray: 1 1;
-}
-.rickshaw_graph .y_grid path,
-.rickshaw_graph .x_grid_d3 path  {
-    fill: none;
-    stroke: none;
-}
-.rickshaw_graph .y_ticks path,
-.rickshaw_graph .x_ticks_d3 path {
-    fill: none;
-    stroke: #808080;
-}
-.rickshaw_graph .y_ticks text,
-.rickshaw_graph .x_ticks_d3 text {
-    opacity: 0.5;
-    font-size: 12px;
-    pointer-events: none;
-}
-.rickshaw_graph .x_tick.glow .title,
-.rickshaw_graph .y_ticks.glow text {
-    fill: black;
-    color: black;
-    text-shadow:
-        -1px 1px 0 rgba(255, 255, 255, 0.1),
-        1px -1px 0 rgba(255, 255, 255, 0.1),
-        1px 1px 0 rgba(255, 255, 255, 0.1),
-        0px 1px 0 rgba(255, 255, 255, 0.1),
-        0px -1px 0 rgba(255, 255, 255, 0.1),
-        1px 0px 0 rgba(255, 255, 255, 0.1),
-        -1px 0px 0 rgba(255, 255, 255, 0.1),
-        -1px -1px 0 rgba(255, 255, 255, 0.1);
-}
-.rickshaw_graph .x_tick.inverse .title,
-.rickshaw_graph .y_ticks.inverse text {
-    fill: white;
-    color: white;
-    text-shadow:
-        -1px 1px 0 rgba(0, 0, 0, 0.8),
-        1px -1px 0 rgba(0, 0, 0, 0.8),
-        1px 1px 0 rgba(0, 0, 0, 0.8),
-        0px 1px 0 rgba(0, 0, 0, 0.8),
-        0px -1px 0 rgba(0, 0, 0, 0.8),
-        1px 0px 0 rgba(0, 0, 0, 0.8),
-        -1px 0px 0 rgba(0, 0, 0, 0.8),
-        -1px -1px 0 rgba(0, 0, 0, 0.8);
-}
-.rickshaw_legend {
-    font-family: Arial;
-    font-size: 12px;
-    color: white;
-    background: #404040;
-    display: inline-block;
-    padding: 12px 5px;
-    border-radius: 2px;
-    position: relative;
-}
-.rickshaw_legend:hover {
-    z-index: 10;
-}
-.rickshaw_legend .swatch {
-    width: 10px;
-    height: 10px;
-    border: 1px solid rgba(0, 0, 0, 0.2);
-}
-.rickshaw_legend .line {
-    clear: both;
-    line-height: 140%;
-    padding-right: 15px;
-}
-.rickshaw_legend .line .swatch {
-    display: inline-block;
-    margin-right: 3px;
-    border-radius: 2px;
-}
-.rickshaw_legend .label {
-    margin: 0;
-    white-space: nowrap;
-    display: inline;
-    font-size: inherit;
-    background-color: transparent;
-    color: inherit;
-    font-weight: normal;
-    line-height: normal;
-    padding: 0px;
-    text-shadow: none;
-}
-.rickshaw_legend .action:hover {
-    opacity: 0.6;
-}
-.rickshaw_legend .action {
-    margin-right: 0.2em;
-    font-size: 10px;
-    opacity: 0.2;
-    cursor: pointer;
-    font-size: 14px;
-}
-.rickshaw_legend .line.disabled {
-    opacity: 0.4;
-}
-.rickshaw_legend ul {
-    list-style-type: none;
-    margin: 0;
-    padding: 0;
-    margin: 2px;
-    cursor: pointer;
-}
-.rickshaw_legend li {
-    padding: 0 0 0 2px;
-    min-width: 80px;
-    white-space: nowrap;
-}
-.rickshaw_legend li:hover {
-    background: rgba(255, 255, 255, 0.08);
-    border-radius: 3px;
-}
-.rickshaw_legend li:active {
-    background: rgba(255, 255, 255, 0.2);
-    border-radius: 3px;
-}
-
-.datepicker {
-  padding: 4px;
-  border-radius: 4px;
-  direction: ltr;
-}
-
-.datepicker input {
-	background: #ffffff !important;
-}
-
-.datepicker-inline {
-  width: 220px;
-}
-.datepicker.datepicker-rtl {
-  direction: rtl;
-}
-.datepicker.datepicker-rtl table tr td span {
-  float: right;
-}
-.datepicker-dropdown {
-  top: 0;
-  left: 0;
-}
-.datepicker-dropdown:before {
-  content: '';
-  display: inline-block;
-  border-left: 7px solid transparent;
-  border-right: 7px solid transparent;
-  border-bottom: 7px solid #ccc;
-  border-top: 0;
-  border-bottom-color: rgba(0, 0, 0, 0.2);
-  position: absolute;
-}
-.datepicker-dropdown:after {
-  content: '';
-  display: inline-block;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-bottom: 6px solid #fff;
-  border-top: 0;
-  position: absolute;
-}
-.datepicker-dropdown.datepicker-orient-left:before {
-  left: 6px;
-}
-.datepicker-dropdown.datepicker-orient-left:after {
-  left: 7px;
-}
-.datepicker-dropdown.datepicker-orient-right:before {
-  right: 6px;
-}
-.datepicker-dropdown.datepicker-orient-right:after {
-  right: 7px;
-}
-.datepicker-dropdown.datepicker-orient-top:before {
-  top: -7px;
-}
-.datepicker-dropdown.datepicker-orient-top:after {
-  top: -6px;
-}
-.datepicker-dropdown.datepicker-orient-bottom:before {
-  bottom: -7px;
-  border-bottom: 0;
-  border-top: 7px solid #999;
-}
-.datepicker-dropdown.datepicker-orient-bottom:after {
-  bottom: -6px;
-  border-bottom: 0;
-  border-top: 6px solid #fff;
-}
-.datepicker > div {
-  display: none;
-}
-.datepicker.days div.datepicker-days {
-  display: block;
-}
-.datepicker.months div.datepicker-months {
-  display: block;
-}
-.datepicker.years div.datepicker-years {
-  display: block;
-}
-.datepicker table {
-  margin: 0;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -khtml-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.datepicker table tr td,
-.datepicker table tr th {
-  text-align: center;
-  width: 30px;
-  height: 30px;
-  border-radius: 4px;
-  border: none;
-}
-.table-striped .datepicker table tr td,
-.table-striped .datepicker table tr th {
-  background-color: transparent;
-}
-.datepicker table tr td.day:hover,
-.datepicker table tr td.day.focused {
-  background: #eeeeee;
-  cursor: pointer;
-}
-.datepicker table tr td.old,
-.datepicker table tr td.new {
-  color: #999999;
-}
-.datepicker table tr td.disabled,
-.datepicker table tr td.disabled:hover {
-  background: none;
-  color: #999999;
-  cursor: default;
-}
-.datepicker table tr td.today,
-.datepicker table tr td.today:hover,
-.datepicker table tr td.today.disabled,
-.datepicker table tr td.today.disabled:hover {
-  color: #000000;
-  background-color: #ffdb99;
-  border-color: #ffb733;
-}
-.datepicker table tr td.today:hover,
-.datepicker table tr td.today:hover:hover,
-.datepicker table tr td.today.disabled:hover,
-.datepicker table tr td.today.disabled:hover:hover,
-.datepicker table tr td.today:focus,
-.datepicker table tr td.today:hover:focus,
-.datepicker table tr td.today.disabled:focus,
-.datepicker table tr td.today.disabled:hover:focus,
-.datepicker table tr td.today:active,
-.datepicker table tr td.today:hover:active,
-.datepicker table tr td.today.disabled:active,
-.datepicker table tr td.today.disabled:hover:active,
-.datepicker table tr td.today.active,
-.datepicker table tr td.today:hover.active,
-.datepicker table tr td.today.disabled.active,
-.datepicker table tr td.today.disabled:hover.active,
-.open .dropdown-toggle.datepicker table tr td.today,
-.open .dropdown-toggle.datepicker table tr td.today:hover,
-.open .dropdown-toggle.datepicker table tr td.today.disabled,
-.open .dropdown-toggle.datepicker table tr td.today.disabled:hover {
-  color: #000000;
-  background-color: #ffcd70;
-  border-color: #f59e00;
-}
-.datepicker table tr td.today:active,
-.datepicker table tr td.today:hover:active,
-.datepicker table tr td.today.disabled:active,
-.datepicker table tr td.today.disabled:hover:active,
-.datepicker table tr td.today.active,
-.datepicker table tr td.today:hover.active,
-.datepicker table tr td.today.disabled.active,
-.datepicker table tr td.today.disabled:hover.active,
-.open .dropdown-toggle.datepicker table tr td.today,
-.open .dropdown-toggle.datepicker table tr td.today:hover,
-.open .dropdown-toggle.datepicker table tr td.today.disabled,
-.open .dropdown-toggle.datepicker table tr td.today.disabled:hover {
-  background-image: none;
-}
-.datepicker table tr td.today.disabled,
-.datepicker table tr td.today:hover.disabled,
-.datepicker table tr td.today.disabled.disabled,
-.datepicker table tr td.today.disabled:hover.disabled,
-.datepicker table tr td.today[disabled],
-.datepicker table tr td.today:hover[disabled],
-.datepicker table tr td.today.disabled[disabled],
-.datepicker table tr td.today.disabled:hover[disabled],
-fieldset[disabled] .datepicker table tr td.today,
-fieldset[disabled] .datepicker table tr td.today:hover,
-fieldset[disabled] .datepicker table tr td.today.disabled,
-fieldset[disabled] .datepicker table tr td.today.disabled:hover,
-.datepicker table tr td.today.disabled:hover,
-.datepicker table tr td.today:hover.disabled:hover,
-.datepicker table tr td.today.disabled.disabled:hover,
-.datepicker table tr td.today.disabled:hover.disabled:hover,
-.datepicker table tr td.today[disabled]:hover,
-.datepicker table tr td.today:hover[disabled]:hover,
-.datepicker table tr td.today.disabled[disabled]:hover,
-.datepicker table tr td.today.disabled:hover[disabled]:hover,
-fieldset[disabled] .datepicker table tr td.today:hover,
-fieldset[disabled] .datepicker table tr td.today:hover:hover,
-fieldset[disabled] .datepicker table tr td.today.disabled:hover,
-fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,
-.datepicker table tr td.today.disabled:focus,
-.datepicker table tr td.today:hover.disabled:focus,
-.datepicker table tr td.today.disabled.disabled:focus,
-.datepicker table tr td.today.disabled:hover.disabled:focus,
-.datepicker table tr td.today[disabled]:focus,
-.datepicker table tr td.today:hover[disabled]:focus,
-.datepicker table tr td.today.disabled[disabled]:focus,
-.datepicker table tr td.today.disabled:hover[disabled]:focus,
-fieldset[disabled] .datepicker table tr td.today:focus,
-fieldset[disabled] .datepicker table tr td.today:hover:focus,
-fieldset[disabled] .datepicker table tr td.today.disabled:focus,
-fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,
-.datepicker table tr td.today.disabled:active,
-.datepicker table tr td.today:hover.disabled:active,
-.datepicker table tr td.today.disabled.disabled:active,
-.datepicker table tr td.today.disabled:hover.disabled:active,
-.datepicker table tr td.today[disabled]:active,
-.datepicker table tr td.today:hover[disabled]:active,
-.datepicker table tr td.today.disabled[disabled]:active,
-.datepicker table tr td.today.disabled:hover[disabled]:active,
-fieldset[disabled] .datepicker table tr td.today:active,
-fieldset[disabled] .datepicker table tr td.today:hover:active,
-fieldset[disabled] .datepicker table tr td.today.disabled:active,
-fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,
-.datepicker table tr td.today.disabled.active,
-.datepicker table tr td.today:hover.disabled.active,
-.datepicker table tr td.today.disabled.disabled.active,
-.datepicker table tr td.today.disabled:hover.disabled.active,
-.datepicker table tr td.today[disabled].active,
-.datepicker table tr td.today:hover[disabled].active,
-.datepicker table tr td.today.disabled[disabled].active,
-.datepicker table tr td.today.disabled:hover[disabled].active,
-fieldset[disabled] .datepicker table tr td.today.active,
-fieldset[disabled] .datepicker table tr td.today:hover.active,
-fieldset[disabled] .datepicker table tr td.today.disabled.active,
-fieldset[disabled] .datepicker table tr td.today.disabled:hover.active {
-  background-color: #ffffff;
-  border-color: #ffb733;
-}
-.datepicker table tr td.today:hover:hover {
-  color: #000;
-}
-.datepicker table tr td.today.active:hover {
-  color: #fff;
-}
-.datepicker table tr td.range,
-.datepicker table tr td.range:hover,
-.datepicker table tr td.range.disabled,
-.datepicker table tr td.range.disabled:hover {
-  background: #eeeeee;
-  border-radius: 0;
-}
-.datepicker table tr td.range.today,
-.datepicker table tr td.range.today:hover,
-.datepicker table tr td.range.today.disabled,
-.datepicker table tr td.range.today.disabled:hover {
-  color: #000000;
-  background-color: #f7ca77;
-  border-color: #f1a417;
-  border-radius: 0;
-}
-.datepicker table tr td.range.today:hover,
-.datepicker table tr td.range.today:hover:hover,
-.datepicker table tr td.range.today.disabled:hover,
-.datepicker table tr td.range.today.disabled:hover:hover,
-.datepicker table tr td.range.today:focus,
-.datepicker table tr td.range.today:hover:focus,
-.datepicker table tr td.range.today.disabled:focus,
-.datepicker table tr td.range.today.disabled:hover:focus,
-.datepicker table tr td.range.today:active,
-.datepicker table tr td.range.today:hover:active,
-.datepicker table tr td.range.today.disabled:active,
-.datepicker table tr td.range.today.disabled:hover:active,
-.datepicker table tr td.range.today.active,
-.datepicker table tr td.range.today:hover.active,
-.datepicker table tr td.range.today.disabled.active,
-.datepicker table tr td.range.today.disabled:hover.active,
-.open .dropdown-toggle.datepicker table tr td.range.today,
-.open .dropdown-toggle.datepicker table tr td.range.today:hover,
-.open .dropdown-toggle.datepicker table tr td.range.today.disabled,
-.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
-  color: #000000;
-  background-color: #f4bb51;
-  border-color: #bf800c;
-}
-.datepicker table tr td.range.today:active,
-.datepicker table tr td.range.today:hover:active,
-.datepicker table tr td.range.today.disabled:active,
-.datepicker table tr td.range.today.disabled:hover:active,
-.datepicker table tr td.range.today.active,
-.datepicker table tr td.range.today:hover.active,
-.datepicker table tr td.range.today.disabled.active,
-.datepicker table tr td.range.today.disabled:hover.active,
-.open .dropdown-toggle.datepicker table tr td.range.today,
-.open .dropdown-toggle.datepicker table tr td.range.today:hover,
-.open .dropdown-toggle.datepicker table tr td.range.today.disabled,
-.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
-  background-image: none;
-}
-.datepicker table tr td.range.today.disabled,
-.datepicker table tr td.range.today:hover.disabled,
-.datepicker table tr td.range.today.disabled.disabled,
-.datepicker table tr td.range.today.disabled:hover.disabled,
-.datepicker table tr td.range.today[disabled],
-.datepicker table tr td.range.today:hover[disabled],
-.datepicker table tr td.range.today.disabled[disabled],
-.datepicker table tr td.range.today.disabled:hover[disabled],
-fieldset[disabled] .datepicker table tr td.range.today,
-fieldset[disabled] .datepicker table tr td.range.today:hover,
-fieldset[disabled] .datepicker table tr td.range.today.disabled,
-fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
-.datepicker table tr td.range.today.disabled:hover,
-.datepicker table tr td.range.today:hover.disabled:hover,
-.datepicker table tr td.range.today.disabled.disabled:hover,
-.datepicker table tr td.range.today.disabled:hover.disabled:hover,
-.datepicker table tr td.range.today[disabled]:hover,
-.datepicker table tr td.range.today:hover[disabled]:hover,
-.datepicker table tr td.range.today.disabled[disabled]:hover,
-.datepicker table tr td.range.today.disabled:hover[disabled]:hover,
-fieldset[disabled] .datepicker table tr td.range.today:hover,
-fieldset[disabled] .datepicker table tr td.range.today:hover:hover,
-fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
-fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,
-.datepicker table tr td.range.today.disabled:focus,
-.datepicker table tr td.range.today:hover.disabled:focus,
-.datepicker table tr td.range.today.disabled.disabled:focus,
-.datepicker table tr td.range.today.disabled:hover.disabled:focus,
-.datepicker table tr td.range.today[disabled]:focus,
-.datepicker table tr td.range.today:hover[disabled]:focus,
-.datepicker table tr td.range.today.disabled[disabled]:focus,
-.datepicker table tr td.range.today.disabled:hover[disabled]:focus,
-fieldset[disabled] .datepicker table tr td.range.today:focus,
-fieldset[disabled] .datepicker table tr td.range.today:hover:focus,
-fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,
-fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,
-.datepicker table tr td.range.today.disabled:active,
-.datepicker table tr td.range.today:hover.disabled:active,
-.datepicker table tr td.range.today.disabled.disabled:active,
-.datepicker table tr td.range.today.disabled:hover.disabled:active,
-.datepicker table tr td.range.today[disabled]:active,
-.datepicker table tr td.range.today:hover[disabled]:active,
-.datepicker table tr td.range.today.disabled[disabled]:active,
-.datepicker table tr td.range.today.disabled:hover[disabled]:active,
-fieldset[disabled] .datepicker table tr td.range.today:active,
-fieldset[disabled] .datepicker table tr td.range.today:hover:active,
-fieldset[disabled] .datepicker table tr td.range.today.disabled:active,
-fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,
-.datepicker table tr td.range.today.disabled.active,
-.datepicker table tr td.range.today:hover.disabled.active,
-.datepicker table tr td.range.today.disabled.disabled.active,
-.datepicker table tr td.range.today.disabled:hover.disabled.active,
-.datepicker table tr td.range.today[disabled].active,
-.datepicker table tr td.range.today:hover[disabled].active,
-.datepicker table tr td.range.today.disabled[disabled].active,
-.datepicker table tr td.range.today.disabled:hover[disabled].active,
-fieldset[disabled] .datepicker table tr td.range.today.active,
-fieldset[disabled] .datepicker table tr td.range.today:hover.active,
-fieldset[disabled] .datepicker table tr td.range.today.disabled.active,
-fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active {
-  background-color: #f7ca77;
-  border-color: #f1a417;
-}
-.datepicker table tr td.selected,
-.datepicker table tr td.selected:hover,
-.datepicker table tr td.selected.disabled,
-.datepicker table tr td.selected.disabled:hover {
-  color: #ffffff;
-  background-color: #999999;
-  border-color: #555555;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.datepicker table tr td.selected:hover,
-.datepicker table tr td.selected:hover:hover,
-.datepicker table tr td.selected.disabled:hover,
-.datepicker table tr td.selected.disabled:hover:hover,
-.datepicker table tr td.selected:focus,
-.datepicker table tr td.selected:hover:focus,
-.datepicker table tr td.selected.disabled:focus,
-.datepicker table tr td.selected.disabled:hover:focus,
-.datepicker table tr td.selected:active,
-.datepicker table tr td.selected:hover:active,
-.datepicker table tr td.selected.disabled:active,
-.datepicker table tr td.selected.disabled:hover:active,
-.datepicker table tr td.selected.active,
-.datepicker table tr td.selected:hover.active,
-.datepicker table tr td.selected.disabled.active,
-.datepicker table tr td.selected.disabled:hover.active,
-.open .dropdown-toggle.datepicker table tr td.selected,
-.open .dropdown-toggle.datepicker table tr td.selected:hover,
-.open .dropdown-toggle.datepicker table tr td.selected.disabled,
-.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
-  color: #ffffff;
-  background-color: #858585;
-  border-color: #373737;
-}
-.datepicker table tr td.selected:active,
-.datepicker table tr td.selected:hover:active,
-.datepicker table tr td.selected.disabled:active,
-.datepicker table tr td.selected.disabled:hover:active,
-.datepicker table tr td.selected.active,
-.datepicker table tr td.selected:hover.active,
-.datepicker table tr td.selected.disabled.active,
-.datepicker table tr td.selected.disabled:hover.active,
-.open .dropdown-toggle.datepicker table tr td.selected,
-.open .dropdown-toggle.datepicker table tr td.selected:hover,
-.open .dropdown-toggle.datepicker table tr td.selected.disabled,
-.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
-  background-image: none;
-}
-.datepicker table tr td.selected.disabled,
-.datepicker table tr td.selected:hover.disabled,
-.datepicker table tr td.selected.disabled.disabled,
-.datepicker table tr td.selected.disabled:hover.disabled,
-.datepicker table tr td.selected[disabled],
-.datepicker table tr td.selected:hover[disabled],
-.datepicker table tr td.selected.disabled[disabled],
-.datepicker table tr td.selected.disabled:hover[disabled],
-fieldset[disabled] .datepicker table tr td.selected,
-fieldset[disabled] .datepicker table tr td.selected:hover,
-fieldset[disabled] .datepicker table tr td.selected.disabled,
-fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
-.datepicker table tr td.selected.disabled:hover,
-.datepicker table tr td.selected:hover.disabled:hover,
-.datepicker table tr td.selected.disabled.disabled:hover,
-.datepicker table tr td.selected.disabled:hover.disabled:hover,
-.datepicker table tr td.selected[disabled]:hover,
-.datepicker table tr td.selected:hover[disabled]:hover,
-.datepicker table tr td.selected.disabled[disabled]:hover,
-.datepicker table tr td.selected.disabled:hover[disabled]:hover,
-fieldset[disabled] .datepicker table tr td.selected:hover,
-fieldset[disabled] .datepicker table tr td.selected:hover:hover,
-fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
-fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,
-.datepicker table tr td.selected.disabled:focus,
-.datepicker table tr td.selected:hover.disabled:focus,
-.datepicker table tr td.selected.disabled.disabled:focus,
-.datepicker table tr td.selected.disabled:hover.disabled:focus,
-.datepicker table tr td.selected[disabled]:focus,
-.datepicker table tr td.selected:hover[disabled]:focus,
-.datepicker table tr td.selected.disabled[disabled]:focus,
-.datepicker table tr td.selected.disabled:hover[disabled]:focus,
-fieldset[disabled] .datepicker table tr td.selected:focus,
-fieldset[disabled] .datepicker table tr td.selected:hover:focus,
-fieldset[disabled] .datepicker table tr td.selected.disabled:focus,
-fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,
-.datepicker table tr td.selected.disabled:active,
-.datepicker table tr td.selected:hover.disabled:active,
-.datepicker table tr td.selected.disabled.disabled:active,
-.datepicker table tr td.selected.disabled:hover.disabled:active,
-.datepicker table tr td.selected[disabled]:active,
-.datepicker table tr td.selected:hover[disabled]:active,
-.datepicker table tr td.selected.disabled[disabled]:active,
-.datepicker table tr td.selected.disabled:hover[disabled]:active,
-fieldset[disabled] .datepicker table tr td.selected:active,
-fieldset[disabled] .datepicker table tr td.selected:hover:active,
-fieldset[disabled] .datepicker table tr td.selected.disabled:active,
-fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,
-.datepicker table tr td.selected.disabled.active,
-.datepicker table tr td.selected:hover.disabled.active,
-.datepicker table tr td.selected.disabled.disabled.active,
-.datepicker table tr td.selected.disabled:hover.disabled.active,
-.datepicker table tr td.selected[disabled].active,
-.datepicker table tr td.selected:hover[disabled].active,
-.datepicker table tr td.selected.disabled[disabled].active,
-.datepicker table tr td.selected.disabled:hover[disabled].active,
-fieldset[disabled] .datepicker table tr td.selected.active,
-fieldset[disabled] .datepicker table tr td.selected:hover.active,
-fieldset[disabled] .datepicker table tr td.selected.disabled.active,
-fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active {
-  background-color: #999999;
-  border-color: #555555;
-}
-.datepicker table tr td.active,
-.datepicker table tr td.active:hover,
-.datepicker table tr td.active.disabled,
-.datepicker table tr td.active.disabled:hover {
-  color: #ffffff;
-  background-color: #428bca;
-  border-color: #357ebd;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.datepicker table tr td.active:hover,
-.datepicker table tr td.active:hover:hover,
-.datepicker table tr td.active.disabled:hover,
-.datepicker table tr td.active.disabled:hover:hover,
-.datepicker table tr td.active:focus,
-.datepicker table tr td.active:hover:focus,
-.datepicker table tr td.active.disabled:focus,
-.datepicker table tr td.active.disabled:hover:focus,
-.datepicker table tr td.active:active,
-.datepicker table tr td.active:hover:active,
-.datepicker table tr td.active.disabled:active,
-.datepicker table tr td.active.disabled:hover:active,
-.datepicker table tr td.active.active,
-.datepicker table tr td.active:hover.active,
-.datepicker table tr td.active.disabled.active,
-.datepicker table tr td.active.disabled:hover.active,
-.open .dropdown-toggle.datepicker table tr td.active,
-.open .dropdown-toggle.datepicker table tr td.active:hover,
-.open .dropdown-toggle.datepicker table tr td.active.disabled,
-.open .dropdown-toggle.datepicker table tr td.active.disabled:hover {
-  color: #ffffff;
-  background-color: #3276b1;
-  border-color: #285e8e;
-}
-.datepicker table tr td.active:active,
-.datepicker table tr td.active:hover:active,
-.datepicker table tr td.active.disabled:active,
-.datepicker table tr td.active.disabled:hover:active,
-.datepicker table tr td.active.active,
-.datepicker table tr td.active:hover.active,
-.datepicker table tr td.active.disabled.active,
-.datepicker table tr td.active.disabled:hover.active,
-.open .dropdown-toggle.datepicker table tr td.active,
-.open .dropdown-toggle.datepicker table tr td.active:hover,
-.open .dropdown-toggle.datepicker table tr td.active.disabled,
-.open .dropdown-toggle.datepicker table tr td.active.disabled:hover {
-  background-image: none;
-}
-.datepicker table tr td.active.disabled,
-.datepicker table tr td.active:hover.disabled,
-.datepicker table tr td.active.disabled.disabled,
-.datepicker table tr td.active.disabled:hover.disabled,
-.datepicker table tr td.active[disabled],
-.datepicker table tr td.active:hover[disabled],
-.datepicker table tr td.active.disabled[disabled],
-.datepicker table tr td.active.disabled:hover[disabled],
-fieldset[disabled] .datepicker table tr td.active,
-fieldset[disabled] .datepicker table tr td.active:hover,
-fieldset[disabled] .datepicker table tr td.active.disabled,
-fieldset[disabled] .datepicker table tr td.active.disabled:hover,
-.datepicker table tr td.active.disabled:hover,
-.datepicker table tr td.active:hover.disabled:hover,
-.datepicker table tr td.active.disabled.disabled:hover,
-.datepicker table tr td.active.disabled:hover.disabled:hover,
-.datepicker table tr td.active[disabled]:hover,
-.datepicker table tr td.active:hover[disabled]:hover,
-.datepicker table tr td.active.disabled[disabled]:hover,
-.datepicker table tr td.active.disabled:hover[disabled]:hover,
-fieldset[disabled] .datepicker table tr td.active:hover,
-fieldset[disabled] .datepicker table tr td.active:hover:hover,
-fieldset[disabled] .datepicker table tr td.active.disabled:hover,
-fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,
-.datepicker table tr td.active.disabled:focus,
-.datepicker table tr td.active:hover.disabled:focus,
-.datepicker table tr td.active.disabled.disabled:focus,
-.datepicker table tr td.active.disabled:hover.disabled:focus,
-.datepicker table tr td.active[disabled]:focus,
-.datepicker table tr td.active:hover[disabled]:focus,
-.datepicker table tr td.active.disabled[disabled]:focus,
-.datepicker table tr td.active.disabled:hover[disabled]:focus,
-fieldset[disabled] .datepicker table tr td.active:focus,
-fieldset[disabled] .datepicker table tr td.active:hover:focus,
-fieldset[disabled] .datepicker table tr td.active.disabled:focus,
-fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,
-.datepicker table tr td.active.disabled:active,
-.datepicker table tr td.active:hover.disabled:active,
-.datepicker table tr td.active.disabled.disabled:active,
-.datepicker table tr td.active.disabled:hover.disabled:active,
-.datepicker table tr td.active[disabled]:active,
-.datepicker table tr td.active:hover[disabled]:active,
-.datepicker table tr td.active.disabled[disabled]:active,
-.datepicker table tr td.active.disabled:hover[disabled]:active,
-fieldset[disabled] .datepicker table tr td.active:active,
-fieldset[disabled] .datepicker table tr td.active:hover:active,
-fieldset[disabled] .datepicker table tr td.active.disabled:active,
-fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,
-.datepicker table tr td.active.disabled.active,
-.datepicker table tr td.active:hover.disabled.active,
-.datepicker table tr td.active.disabled.disabled.active,
-.datepicker table tr td.active.disabled:hover.disabled.active,
-.datepicker table tr td.active[disabled].active,
-.datepicker table tr td.active:hover[disabled].active,
-.datepicker table tr td.active.disabled[disabled].active,
-.datepicker table tr td.active.disabled:hover[disabled].active,
-fieldset[disabled] .datepicker table tr td.active.active,
-fieldset[disabled] .datepicker table tr td.active:hover.active,
-fieldset[disabled] .datepicker table tr td.active.disabled.active,
-fieldset[disabled] .datepicker table tr td.active.disabled:hover.active {
-  background-color: #428bca;
-  border-color: #357ebd;
-}
-.datepicker table tr td span {
-  display: block;
-  width: 23%;
-  height: 54px;
-  line-height: 54px;
-  float: left;
-  margin: 1%;
-  cursor: pointer;
-  border-radius: 4px;
-}
-.datepicker table tr td span:hover {
-  background: #eeeeee;
-}
-.datepicker table tr td span.disabled,
-.datepicker table tr td span.disabled:hover {
-  background: none;
-  color: #999999;
-  cursor: default;
-}
-.datepicker table tr td span.active,
-.datepicker table tr td span.active:hover,
-.datepicker table tr td span.active.disabled,
-.datepicker table tr td span.active.disabled:hover {
-  color: #ffffff;
-  background-color: #428bca;
-  border-color: #357ebd;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.datepicker table tr td span.active:hover,
-.datepicker table tr td span.active:hover:hover,
-.datepicker table tr td span.active.disabled:hover,
-.datepicker table tr td span.active.disabled:hover:hover,
-.datepicker table tr td span.active:focus,
-.datepicker table tr td span.active:hover:focus,
-.datepicker table tr td span.active.disabled:focus,
-.datepicker table tr td span.active.disabled:hover:focus,
-.datepicker table tr td span.active:active,
-.datepicker table tr td span.active:hover:active,
-.datepicker table tr td span.active.disabled:active,
-.datepicker table tr td span.active.disabled:hover:active,
-.datepicker table tr td span.active.active,
-.datepicker table tr td span.active:hover.active,
-.datepicker table tr td span.active.disabled.active,
-.datepicker table tr td span.active.disabled:hover.active,
-.open .dropdown-toggle.datepicker table tr td span.active,
-.open .dropdown-toggle.datepicker table tr td span.active:hover,
-.open .dropdown-toggle.datepicker table tr td span.active.disabled,
-.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
-  color: #ffffff;
-  background-color: #3276b1;
-  border-color: #285e8e;
-}
-.datepicker table tr td span.active:active,
-.datepicker table tr td span.active:hover:active,
-.datepicker table tr td span.active.disabled:active,
-.datepicker table tr td span.active.disabled:hover:active,
-.datepicker table tr td span.active.active,
-.datepicker table tr td span.active:hover.active,
-.datepicker table tr td span.active.disabled.active,
-.datepicker table tr td span.active.disabled:hover.active,
-.open .dropdown-toggle.datepicker table tr td span.active,
-.open .dropdown-toggle.datepicker table tr td span.active:hover,
-.open .dropdown-toggle.datepicker table tr td span.active.disabled,
-.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
-  background-image: none;
-}
-.datepicker table tr td span.active.disabled,
-.datepicker table tr td span.active:hover.disabled,
-.datepicker table tr td span.active.disabled.disabled,
-.datepicker table tr td span.active.disabled:hover.disabled,
-.datepicker table tr td span.active[disabled],
-.datepicker table tr td span.active:hover[disabled],
-.datepicker table tr td span.active.disabled[disabled],
-.datepicker table tr td span.active.disabled:hover[disabled],
-fieldset[disabled] .datepicker table tr td span.active,
-fieldset[disabled] .datepicker table tr td span.active:hover,
-fieldset[disabled] .datepicker table tr td span.active.disabled,
-fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
-.datepicker table tr td span.active.disabled:hover,
-.datepicker table tr td span.active:hover.disabled:hover,
-.datepicker table tr td span.active.disabled.disabled:hover,
-.datepicker table tr td span.active.disabled:hover.disabled:hover,
-.datepicker table tr td span.active[disabled]:hover,
-.datepicker table tr td span.active:hover[disabled]:hover,
-.datepicker table tr td span.active.disabled[disabled]:hover,
-.datepicker table tr td span.active.disabled:hover[disabled]:hover,
-fieldset[disabled] .datepicker table tr td span.active:hover,
-fieldset[disabled] .datepicker table tr td span.active:hover:hover,
-fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
-fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,
-.datepicker table tr td span.active.disabled:focus,
-.datepicker table tr td span.active:hover.disabled:focus,
-.datepicker table tr td span.active.disabled.disabled:focus,
-.datepicker table tr td span.active.disabled:hover.disabled:focus,
-.datepicker table tr td span.active[disabled]:focus,
-.datepicker table tr td span.active:hover[disabled]:focus,
-.datepicker table tr td span.active.disabled[disabled]:focus,
-.datepicker table tr td span.active.disabled:hover[disabled]:focus,
-fieldset[disabled] .datepicker table tr td span.active:focus,
-fieldset[disabled] .datepicker table tr td span.active:hover:focus,
-fieldset[disabled] .datepicker table tr td span.active.disabled:focus,
-fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,
-.datepicker table tr td span.active.disabled:active,
-.datepicker table tr td span.active:hover.disabled:active,
-.datepicker table tr td span.active.disabled.disabled:active,
-.datepicker table tr td span.active.disabled:hover.disabled:active,
-.datepicker table tr td span.active[disabled]:active,
-.datepicker table tr td span.active:hover[disabled]:active,
-.datepicker table tr td span.active.disabled[disabled]:active,
-.datepicker table tr td span.active.disabled:hover[disabled]:active,
-fieldset[disabled] .datepicker table tr td span.active:active,
-fieldset[disabled] .datepicker table tr td span.active:hover:active,
-fieldset[disabled] .datepicker table tr td span.active.disabled:active,
-fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,
-.datepicker table tr td span.active.disabled.active,
-.datepicker table tr td span.active:hover.disabled.active,
-.datepicker table tr td span.active.disabled.disabled.active,
-.datepicker table tr td span.active.disabled:hover.disabled.active,
-.datepicker table tr td span.active[disabled].active,
-.datepicker table tr td span.active:hover[disabled].active,
-.datepicker table tr td span.active.disabled[disabled].active,
-.datepicker table tr td span.active.disabled:hover[disabled].active,
-fieldset[disabled] .datepicker table tr td span.active.active,
-fieldset[disabled] .datepicker table tr td span.active:hover.active,
-fieldset[disabled] .datepicker table tr td span.active.disabled.active,
-fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active {
-  background-color: #428bca;
-  border-color: #357ebd;
-}
-.datepicker table tr td span.old,
-.datepicker table tr td span.new {
-  color: #999999;
-}
-.datepicker th.datepicker-switch {
-  width: 145px;
-}
-.datepicker thead tr:first-child th,
-.datepicker tfoot tr th {
-  cursor: pointer;
-}
-.datepicker thead tr:first-child th:hover,
-.datepicker tfoot tr th:hover {
-  background: #eeeeee;
-}
-.datepicker .cw {
-  font-size: 10px;
-  width: 12px;
-  padding: 0 2px 0 5px;
-  vertical-align: middle;
-}
-.datepicker thead tr:first-child th.cw {
-  cursor: default;
-  background-color: transparent;
-}
-.input-group.date .input-group-addon i {
-  cursor: pointer;
-  width: 16px;
-  height: 16px;
-}
-.input-daterange input {
-  text-align: center;
-}
-.input-daterange input:first-child {
-  border-radius: 3px 0 0 3px;
-}
-.input-daterange input:last-child {
-  border-radius: 0 3px 3px 0;
-}
-.input-daterange .input-group-addon {
-  width: auto;
-  min-width: 16px;
-  padding: 4px 5px;
-  font-weight: normal;
-  line-height: 1.51429;
-  text-align: center;
-  text-shadow: 0 1px 0 #fff;
-  vertical-align: middle;
-  background-color: #eeeeee;
-  border: solid #cccccc;
-  border-width: 1px 0;
-  margin-left: -5px;
-  margin-right: -5px;
-}
-.datepicker.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  float: left;
-  display: none;
-  min-width: 160px;
-  list-style: none;
-  background-color: #ffffff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  border-radius: 5px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding;
-  background-clip: padding-box;
-  *border-right-width: 2px;
-  *border-bottom-width: 2px;
-  color: #333333;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  line-height: 1.5;
-}
-.datepicker.dropdown-menu th,
-.datepicker.datepicker-inline th,
-.datepicker.dropdown-menu td,
-.datepicker.datepicker-inline td {
-  padding: 0px 5px;
-}
-
-.chart {
-  height: inherit;
-  width: inherit;
-  min-height: inherit;
-  min-width: inherit; }
-  .chart .tooltip_detail {
-    position: absolute;
-    z-index: 2;
-    border-radius: 3px;
-    padding: 0.25em;
-    font-size: 12px;
-    font-family: Arial, sans-serif;
-    color: white;
-    border: 1px solid rgba(0, 0, 0, 0.4);
-    margin-left: 1em;
-    margin-top: -1em;
-    white-space: nowrap;
-    background: rgba(0, 0, 0, 0.8); }
-    .chart .tooltip_detail:before {
-      content: "\25c2";
-      position: absolute;
-      left: -0.5em;
-      color: rgba(0, 0, 0, 0.7);
-      width: 0;
-      top: 12px; }
-
-.overview_chart {
-  width: 214px;
-  height: 81px; }
-  .overview_chart .chart_container {
-    width: 140px;
-    min-width: 140px; }
-    .overview_chart .chart_container .chart svg {
-      padding-right: 4px !important; }
-      .overview_chart .chart_container .chart .detail .dot.active {
-        box-sizing: content-box; }
-  .overview_chart .bar_chart_container {
-    position: relative;
-    width: 74px;
-    min-width: 74px; }
-    .overview_chart .bar_chart_container, .overview_chart .chart_container {
-      float: left;
-      min-height: 81px;
-      height: 81px; }
-      .overview_chart .bar_chart_container .chart,
-      .overview_chart .chart_container .chart {
-        height: inherit;
-        width: inherit;
-        min-height: inherit;
-        min-width: inherit; }
-        .overview_chart .bar_chart_container .chart .modal-backdrop,
-        .overview_chart .chart_container .chart .modal-backdrop {
-          min-height: inherit;
-          min-width: inherit; }
-  .overview_chart .tooltip_detail {
-    position: absolute;
-    z-index: 2;
-    border-radius: 3px;
-    padding: 0.25em;
-    font-size: 12px;
-    font-family: Arial, sans-serif;
-    color: white;
-    border: 1px solid rgba(0, 0, 0, 0.4);
-    margin-left: 1em;
-    margin-top: -1em;
-    white-space: nowrap;
-    background: rgba(0, 0, 0, 0.8); }
-    .overview_chart .tooltip_detail:before {
-      content: "\25c2";
-      position: absolute;
-      left: -0.5em;
-      color: rgba(0, 0, 0, 0.7);
-      width: 0;
-      top: 12px; }
-
-.chart_container {
-  position: relative;
-  min-height: 300px;
-  min-width: 400px; }
-  .chart_container .chart {
-    position: relative;
-    min-height: 300px;
-    min-width: 400px; }
-    .chart_container .chart .detail .x_label {
-      display: none; }
-      .chart_container .chart .detail .item {
-        line-height: 1.4;
-        padding: 0.5em; }
-        .chart_container .chart .detail .date {
-          color: #a0a0a0; }
-    .chart_container .chart .modal-backdrop {
-      position: absolute;
-      opacity: 0.5;
-      top: 0;
-      left: 0;
-      min-height: 300px;
-      min-width: 400px; }
-      .chart_container .chart svg {
-        padding: 0 0 5px 0; }
-  .chart_container .detail_swatch {
-    float: right;
-    display: inline-block;
-    width: 10px;
-    height: 10px;
-    margin: 0 4px 0 0; }
-
-.legend_container {
-  min-width: 90px;
-  margin-left: 20px; }
-  .legend_container .swatch {
-    float: right;
-    display: inline-block;
-    width: 10px;
-    height: 10px;
-    margin: 0 4px 0 0; }
-    .legend_container .modal-backdrop {
-      position: absolute;
-      opacity: 0.5;
-      top: 0;
-      left: 0;
-      min-width: 90px; }
-      .legend_container .rickshaw_legend.disabled {
-        padding: 0; }
-
-.spinner_wrapper {
-  position: absolute;
-  top: 40%;
-  left: 40%; }
-
-  .rickshaw_legend {
-    background: white;
-    color: #404040; }
-    .rickshaw_legend .action {
-      text-decoration: none;
-      color: black; }
-
-.workflow ul.nav-tabs {
-  padding: 0 13px; }
-  .workflow td.actions {
-    vertical-align: top;
-    width: 308px;
-    padding-right: 10px; }
-    .workflow td.help_text {
-      vertical-align: top;
-      width: 340px;
-      padding-left: 10px;
-      border-left: 1px solid #dddddd; }
-.workflow fieldset > table {
-  margin-bottom: 0; }
-  .workflow.wizard .row .btn {
-    float: none;
-    margin: 0; }
-    .workflow.wizard .row .next {
-      text-align: right; }
-  .workflow.wizard .nav-tabs.wizard-tabs {
-    border-bottom: 0;
-    background: #efefef;
-    padding: 0; }
-    .workflow.wizard .nav-tabs.wizard-tabs li {
-      margin-bottom: 0;
-      position: relative; }
-      .workflow.wizard .nav-tabs.wizard-tabs li:before {
-        position: absolute;
-        top: 0;
-        right: -20px;
-        z-index: 2;
-        display: block;
-        border: 20px solid transparent;
-        border-right: 0;
-        border-left: 20px solid #dddddd;
-        content: ''; }
-        .workflow.wizard .nav-tabs.wizard-tabs li:after {
-          position: absolute;
-          top: -2px;
-          right: -22px;
-          z-index: 1;
-          display: block;
-          border: 22px solid transparent;
-          border-right: 0;
-          border-left: 22px solid #ffffff;
-          content: ''; }
-          .workflow.wizard .nav-tabs.wizard-tabs li.active:before,
-          .workflow.wizard .nav-tabs.wizard-tabs li.done:before {
-            border-left: 20px solid #007acc; }
-            .workflow.wizard .nav-tabs.wizard-tabs li a {
-              border: 0;
-              border-radius: 0;
-              background: #dddddd;
-              color: #43a4d7;
-              padding: 0 15px;
-              padding-left: 35px;
-              line-height: 40px;
-              position: relative;
-              margin: 0; }
-              .workflow.wizard .nav-tabs.wizard-tabs li:first-child a {
-                padding-left: 15px; }
-                .workflow.wizard .nav-tabs.wizard-tabs li.active a {
-                  background: #007acc;
-                  color: #ffffff; }
-                  .workflow.wizard .nav-tabs.wizard-tabs li.done a {
-                    background: #007acc; }
-  .workflow.wizard label.error {
-    color: #d9534f; }
-
-@font-face {
-  font-family: 'FontAwesome';
-  src: url('/static/horizon/lib/font-awesome/fonts/fontawesome-webfont.eot?v=4.1.0&90186830c9c5');
-  src: url('/static/horizon/lib/font-awesome/fonts/fontawesome-webfont.eot?&90186830c9c5#iefix&v=4.1.0') format('embedded-opentype'),
-    url('/static/horizon/lib/font-awesome/fonts/fontawesome-webfont.woff?v=4.1.0&fdf491ce5ff5') format('woff'),
-    url('/static/horizon/lib/font-awesome/fonts/fontawesome-webfont.ttf?v=4.1.0&4f0022f25672') format('truetype'),
-    url('/static/horizon/lib/font-awesome/fonts/fontawesome-webfont.svg?v=4.1.0&776d58f453c8#fontawesomeregular') format('svg');
-  font-weight: normal;
-  font-style: normal; 
-}
-  
-.fa {
-  display: inline-block;
-  font-family: FontAwesome;
-  font-style: normal;
-  font-weight: normal;
-  line-height: 1;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale; }
-.fa-lg {
-  font-size: 1.33333em;
-  line-height: 0.75em;
-  vertical-align: -15%; }
-
-  .fa-2x {
-    font-size: 2em; }
-
-    .fa-3x {
-      font-size: 3em; }
-
-      .fa-4x {
-        font-size: 4em; }
-
-        .fa-5x {
-          font-size: 5em; }
-.fa-fw {
-  width: 1.28571em;
-  text-align: center; }
-.fa-ul {
-  padding-left: 0;
-  margin-left: 2.14286em;
-  list-style-type: none; }
-  .fa-ul > li {
-    position: relative; }
-
-.fa-li {
-  position: absolute;
-  left: -2.14286em;
-  width: 2.14286em;
-  top: 0.14286em;
-  text-align: center; }
-  .fa-li.fa-lg {
-    left: -1.85714em; }
-.fa-border {
-  padding: 0.2em 0.25em 0.15em;
-  border: solid 0.08em #eee;
-  border-radius: 0.1em; }
-
-  .pull-right {
-    float: right; }
-
-    .pull-left {
-      float: left; }
-
-      .fa.pull-left {
-        margin-right: 0.3em; }
-        .fa.pull-right {
-          margin-left: 0.3em; }
-.fa-spin {
-  -webkit-animation: spin 2s infinite linear;
-  -moz-animation: spin 2s infinite linear;
-  -o-animation: spin 2s infinite linear;
-  animation: spin 2s infinite linear; }
-
-  @-moz-keyframes spin {
-    0% {
-      -moz-transform: rotate(0deg);   }
-      100% {
-        -moz-transform: rotate(359deg);   }
-}
-
-@-webkit-keyframes spin {
-  0% {
-    -webkit-transform: rotate(0deg);   }
-    100% {
-      -webkit-transform: rotate(359deg);   }
-}
-
-@-o-keyframes spin {
-  0% {
-    -o-transform: rotate(0deg);   }
-    100% {
-      -o-transform: rotate(359deg);   }
-}
-
-@keyframes spin {
-  0% {
-    -webkit-transform: rotate(0deg);
-    transform: rotate(0deg);   }
-    100% {
-      -webkit-transform: rotate(359deg);
-      transform: rotate(359deg);   }
-}
-.fa-rotate-90 {
-  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
-  -webkit-transform: rotate(90deg);
-  -moz-transform: rotate(90deg);
-  -ms-transform: rotate(90deg);
-  -o-transform: rotate(90deg);
-  transform: rotate(90deg); }
-
-  .fa-rotate-180 {
-    filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
-    -webkit-transform: rotate(180deg);
-    -moz-transform: rotate(180deg);
-    -ms-transform: rotate(180deg);
-    -o-transform: rotate(180deg);
-    transform: rotate(180deg); }
-
-    .fa-rotate-270 {
-      filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
-      -webkit-transform: rotate(270deg);
-      -moz-transform: rotate(270deg);
-      -ms-transform: rotate(270deg);
-      -o-transform: rotate(270deg);
-      transform: rotate(270deg); }
-
-      .fa-flip-horizontal {
-        filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0);
-        -webkit-transform: scale(-1, 1);
-        -moz-transform: scale(-1, 1);
-        -ms-transform: scale(-1, 1);
-        -o-transform: scale(-1, 1);
-        transform: scale(-1, 1); }
-
-        .fa-flip-vertical {
-          filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
-          -webkit-transform: scale(1, -1);
-          -moz-transform: scale(1, -1);
-          -ms-transform: scale(1, -1);
-          -o-transform: scale(1, -1);
-          transform: scale(1, -1); }
-.fa-stack {
-  position: relative;
-  display: inline-block;
-  width: 2em;
-  height: 2em;
-  line-height: 2em;
-  vertical-align: middle; }
-
-  .fa-stack-1x, .fa-stack-2x {
-    position: absolute;
-    left: 0;
-    width: 100%;
-    text-align: center; }
-
-    .fa-stack-1x {
-      line-height: inherit; }
-
-      .fa-stack-2x {
-        font-size: 2em; }
-
-        .fa-inverse {
-          color: #fff; }
-
-.fa-glass:before {
-  content: "\f000"; }
-
-  .fa-music:before {
-    content: "\f001"; }
-
-    .fa-search:before {
-      content: "\f002"; }
-
-      .fa-envelope-o:before {
-        content: "\f003"; }
-
-        .fa-heart:before {
-          content: "\f004"; }
-
-          .fa-star:before {
-            content: "\f005"; }
-
-            .fa-star-o:before {
-              content: "\f006"; }
-
-              .fa-user:before {
-                content: "\f007"; }
-
-                .fa-film:before {
-                  content: "\f008"; }
-
-                  .fa-th-large:before {
-                    content: "\f009"; }
-
-                    .fa-th:before {
-                      content: "\f00a"; }
-
-                      .fa-th-list:before {
-                        content: "\f00b"; }
-
-                        .fa-check:before {
-                          content: "\f00c"; }
-
-                          .fa-times:before {
-                            content: "\f00d"; }
-
-                            .fa-search-plus:before {
-                              content: "\f00e"; }
-
-                              .fa-search-minus:before {
-                                content: "\f010"; }
-
-                                .fa-power-off:before {
-                                  content: "\f011"; }
-
-                                  .fa-signal:before {
-                                    content: "\f012"; }
-
-                                    .fa-gear:before, .fa-cog:before {
-                                      content: "\f013"; }
-
-                                      .fa-trash-o:before {
-                                        content: "\f014"; }
-
-                                        .fa-home:before {
-                                          content: "\f015"; }
-
-                                          .fa-file-o:before {
-                                            content: "\f016"; }
-
-                                            .fa-clock-o:before {
-                                              content: "\f017"; }
-
-                                              .fa-road:before {
-                                                content: "\f018"; }
-
-                                                .fa-download:before {
-                                                  content: "\f019"; }
-
-                                                  .fa-arrow-circle-o-down:before {
-                                                    content: "\f01a"; }
-
-                                                    .fa-arrow-circle-o-up:before {
-                                                      content: "\f01b"; }
-
-                                                      .fa-inbox:before {
-                                                        content: "\f01c"; }
-
-                                                        .fa-play-circle-o:before {
-                                                          content: "\f01d"; }
-
-                                                          .fa-rotate-right:before, .fa-repeat:before {
-                                                            content: "\f01e"; }
-
-                                                            .fa-refresh:before {
-                                                              content: "\f021"; }
-
-                                                              .fa-list-alt:before {
-                                                                content: "\f022"; }
-
-                                                                .fa-lock:before {
-                                                                  content: "\f023"; }
-
-                                                                  .fa-flag:before {
-                                                                    content: "\f024"; }
-
-                                                                    .fa-headphones:before {
-                                                                      content: "\f025"; }
-
-                                                                      .fa-volume-off:before {
-                                                                        content: "\f026"; }
-
-                                                                        .fa-volume-down:before {
-                                                                          content: "\f027"; }
-
-                                                                          .fa-volume-up:before {
-                                                                            content: "\f028"; }
-
-                                                                            .fa-qrcode:before {
-                                                                              content: "\f029"; }
-
-                                                                              .fa-barcode:before {
-                                                                                content: "\f02a"; }
-
-                                                                                .fa-tag:before {
-                                                                                  content: "\f02b"; }
-
-                                                                                  .fa-tags:before {
-                                                                                    content: "\f02c"; }
-
-                                                                                    .fa-book:before {
-                                                                                      content: "\f02d"; }
-
-                                                                                      .fa-bookmark:before {
-                                                                                        content: "\f02e"; }
-
-                                                                                        .fa-print:before {
-                                                                                          content: "\f02f"; }
-
-                                                                                          .fa-camera:before {
-                                                                                            content: "\f030"; }
-
-                                                                                            .fa-font:before {
-                                                                                              content: "\f031"; }
-
-                                                                                              .fa-bold:before {
-                                                                                                content: "\f032"; }
-
-                                                                                                .fa-italic:before {
-                                                                                                  content: "\f033"; }
-
-                                                                                                  .fa-text-height:before {
-                                                                                                    content: "\f034"; }
-
-                                                                                                    .fa-text-width:before {
-                                                                                                      content: "\f035"; }
-
-                                                                                                      .fa-align-left:before {
-                                                                                                        content: "\f036"; }
-
-                                                                                                        .fa-align-center:before {
-                                                                                                          content: "\f037"; }
-
-                                                                                                          .fa-align-right:before {
-                                                                                                            content: "\f038"; }
-
-                                                                                                            .fa-align-justify:before {
-                                                                                                              content: "\f039"; }
-
-                                                                                                              .fa-list:before {
-                                                                                                                content: "\f03a"; }
-
-                                                                                                                .fa-dedent:before, .fa-outdent:before {
-                                                                                                                  content: "\f03b"; }
-
-                                                                                                                  .fa-indent:before {
-                                                                                                                    content: "\f03c"; }
-
-                                                                                                                    .fa-video-camera:before {
-                                                                                                                      content: "\f03d"; }
-
-                                                                                                                      .fa-photo:before, .fa-image:before, .fa-picture-o:before {
-                                                                                                                        content: "\f03e"; }
-
-                                                                                                                        .fa-pencil:before {
-                                                                                                                          content: "\f040"; }
-
-                                                                                                                          .fa-map-marker:before {
-                                                                                                                            content: "\f041"; }
-
-                                                                                                                            .fa-adjust:before {
-                                                                                                                              content: "\f042"; }
-
-                                                                                                                              .fa-tint:before {
-                                                                                                                                content: "\f043"; }
-
-                                                                                                                                .fa-edit:before, .fa-pencil-square-o:before {
-                                                                                                                                  content: "\f044"; }
-
-                                                                                                                                  .fa-share-square-o:before {
-                                                                                                                                    content: "\f045"; }
-
-                                                                                                                                    .fa-check-square-o:before {
-                                                                                                                                      content: "\f046"; }
-
-                                                                                                                                      .fa-arrows:before {
-                                                                                                                                        content: "\f047"; }
-
-                                                                                                                                        .fa-step-backward:before {
-                                                                                                                                          content: "\f048"; }
-
-                                                                                                                                          .fa-fast-backward:before {
-                                                                                                                                            content: "\f049"; }
-
-                                                                                                                                            .fa-backward:before {
-                                                                                                                                              content: "\f04a"; }
-
-                                                                                                                                              .fa-play:before {
-                                                                                                                                                content: "\f04b"; }
-
-                                                                                                                                                .fa-pause:before {
-                                                                                                                                                  content: "\f04c"; }
-
-                                                                                                                                                  .fa-stop:before {
-                                                                                                                                                    content: "\f04d"; }
-
-                                                                                                                                                    .fa-forward:before {
-                                                                                                                                                      content: "\f04e"; }
-
-                                                                                                                                                      .fa-fast-forward:before {
-                                                                                                                                                        content: "\f050"; }
-
-                                                                                                                                                        .fa-step-forward:before {
-                                                                                                                                                          content: "\f051"; }
-
-                                                                                                                                                          .fa-eject:before {
-                                                                                                                                                            content: "\f052"; }
-
-                                                                                                                                                            .fa-chevron-left:before {
-                                                                                                                                                              content: "\f053"; }
-
-                                                                                                                                                              .fa-chevron-right:before {
-                                                                                                                                                                content: "\f054"; }
-
-                                                                                                                                                                .fa-plus-circle:before {
-                                                                                                                                                                  content: "\f055"; }
-
-                                                                                                                                                                  .fa-minus-circle:before {
-                                                                                                                                                                    content: "\f056"; }
-
-                                                                                                                                                                    .fa-times-circle:before {
-                                                                                                                                                                      content: "\f057"; }
-
-                                                                                                                                                                      .fa-check-circle:before {
-                                                                                                                                                                        content: "\f058"; }
-
-                                                                                                                                                                        .fa-question-circle:before {
-                                                                                                                                                                          content: "\f059"; }
-
-                                                                                                                                                                          .fa-info-circle:before {
-                                                                                                                                                                            content: "\f05a"; }
-
-                                                                                                                                                                            .fa-crosshairs:before {
-                                                                                                                                                                              content: "\f05b"; }
-
-                                                                                                                                                                              .fa-times-circle-o:before {
-                                                                                                                                                                                content: "\f05c"; }
-
-                                                                                                                                                                                .fa-check-circle-o:before {
-                                                                                                                                                                                  content: "\f05d"; }
-
-                                                                                                                                                                                  .fa-ban:before {
-                                                                                                                                                                                    content: "\f05e"; }
-
-                                                                                                                                                                                    .fa-arrow-left:before {
-                                                                                                                                                                                      content: "\f060"; }
-
-                                                                                                                                                                                      .fa-arrow-right:before {
-                                                                                                                                                                                        content: "\f061"; }
-
-                                                                                                                                                                                        .fa-arrow-up:before {
-                                                                                                                                                                                          content: "\f062"; }
-
-                                                                                                                                                                                          .fa-arrow-down:before {
-                                                                                                                                                                                            content: "\f063"; }
-
-                                                                                                                                                                                            .fa-mail-forward:before, .fa-share:before {
-                                                                                                                                                                                              content: "\f064"; }
-
-                                                                                                                                                                                              .fa-expand:before {
-                                                                                                                                                                                                content: "\f065"; }
-
-                                                                                                                                                                                                .fa-compress:before {
-                                                                                                                                                                                                  content: "\f066"; }
-
-                                                                                                                                                                                                  .fa-plus:before {
-                                                                                                                                                                                                    content: "\f067"; }
-
-                                                                                                                                                                                                    .fa-minus:before {
-                                                                                                                                                                                                      content: "\f068"; }
-
-                                                                                                                                                                                                      .fa-asterisk:before {
-                                                                                                                                                                                                        content: "\f069"; }
-
-                                                                                                                                                                                                        .fa-exclamation-circle:before {
-                                                                                                                                                                                                          content: "\f06a"; }
-
-                                                                                                                                                                                                          .fa-gift:before {
-                                                                                                                                                                                                            content: "\f06b"; }
-
-                                                                                                                                                                                                            .fa-leaf:before {
-                                                                                                                                                                                                              content: "\f06c"; }
-
-                                                                                                                                                                                                              .fa-fire:before {
-                                                                                                                                                                                                                content: "\f06d"; }
-
-                                                                                                                                                                                                                .fa-eye:before {
-                                                                                                                                                                                                                  content: "\f06e"; }
-
-                                                                                                                                                                                                                  .fa-eye-slash:before {
-                                                                                                                                                                                                                    content: "\f070"; }
-
-                                                                                                                                                                                                                    .fa-warning:before, .fa-exclamation-triangle:before {
-                                                                                                                                                                                                                      content: "\f071"; }
-
-                                                                                                                                                                                                                      .fa-plane:before {
-                                                                                                                                                                                                                        content: "\f072"; }
-
-                                                                                                                                                                                                                        .fa-calendar:before {
-                                                                                                                                                                                                                          content: "\f073"; }
-
-                                                                                                                                                                                                                          .fa-random:before {
-                                                                                                                                                                                                                            content: "\f074"; }
-
-                                                                                                                                                                                                                            .fa-comment:before {
-                                                                                                                                                                                                                              content: "\f075"; }
-
-                                                                                                                                                                                                                              .fa-magnet:before {
-                                                                                                                                                                                                                                content: "\f076"; }
-
-                                                                                                                                                                                                                                .fa-chevron-up:before {
-                                                                                                                                                                                                                                  content: "\f077"; }
-
-                                                                                                                                                                                                                                  .fa-chevron-down:before {
-                                                                                                                                                                                                                                    content: "\f078"; }
-
-                                                                                                                                                                                                                                    .fa-retweet:before {
-                                                                                                                                                                                                                                      content: "\f079"; }
-
-                                                                                                                                                                                                                                      .fa-shopping-cart:before {
-                                                                                                                                                                                                                                        content: "\f07a"; }
-
-                                                                                                                                                                                                                                        .fa-folder:before {
-                                                                                                                                                                                                                                          content: "\f07b"; }
-
-                                                                                                                                                                                                                                          .fa-folder-open:before {
-                                                                                                                                                                                                                                            content: "\f07c"; }
-
-                                                                                                                                                                                                                                            .fa-arrows-v:before {
-                                                                                                                                                                                                                                              content: "\f07d"; }
-
-                                                                                                                                                                                                                                              .fa-arrows-h:before {
-                                                                                                                                                                                                                                                content: "\f07e"; }
-
-                                                                                                                                                                                                                                                .fa-bar-chart-o:before {
-                                                                                                                                                                                                                                                  content: "\f080"; }
-
-                                                                                                                                                                                                                                                  .fa-twitter-square:before {
-                                                                                                                                                                                                                                                    content: "\f081"; }
-
-                                                                                                                                                                                                                                                    .fa-facebook-square:before {
-                                                                                                                                                                                                                                                      content: "\f082"; }
-
-                                                                                                                                                                                                                                                      .fa-camera-retro:before {
-                                                                                                                                                                                                                                                        content: "\f083"; }
-
-                                                                                                                                                                                                                                                        .fa-key:before {
-                                                                                                                                                                                                                                                          content: "\f084"; }
-
-                                                                                                                                                                                                                                                          .fa-gears:before, .fa-cogs:before {
-                                                                                                                                                                                                                                                            content: "\f085"; }
-
-                                                                                                                                                                                                                                                            .fa-comments:before {
-                                                                                                                                                                                                                                                              content: "\f086"; }
-
-                                                                                                                                                                                                                                                              .fa-thumbs-o-up:before {
-                                                                                                                                                                                                                                                                content: "\f087"; }
-
-                                                                                                                                                                                                                                                                .fa-thumbs-o-down:before {
-                                                                                                                                                                                                                                                                  content: "\f088"; }
-
-                                                                                                                                                                                                                                                                  .fa-star-half:before {
-                                                                                                                                                                                                                                                                    content: "\f089"; }
-
-                                                                                                                                                                                                                                                                    .fa-heart-o:before {
-                                                                                                                                                                                                                                                                      content: "\f08a"; }
-
-                                                                                                                                                                                                                                                                      .fa-sign-out:before {
-                                                                                                                                                                                                                                                                        content: "\f08b"; }
-
-                                                                                                                                                                                                                                                                        .fa-linkedin-square:before {
-                                                                                                                                                                                                                                                                          content: "\f08c"; }
-
-                                                                                                                                                                                                                                                                          .fa-thumb-tack:before {
-                                                                                                                                                                                                                                                                            content: "\f08d"; }
-
-                                                                                                                                                                                                                                                                            .fa-external-link:before {
-                                                                                                                                                                                                                                                                              content: "\f08e"; }
-
-                                                                                                                                                                                                                                                                              .fa-sign-in:before {
-                                                                                                                                                                                                                                                                                content: "\f090"; }
-
-                                                                                                                                                                                                                                                                                .fa-trophy:before {
-                                                                                                                                                                                                                                                                                  content: "\f091"; }
-
-                                                                                                                                                                                                                                                                                  .fa-github-square:before {
-                                                                                                                                                                                                                                                                                    content: "\f092"; }
-
-                                                                                                                                                                                                                                                                                    .fa-upload:before {
-                                                                                                                                                                                                                                                                                      content: "\f093"; }
-
-                                                                                                                                                                                                                                                                                      .fa-lemon-o:before {
-                                                                                                                                                                                                                                                                                        content: "\f094"; }
-
-                                                                                                                                                                                                                                                                                        .fa-phone:before {
-                                                                                                                                                                                                                                                                                          content: "\f095"; }
-
-                                                                                                                                                                                                                                                                                          .fa-square-o:before {
-                                                                                                                                                                                                                                                                                            content: "\f096"; }
-
-                                                                                                                                                                                                                                                                                            .fa-bookmark-o:before {
-                                                                                                                                                                                                                                                                                              content: "\f097"; }
-
-                                                                                                                                                                                                                                                                                              .fa-phone-square:before {
-                                                                                                                                                                                                                                                                                                content: "\f098"; }
-
-                                                                                                                                                                                                                                                                                                .fa-twitter:before {
-                                                                                                                                                                                                                                                                                                  content: "\f099"; }
-
-                                                                                                                                                                                                                                                                                                  .fa-facebook:before {
-                                                                                                                                                                                                                                                                                                    content: "\f09a"; }
-
-                                                                                                                                                                                                                                                                                                    .fa-github:before {
-                                                                                                                                                                                                                                                                                                      content: "\f09b"; }
-
-                                                                                                                                                                                                                                                                                                      .fa-unlock:before {
-                                                                                                                                                                                                                                                                                                        content: "\f09c"; }
-
-                                                                                                                                                                                                                                                                                                        .fa-credit-card:before {
-                                                                                                                                                                                                                                                                                                          content: "\f09d"; }
-
-                                                                                                                                                                                                                                                                                                          .fa-rss:before {
-                                                                                                                                                                                                                                                                                                            content: "\f09e"; }
-
-                                                                                                                                                                                                                                                                                                            .fa-hdd-o:before {
-                                                                                                                                                                                                                                                                                                              content: "\f0a0"; }
-
-                                                                                                                                                                                                                                                                                                              .fa-bullhorn:before {
-                                                                                                                                                                                                                                                                                                                content: "\f0a1"; }
-
-                                                                                                                                                                                                                                                                                                                .fa-bell:before {
-                                                                                                                                                                                                                                                                                                                  content: "\f0f3"; }
-
-                                                                                                                                                                                                                                                                                                                  .fa-certificate:before {
-                                                                                                                                                                                                                                                                                                                    content: "\f0a3"; }
-
-                                                                                                                                                                                                                                                                                                                    .fa-hand-o-right:before {
-                                                                                                                                                                                                                                                                                                                      content: "\f0a4"; }
-
-                                                                                                                                                                                                                                                                                                                      .fa-hand-o-left:before {
-                                                                                                                                                                                                                                                                                                                        content: "\f0a5"; }
-
-                                                                                                                                                                                                                                                                                                                        .fa-hand-o-up:before {
-                                                                                                                                                                                                                                                                                                                          content: "\f0a6"; }
-
-                                                                                                                                                                                                                                                                                                                          .fa-hand-o-down:before {
-                                                                                                                                                                                                                                                                                                                            content: "\f0a7"; }
-
-                                                                                                                                                                                                                                                                                                                            .fa-arrow-circle-left:before {
-                                                                                                                                                                                                                                                                                                                              content: "\f0a8"; }
-
-                                                                                                                                                                                                                                                                                                                              .fa-arrow-circle-right:before {
-                                                                                                                                                                                                                                                                                                                                content: "\f0a9"; }
-
-                                                                                                                                                                                                                                                                                                                                .fa-arrow-circle-up:before {
-                                                                                                                                                                                                                                                                                                                                  content: "\f0aa"; }
-
-                                                                                                                                                                                                                                                                                                                                  .fa-arrow-circle-down:before {
-                                                                                                                                                                                                                                                                                                                                    content: "\f0ab"; }
-
-                                                                                                                                                                                                                                                                                                                                    .fa-globe:before {
-                                                                                                                                                                                                                                                                                                                                      content: "\f0ac"; }
-
-                                                                                                                                                                                                                                                                                                                                      .fa-wrench:before {
-                                                                                                                                                                                                                                                                                                                                        content: "\f0ad"; }
-
-                                                                                                                                                                                                                                                                                                                                        .fa-tasks:before {
-                                                                                                                                                                                                                                                                                                                                          content: "\f0ae"; }
-
-                                                                                                                                                                                                                                                                                                                                          .fa-filter:before {
-                                                                                                                                                                                                                                                                                                                                            content: "\f0b0"; }
-
-                                                                                                                                                                                                                                                                                                                                            .fa-briefcase:before {
-                                                                                                                                                                                                                                                                                                                                              content: "\f0b1"; }
-
-                                                                                                                                                                                                                                                                                                                                              .fa-arrows-alt:before {
-                                                                                                                                                                                                                                                                                                                                                content: "\f0b2"; }
-
-                                                                                                                                                                                                                                                                                                                                                .fa-group:before, .fa-users:before {
-                                                                                                                                                                                                                                                                                                                                                  content: "\f0c0"; }
-
-                                                                                                                                                                                                                                                                                                                                                  .fa-chain:before, .fa-link:before {
-                                                                                                                                                                                                                                                                                                                                                    content: "\f0c1"; }
-
-                                                                                                                                                                                                                                                                                                                                                    .fa-cloud:before {
-                                                                                                                                                                                                                                                                                                                                                      content: "\f0c2"; }
-
-                                                                                                                                                                                                                                                                                                                                                      .fa-flask:before {
-                                                                                                                                                                                                                                                                                                                                                        content: "\f0c3"; }
-
-                                                                                                                                                                                                                                                                                                                                                        .fa-cut:before, .fa-scissors:before {
-                                                                                                                                                                                                                                                                                                                                                          content: "\f0c4"; }
-
-                                                                                                                                                                                                                                                                                                                                                          .fa-copy:before, .fa-files-o:before {
-                                                                                                                                                                                                                                                                                                                                                            content: "\f0c5"; }
-
-                                                                                                                                                                                                                                                                                                                                                            .fa-paperclip:before {
-                                                                                                                                                                                                                                                                                                                                                              content: "\f0c6"; }
-
-                                                                                                                                                                                                                                                                                                                                                              .fa-save:before, .fa-floppy-o:before {
-                                                                                                                                                                                                                                                                                                                                                                content: "\f0c7"; }
-
-                                                                                                                                                                                                                                                                                                                                                                .fa-square:before {
-                                                                                                                                                                                                                                                                                                                                                                  content: "\f0c8"; }
-
-                                                                                                                                                                                                                                                                                                                                                                  .fa-navicon:before, .fa-reorder:before, .fa-bars:before {
-                                                                                                                                                                                                                                                                                                                                                                    content: "\f0c9"; }
-
-                                                                                                                                                                                                                                                                                                                                                                    .fa-list-ul:before {
-                                                                                                                                                                                                                                                                                                                                                                      content: "\f0ca"; }
-
-                                                                                                                                                                                                                                                                                                                                                                      .fa-list-ol:before {
-                                                                                                                                                                                                                                                                                                                                                                        content: "\f0cb"; }
-
-                                                                                                                                                                                                                                                                                                                                                                        .fa-strikethrough:before {
-                                                                                                                                                                                                                                                                                                                                                                          content: "\f0cc"; }
-
-                                                                                                                                                                                                                                                                                                                                                                          .fa-underline:before {
-                                                                                                                                                                                                                                                                                                                                                                            content: "\f0cd"; }
-
-                                                                                                                                                                                                                                                                                                                                                                            .fa-table:before {
-                                                                                                                                                                                                                                                                                                                                                                              content: "\f0ce"; }
-
-                                                                                                                                                                                                                                                                                                                                                                              .fa-magic:before {
-                                                                                                                                                                                                                                                                                                                                                                                content: "\f0d0"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                .fa-truck:before {
-                                                                                                                                                                                                                                                                                                                                                                                  content: "\f0d1"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                  .fa-pinterest:before {
-                                                                                                                                                                                                                                                                                                                                                                                    content: "\f0d2"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                    .fa-pinterest-square:before {
-                                                                                                                                                                                                                                                                                                                                                                                      content: "\f0d3"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                      .fa-google-plus-square:before {
-                                                                                                                                                                                                                                                                                                                                                                                        content: "\f0d4"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                        .fa-google-plus:before {
-                                                                                                                                                                                                                                                                                                                                                                                          content: "\f0d5"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                          .fa-money:before {
-                                                                                                                                                                                                                                                                                                                                                                                            content: "\f0d6"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                            .fa-caret-down:before {
-                                                                                                                                                                                                                                                                                                                                                                                              content: "\f0d7"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                              .fa-caret-up:before {
-                                                                                                                                                                                                                                                                                                                                                                                                content: "\f0d8"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                .fa-caret-left:before {
-                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f0d9"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                  .fa-caret-right:before {
-                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f0da"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                    .fa-columns:before {
-                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f0db"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                      .fa-unsorted:before, .fa-sort:before {
-                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f0dc"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                        .fa-sort-down:before, .fa-sort-desc:before {
-                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f0dd"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                          .fa-sort-up:before, .fa-sort-asc:before {
-                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f0de"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                            .fa-envelope:before {
-                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f0e0"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                              .fa-linkedin:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f0e1"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                .fa-rotate-left:before, .fa-undo:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f0e2"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-legal:before, .fa-gavel:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f0e3"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-dashboard:before, .fa-tachometer:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f0e4"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-comment-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f0e5"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-comments-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f0e6"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-flash:before, .fa-bolt:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f0e7"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-sitemap:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f0e8"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-umbrella:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f0e9"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-paste:before, .fa-clipboard:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f0ea"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-lightbulb-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f0eb"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-exchange:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f0ec"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-cloud-download:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f0ed"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-cloud-upload:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f0ee"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-user-md:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f0f0"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-stethoscope:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f0f1"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-suitcase:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f0f2"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-bell-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f0a2"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-coffee:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f0f4"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-cutlery:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f0f5"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-file-text-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f0f6"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-building-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f0f7"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-hospital-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f0f8"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-ambulance:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f0f9"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-medkit:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f0fa"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-fighter-jet:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f0fb"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-beer:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f0fc"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-h-square:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f0fd"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-plus-square:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f0fe"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-angle-double-left:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f100"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-angle-double-right:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f101"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-angle-double-up:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f102"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-angle-double-down:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f103"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-angle-left:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f104"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-angle-right:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f105"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-angle-up:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f106"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-angle-down:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f107"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-desktop:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f108"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-laptop:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f109"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-tablet:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f10a"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-mobile-phone:before, .fa-mobile:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f10b"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-circle-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f10c"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-quote-left:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f10d"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-quote-right:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f10e"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-spinner:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f110"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-circle:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f111"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-mail-reply:before, .fa-reply:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f112"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-github-alt:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f113"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-folder-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f114"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-folder-open-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f115"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-smile-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f118"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-frown-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f119"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-meh-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f11a"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-gamepad:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f11b"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-keyboard-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f11c"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-flag-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f11d"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-flag-checkered:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f11e"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-terminal:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f120"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-code:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f121"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-mail-reply-all:before, .fa-reply-all:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f122"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-star-half-empty:before, .fa-star-half-full:before, .fa-star-half-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f123"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-location-arrow:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f124"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-crop:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f125"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-code-fork:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f126"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-unlink:before, .fa-chain-broken:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f127"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-question:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f128"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-info:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f129"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-exclamation:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f12a"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-superscript:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f12b"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-subscript:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f12c"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-eraser:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f12d"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-puzzle-piece:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f12e"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-microphone:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f130"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-microphone-slash:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f131"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-shield:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f132"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-calendar-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f133"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-fire-extinguisher:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f134"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-rocket:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f135"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-maxcdn:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f136"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-chevron-circle-left:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f137"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-chevron-circle-right:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f138"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-chevron-circle-up:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f139"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-chevron-circle-down:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f13a"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-html5:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f13b"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-css3:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f13c"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-anchor:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f13d"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-unlock-alt:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f13e"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-bullseye:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f140"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-ellipsis-h:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f141"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-ellipsis-v:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f142"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-rss-square:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f143"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-play-circle:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f144"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-ticket:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f145"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-minus-square:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f146"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-minus-square-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f147"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-level-up:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f148"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-level-down:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f149"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-check-square:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f14a"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-pencil-square:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f14b"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-external-link-square:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f14c"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-share-square:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f14d"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-compass:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f14e"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-toggle-down:before, .fa-caret-square-o-down:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f150"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-toggle-up:before, .fa-caret-square-o-up:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f151"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-toggle-right:before, .fa-caret-square-o-right:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f152"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-euro:before, .fa-eur:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f153"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-gbp:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f154"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-dollar:before, .fa-usd:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f155"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-rupee:before, .fa-inr:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f156"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-cny:before, .fa-rmb:before, .fa-yen:before, .fa-jpy:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f157"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-ruble:before, .fa-rouble:before, .fa-rub:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f158"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-won:before, .fa-krw:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f159"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-bitcoin:before, .fa-btc:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f15a"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-file:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f15b"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-file-text:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f15c"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-sort-alpha-asc:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f15d"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-sort-alpha-desc:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f15e"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-sort-amount-asc:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f160"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-sort-amount-desc:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f161"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-sort-numeric-asc:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f162"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-sort-numeric-desc:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f163"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-thumbs-up:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f164"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-thumbs-down:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f165"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-youtube-square:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f166"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-youtube:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f167"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-xing:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f168"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-xing-square:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f169"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-youtube-play:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f16a"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-dropbox:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f16b"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-stack-overflow:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f16c"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-instagram:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f16d"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-flickr:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f16e"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-adn:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f170"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-bitbucket:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f171"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-bitbucket-square:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f172"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-tumblr:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f173"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-tumblr-square:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f174"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-long-arrow-down:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f175"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-long-arrow-up:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f176"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-long-arrow-left:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f177"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-long-arrow-right:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f178"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-apple:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f179"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-windows:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f17a"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-android:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f17b"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-linux:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f17c"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-dribbble:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f17d"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-skype:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f17e"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-foursquare:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f180"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-trello:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f181"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-female:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f182"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-male:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f183"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-gittip:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f184"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-sun-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f185"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-moon-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f186"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-archive:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f187"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-bug:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f188"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-vk:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f189"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-weibo:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f18a"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-renren:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f18b"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-pagelines:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f18c"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-stack-exchange:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f18d"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-arrow-circle-o-right:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f18e"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-arrow-circle-o-left:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f190"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-toggle-left:before, .fa-caret-square-o-left:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f191"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-dot-circle-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f192"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-wheelchair:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f193"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-vimeo-square:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f194"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-turkish-lira:before, .fa-try:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f195"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-plus-square-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f196"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-space-shuttle:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f197"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-slack:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f198"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-envelope-square:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f199"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-wordpress:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f19a"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-openid:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f19b"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-institution:before, .fa-bank:before, .fa-university:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f19c"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-mortar-board:before, .fa-graduation-cap:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f19d"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-yahoo:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f19e"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-google:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f1a0"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-reddit:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f1a1"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-reddit-square:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f1a2"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-stumbleupon-circle:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f1a3"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-stumbleupon:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f1a4"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-delicious:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f1a5"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-digg:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f1a6"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-pied-piper-square:before, .fa-pied-piper:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f1a7"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-pied-piper-alt:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f1a8"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-drupal:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f1a9"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-joomla:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f1aa"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-language:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f1ab"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-fax:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f1ac"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-building:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f1ad"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-child:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f1ae"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-paw:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f1b0"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-spoon:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f1b1"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-cube:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f1b2"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-cubes:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f1b3"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-behance:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f1b4"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-behance-square:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f1b5"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-steam:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f1b6"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-steam-square:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f1b7"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-recycle:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f1b8"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-automobile:before, .fa-car:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f1b9"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-cab:before, .fa-taxi:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f1ba"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-tree:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f1bb"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-spotify:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f1bc"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-deviantart:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f1bd"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-soundcloud:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f1be"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-database:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f1c0"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-file-pdf-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f1c1"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-file-word-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f1c2"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-file-excel-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f1c3"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-file-powerpoint-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f1c4"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-file-photo-o:before, .fa-file-picture-o:before, .fa-file-image-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f1c5"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-file-zip-o:before, .fa-file-archive-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f1c6"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-file-sound-o:before, .fa-file-audio-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f1c7"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-file-movie-o:before, .fa-file-video-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f1c8"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-file-code-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f1c9"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-vine:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f1ca"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-codepen:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f1cb"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-jsfiddle:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f1cc"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-life-bouy:before, .fa-life-saver:before, .fa-support:before,
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-life-ring:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f1cd"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-circle-o-notch:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f1ce"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-ra:before, .fa-rebel:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f1d0"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-ge:before, .fa-empire:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f1d1"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-git-square:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f1d2"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-git:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f1d3"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-hacker-news:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f1d4"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-tencent-weibo:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f1d5"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-qq:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f1d6"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-wechat:before, .fa-weixin:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f1d7"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-send:before, .fa-paper-plane:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f1d8"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-send-o:before, .fa-paper-plane-o:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f1d9"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-history:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f1da"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-circle-thin:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f1db"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-header:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f1dc"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-paragraph:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f1dd"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-sliders:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f1de"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-share-alt:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f1e0"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-share-alt-square:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f1e1"; }
-
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-bomb:before {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f1e2"; }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/horizon/files/branding/css/solaris1.css	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,11072 @@
+/*
+ *  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 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.
+ */
+
+.datepicker {
+  padding: 4px;
+  border-radius: 4px;
+  direction: ltr; }
+
+  .datepicker-inline {
+    width: 220px; }
+
+    .datepicker.datepicker-rtl {
+      direction: rtl; }
+
+      .datepicker.datepicker-rtl table tr td span {
+        float: right; }
+
+        .datepicker-dropdown {
+          top: 0;
+          left: 0; }
+
+          .datepicker-dropdown:before {
+            content: '';
+            display: inline-block;
+            border-left: 7px solid transparent;
+            border-right: 7px solid transparent;
+            border-bottom: 7px solid #ccc;
+            border-top: 0;
+            border-bottom-color: rgba(0, 0, 0, 0.2);
+            position: absolute; }
+
+            .datepicker-dropdown:after {
+              content: '';
+              display: inline-block;
+              border-left: 6px solid transparent;
+              border-right: 6px solid transparent;
+              border-bottom: 6px solid #fff;
+              border-top: 0;
+              position: absolute; }
+
+              .datepicker-dropdown.datepicker-orient-left:before {
+                left: 6px; }
+
+                .datepicker-dropdown.datepicker-orient-left:after {
+                  left: 7px; }
+
+                  .datepicker-dropdown.datepicker-orient-right:before {
+                    right: 6px; }
+
+                    .datepicker-dropdown.datepicker-orient-right:after {
+                      right: 7px; }
+
+                      .datepicker-dropdown.datepicker-orient-top:before {
+                        top: -7px; }
+
+                        .datepicker-dropdown.datepicker-orient-top:after {
+                          top: -6px; }
+
+                          .datepicker-dropdown.datepicker-orient-bottom:before {
+                            bottom: -7px;
+                            border-bottom: 0;
+                            border-top: 7px solid #999; }
+
+                            .datepicker-dropdown.datepicker-orient-bottom:after {
+                              bottom: -6px;
+                              border-bottom: 0;
+                              border-top: 6px solid #fff; }
+
+                              .datepicker > div {
+                                display: none; }
+
+                                .datepicker.days div.datepicker-days {
+                                  display: block; }
+
+                                  .datepicker.months div.datepicker-months {
+                                    display: block; }
+
+                                    .datepicker.years div.datepicker-years {
+                                      display: block; }
+
+                                      .datepicker table {
+                                        margin: 0;
+                                        -webkit-touch-callout: none;
+                                        -webkit-user-select: none;
+                                        -khtml-user-select: none;
+                                        -moz-user-select: none;
+                                        -ms-user-select: none;
+                                        user-select: none; }
+
+                                        .datepicker table tr td, .datepicker table tr th {
+                                          text-align: center;
+                                          width: 30px;
+                                          height: 30px;
+                                          border-radius: 4px;
+                                          border: none; }
+
+                                          .table-striped .datepicker table tr td, .table-striped .datepicker table tr th {
+                                            background-color: transparent; }
+
+                                            .datepicker table tr td.day:hover, .datepicker table tr td.day.focused {
+                                              background: #eeeeee;
+                                              cursor: pointer; }
+
+                                              .datepicker table tr td.old, .datepicker table tr td.new {
+                                                color: #999999; }
+
+                                                .datepicker table tr td.disabled, .datepicker table tr td.disabled:hover {
+                                                  background: none;
+                                                  color: #999999;
+                                                  cursor: default; }
+
+                                                  .datepicker table tr td.today, .datepicker table tr td.today:hover,
+                                                  .datepicker table tr td.today.disabled,
+                                                  .datepicker table tr td.today.disabled:hover {
+                                                    color: #000000;
+                                                    background-color: #ffdb99;
+                                                    border-color: #ffb733; }
+
+                                                    .datepicker table tr td.today:hover, .datepicker table tr td.today:hover:hover,
+                                                    .datepicker table tr td.today.disabled:hover,
+                                                    .datepicker table tr td.today.disabled:hover:hover,
+                                                    .datepicker table tr td.today:focus, .datepicker table tr td.today:hover:focus,
+                                                    .datepicker table tr td.today.disabled:focus,
+                                                    .datepicker table tr td.today.disabled:hover:focus,
+                                                    .datepicker table tr td.today:active, .datepicker table tr td.today:hover:active,
+                                                    .datepicker table tr td.today.disabled:active,
+                                                    .datepicker table tr td.today.disabled:hover:active,
+                                                    .datepicker table tr td.today.active, .datepicker table tr td.today:hover.active,
+                                                    .datepicker table tr td.today.disabled.active,
+                                                    .datepicker table tr td.today.disabled:hover.active,
+                                                    .open .dropdown-toggle.datepicker table tr td.today,
+                                                    .open .dropdown-toggle.datepicker table tr td.today:hover,
+                                                    .open .dropdown-toggle.datepicker table tr td.today.disabled,
+                                                    .open .dropdown-toggle.datepicker table tr td.today.disabled:hover {
+                                                      color: #000000;
+                                                      background-color: #ffcd70;
+                                                      border-color: #f59e00; }
+
+                                                      .datepicker table tr td.today:active, .datepicker table tr td.today:hover:active,
+                                                      .datepicker table tr td.today.disabled:active,
+                                                      .datepicker table tr td.today.disabled:hover:active,
+                                                      .datepicker table tr td.today.active, .datepicker table tr td.today:hover.active,
+                                                      .datepicker table tr td.today.disabled.active,
+                                                      .datepicker table tr td.today.disabled:hover.active,
+                                                      .open .dropdown-toggle.datepicker table tr td.today,
+                                                      .open .dropdown-toggle.datepicker table tr td.today:hover,
+                                                      .open .dropdown-toggle.datepicker table tr td.today.disabled,
+                                                      .open .dropdown-toggle.datepicker table tr td.today.disabled:hover {
+                                                        background-image: none; }
+
+                                                        .datepicker table tr td.today.disabled,
+                                                        .datepicker table tr td.today:hover.disabled,
+                                                        .datepicker table tr td.today.disabled.disabled,
+                                                        .datepicker table tr td.today.disabled:hover.disabled,
+                                                        .datepicker table tr td.today[disabled],
+                                                        .datepicker table tr td.today:hover[disabled],
+                                                        .datepicker table tr td.today.disabled[disabled],
+                                                        .datepicker table tr td.today.disabled:hover[disabled],
+                                                        fieldset[disabled] .datepicker table tr td.today,
+                                                        fieldset[disabled] .datepicker table tr td.today:hover,
+                                                        fieldset[disabled] .datepicker table tr td.today.disabled,
+                                                        fieldset[disabled] .datepicker table tr td.today.disabled:hover,
+                                                        .datepicker table tr td.today.disabled:hover,
+                                                        .datepicker table tr td.today:hover.disabled:hover,
+                                                        .datepicker table tr td.today.disabled.disabled:hover,
+                                                        .datepicker table tr td.today.disabled:hover.disabled:hover,
+                                                        .datepicker table tr td.today[disabled]:hover,
+                                                        .datepicker table tr td.today:hover[disabled]:hover,
+                                                        .datepicker table tr td.today.disabled[disabled]:hover,
+                                                        .datepicker table tr td.today.disabled:hover[disabled]:hover,
+                                                        fieldset[disabled] .datepicker table tr td.today:hover,
+                                                        fieldset[disabled] .datepicker table tr td.today:hover:hover,
+                                                        fieldset[disabled] .datepicker table tr td.today.disabled:hover,
+                                                        fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,
+                                                        .datepicker table tr td.today.disabled:focus,
+                                                        .datepicker table tr td.today:hover.disabled:focus,
+                                                        .datepicker table tr td.today.disabled.disabled:focus,
+                                                        .datepicker table tr td.today.disabled:hover.disabled:focus,
+                                                        .datepicker table tr td.today[disabled]:focus,
+                                                        .datepicker table tr td.today:hover[disabled]:focus,
+                                                        .datepicker table tr td.today.disabled[disabled]:focus,
+                                                        .datepicker table tr td.today.disabled:hover[disabled]:focus,
+                                                        fieldset[disabled] .datepicker table tr td.today:focus,
+                                                        fieldset[disabled] .datepicker table tr td.today:hover:focus,
+                                                        fieldset[disabled] .datepicker table tr td.today.disabled:focus,
+                                                        fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,
+                                                        .datepicker table tr td.today.disabled:active,
+                                                        .datepicker table tr td.today:hover.disabled:active,
+                                                        .datepicker table tr td.today.disabled.disabled:active,
+                                                        .datepicker table tr td.today.disabled:hover.disabled:active,
+                                                        .datepicker table tr td.today[disabled]:active,
+                                                        .datepicker table tr td.today:hover[disabled]:active,
+                                                        .datepicker table tr td.today.disabled[disabled]:active,
+                                                        .datepicker table tr td.today.disabled:hover[disabled]:active,
+                                                        fieldset[disabled] .datepicker table tr td.today:active,
+                                                        fieldset[disabled] .datepicker table tr td.today:hover:active,
+                                                        fieldset[disabled] .datepicker table tr td.today.disabled:active,
+                                                        fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,
+                                                        .datepicker table tr td.today.disabled.active,
+                                                        .datepicker table tr td.today:hover.disabled.active,
+                                                        .datepicker table tr td.today.disabled.disabled.active,
+                                                        .datepicker table tr td.today.disabled:hover.disabled.active,
+                                                        .datepicker table tr td.today[disabled].active,
+                                                        .datepicker table tr td.today:hover[disabled].active,
+                                                        .datepicker table tr td.today.disabled[disabled].active,
+                                                        .datepicker table tr td.today.disabled:hover[disabled].active,
+                                                        fieldset[disabled] .datepicker table tr td.today.active,
+                                                        fieldset[disabled] .datepicker table tr td.today:hover.active,
+                                                        fieldset[disabled] .datepicker table tr td.today.disabled.active,
+                                                        fieldset[disabled] .datepicker table tr td.today.disabled:hover.active {
+                                                          background-color: #ffdb99;
+                                                          border-color: #ffb733; }
+
+                                                          .datepicker table tr td.today:hover:hover {
+                                                            color: #000; }
+
+                                                            .datepicker table tr td.today.active:hover {
+                                                              color: #fff; }
+
+                                                              .datepicker table tr td.range, .datepicker table tr td.range:hover,
+                                                              .datepicker table tr td.range.disabled,
+                                                              .datepicker table tr td.range.disabled:hover {
+                                                                background: #eeeeee;
+                                                                border-radius: 0; }
+
+                                                                .datepicker table tr td.range.today, .datepicker table tr td.range.today:hover,
+                                                                .datepicker table tr td.range.today.disabled,
+                                                                .datepicker table tr td.range.today.disabled:hover {
+                                                                  color: #000000;
+                                                                  background-color: #f7ca77;
+                                                                  border-color: #f1a417;
+                                                                  border-radius: 0; }
+
+                                                                  .datepicker table tr td.range.today:hover,
+                                                                  .datepicker table tr td.range.today:hover:hover,
+                                                                  .datepicker table tr td.range.today.disabled:hover,
+                                                                  .datepicker table tr td.range.today.disabled:hover:hover,
+                                                                  .datepicker table tr td.range.today:focus,
+                                                                  .datepicker table tr td.range.today:hover:focus,
+                                                                  .datepicker table tr td.range.today.disabled:focus,
+                                                                  .datepicker table tr td.range.today.disabled:hover:focus,
+                                                                  .datepicker table tr td.range.today:active,
+                                                                  .datepicker table tr td.range.today:hover:active,
+                                                                  .datepicker table tr td.range.today.disabled:active,
+                                                                  .datepicker table tr td.range.today.disabled:hover:active,
+                                                                  .datepicker table tr td.range.today.active,
+                                                                  .datepicker table tr td.range.today:hover.active,
+                                                                  .datepicker table tr td.range.today.disabled.active,
+                                                                  .datepicker table tr td.range.today.disabled:hover.active,
+                                                                  .open .dropdown-toggle.datepicker table tr td.range.today,
+                                                                  .open .dropdown-toggle.datepicker table tr td.range.today:hover,
+                                                                  .open .dropdown-toggle.datepicker table tr td.range.today.disabled,
+                                                                  .open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
+                                                                    color: #000000;
+                                                                    background-color: #f4bb51;
+                                                                    border-color: #bf800c; }
+
+                                                                    .datepicker table tr td.range.today:active,
+                                                                    .datepicker table tr td.range.today:hover:active,
+                                                                    .datepicker table tr td.range.today.disabled:active,
+                                                                    .datepicker table tr td.range.today.disabled:hover:active,
+                                                                    .datepicker table tr td.range.today.active,
+                                                                    .datepicker table tr td.range.today:hover.active,
+                                                                    .datepicker table tr td.range.today.disabled.active,
+                                                                    .datepicker table tr td.range.today.disabled:hover.active,
+                                                                    .open .dropdown-toggle.datepicker table tr td.range.today,
+                                                                    .open .dropdown-toggle.datepicker table tr td.range.today:hover,
+                                                                    .open .dropdown-toggle.datepicker table tr td.range.today.disabled,
+                                                                    .open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
+                                                                      background-image: none; }
+
+                                                                      .datepicker table tr td.range.today.disabled,
+                                                                      .datepicker table tr td.range.today:hover.disabled,
+                                                                      .datepicker table tr td.range.today.disabled.disabled,
+                                                                      .datepicker table tr td.range.today.disabled:hover.disabled,
+                                                                      .datepicker table tr td.range.today[disabled],
+                                                                      .datepicker table tr td.range.today:hover[disabled],
+                                                                      .datepicker table tr td.range.today.disabled[disabled],
+                                                                      .datepicker table tr td.range.today.disabled:hover[disabled],
+                                                                      fieldset[disabled] .datepicker table tr td.range.today,
+                                                                      fieldset[disabled] .datepicker table tr td.range.today:hover,
+                                                                      fieldset[disabled] .datepicker table tr td.range.today.disabled,
+                                                                      fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
+                                                                      .datepicker table tr td.range.today.disabled:hover,
+                                                                      .datepicker table tr td.range.today:hover.disabled:hover,
+                                                                      .datepicker table tr td.range.today.disabled.disabled:hover,
+                                                                      .datepicker table tr td.range.today.disabled:hover.disabled:hover,
+                                                                      .datepicker table tr td.range.today[disabled]:hover,
+                                                                      .datepicker table tr td.range.today:hover[disabled]:hover,
+                                                                      .datepicker table tr td.range.today.disabled[disabled]:hover,
+                                                                      .datepicker table tr td.range.today.disabled:hover[disabled]:hover,
+                                                                      fieldset[disabled] .datepicker table tr td.range.today:hover,
+                                                                      fieldset[disabled] .datepicker table tr td.range.today:hover:hover,
+                                                                      fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
+                                                                      fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,
+                                                                      .datepicker table tr td.range.today.disabled:focus,
+                                                                      .datepicker table tr td.range.today:hover.disabled:focus,
+                                                                      .datepicker table tr td.range.today.disabled.disabled:focus,
+                                                                      .datepicker table tr td.range.today.disabled:hover.disabled:focus,
+                                                                      .datepicker table tr td.range.today[disabled]:focus,
+                                                                      .datepicker table tr td.range.today:hover[disabled]:focus,
+                                                                      .datepicker table tr td.range.today.disabled[disabled]:focus,
+                                                                      .datepicker table tr td.range.today.disabled:hover[disabled]:focus,
+                                                                      fieldset[disabled] .datepicker table tr td.range.today:focus,
+                                                                      fieldset[disabled] .datepicker table tr td.range.today:hover:focus,
+                                                                      fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,
+                                                                      fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,
+                                                                      .datepicker table tr td.range.today.disabled:active,
+                                                                      .datepicker table tr td.range.today:hover.disabled:active,
+                                                                      .datepicker table tr td.range.today.disabled.disabled:active,
+                                                                      .datepicker table tr td.range.today.disabled:hover.disabled:active,
+                                                                      .datepicker table tr td.range.today[disabled]:active,
+                                                                      .datepicker table tr td.range.today:hover[disabled]:active,
+                                                                      .datepicker table tr td.range.today.disabled[disabled]:active,
+                                                                      .datepicker table tr td.range.today.disabled:hover[disabled]:active,
+                                                                      fieldset[disabled] .datepicker table tr td.range.today:active,
+                                                                      fieldset[disabled] .datepicker table tr td.range.today:hover:active,
+                                                                      fieldset[disabled] .datepicker table tr td.range.today.disabled:active,
+                                                                      fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,
+                                                                      .datepicker table tr td.range.today.disabled.active,
+                                                                      .datepicker table tr td.range.today:hover.disabled.active,
+                                                                      .datepicker table tr td.range.today.disabled.disabled.active,
+                                                                      .datepicker table tr td.range.today.disabled:hover.disabled.active,
+                                                                      .datepicker table tr td.range.today[disabled].active,
+                                                                      .datepicker table tr td.range.today:hover[disabled].active,
+                                                                      .datepicker table tr td.range.today.disabled[disabled].active,
+                                                                      .datepicker table tr td.range.today.disabled:hover[disabled].active,
+                                                                      fieldset[disabled] .datepicker table tr td.range.today.active,
+                                                                      fieldset[disabled] .datepicker table tr td.range.today:hover.active,
+                                                                      fieldset[disabled] .datepicker table tr td.range.today.disabled.active,
+                                                                      fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active {
+                                                                        background-color: #f7ca77;
+                                                                        border-color: #f1a417; }
+
+                                                                        .datepicker table tr td.selected, .datepicker table tr td.selected:hover,
+                                                                        .datepicker table tr td.selected.disabled,
+                                                                        .datepicker table tr td.selected.disabled:hover {
+                                                                          color: #ffffff;
+                                                                          background-color: #999999;
+                                                                          border-color: #555555;
+                                                                          text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); }
+
+                                                                          .datepicker table tr td.selected:hover,
+                                                                          .datepicker table tr td.selected:hover:hover,
+                                                                          .datepicker table tr td.selected.disabled:hover,
+                                                                          .datepicker table tr td.selected.disabled:hover:hover,
+                                                                          .datepicker table tr td.selected:focus,
+                                                                          .datepicker table tr td.selected:hover:focus,
+                                                                          .datepicker table tr td.selected.disabled:focus,
+                                                                          .datepicker table tr td.selected.disabled:hover:focus,
+                                                                          .datepicker table tr td.selected:active,
+                                                                          .datepicker table tr td.selected:hover:active,
+                                                                          .datepicker table tr td.selected.disabled:active,
+                                                                          .datepicker table tr td.selected.disabled:hover:active,
+                                                                          .datepicker table tr td.selected.active,
+                                                                          .datepicker table tr td.selected:hover.active,
+                                                                          .datepicker table tr td.selected.disabled.active,
+                                                                          .datepicker table tr td.selected.disabled:hover.active,
+                                                                          .open .dropdown-toggle.datepicker table tr td.selected,
+                                                                          .open .dropdown-toggle.datepicker table tr td.selected:hover,
+                                                                          .open .dropdown-toggle.datepicker table tr td.selected.disabled,
+                                                                          .open .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
+                                                                            color: #ffffff;
+                                                                            background-color: #858585;
+                                                                            border-color: #373737; }
+
+                                                                            .datepicker table tr td.selected:active,
+                                                                            .datepicker table tr td.selected:hover:active,
+                                                                            .datepicker table tr td.selected.disabled:active,
+                                                                            .datepicker table tr td.selected.disabled:hover:active,
+                                                                            .datepicker table tr td.selected.active,
+                                                                            .datepicker table tr td.selected:hover.active,
+                                                                            .datepicker table tr td.selected.disabled.active,
+                                                                            .datepicker table tr td.selected.disabled:hover.active,
+                                                                            .open .dropdown-toggle.datepicker table tr td.selected,
+                                                                            .open .dropdown-toggle.datepicker table tr td.selected:hover,
+                                                                            .open .dropdown-toggle.datepicker table tr td.selected.disabled,
+                                                                            .open .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
+                                                                              background-image: none; }
+
+                                                                              .datepicker table tr td.selected.disabled,
+                                                                              .datepicker table tr td.selected:hover.disabled,
+                                                                              .datepicker table tr td.selected.disabled.disabled,
+                                                                              .datepicker table tr td.selected.disabled:hover.disabled,
+                                                                              .datepicker table tr td.selected[disabled],
+                                                                              .datepicker table tr td.selected:hover[disabled],
+                                                                              .datepicker table tr td.selected.disabled[disabled],
+                                                                              .datepicker table tr td.selected.disabled:hover[disabled],
+                                                                              fieldset[disabled] .datepicker table tr td.selected,
+                                                                              fieldset[disabled] .datepicker table tr td.selected:hover,
+                                                                              fieldset[disabled] .datepicker table tr td.selected.disabled,
+                                                                              fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
+                                                                              .datepicker table tr td.selected.disabled:hover,
+                                                                              .datepicker table tr td.selected:hover.disabled:hover,
+                                                                              .datepicker table tr td.selected.disabled.disabled:hover,
+                                                                              .datepicker table tr td.selected.disabled:hover.disabled:hover,
+                                                                              .datepicker table tr td.selected[disabled]:hover,
+                                                                              .datepicker table tr td.selected:hover[disabled]:hover,
+                                                                              .datepicker table tr td.selected.disabled[disabled]:hover,
+                                                                              .datepicker table tr td.selected.disabled:hover[disabled]:hover,
+                                                                              fieldset[disabled] .datepicker table tr td.selected:hover,
+                                                                              fieldset[disabled] .datepicker table tr td.selected:hover:hover,
+                                                                              fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
+                                                                              fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,
+                                                                              .datepicker table tr td.selected.disabled:focus,
+                                                                              .datepicker table tr td.selected:hover.disabled:focus,
+                                                                              .datepicker table tr td.selected.disabled.disabled:focus,
+                                                                              .datepicker table tr td.selected.disabled:hover.disabled:focus,
+                                                                              .datepicker table tr td.selected[disabled]:focus,
+                                                                              .datepicker table tr td.selected:hover[disabled]:focus,
+                                                                              .datepicker table tr td.selected.disabled[disabled]:focus,
+                                                                              .datepicker table tr td.selected.disabled:hover[disabled]:focus,
+                                                                              fieldset[disabled] .datepicker table tr td.selected:focus,
+                                                                              fieldset[disabled] .datepicker table tr td.selected:hover:focus,
+                                                                              fieldset[disabled] .datepicker table tr td.selected.disabled:focus,
+                                                                              fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,
+                                                                              .datepicker table tr td.selected.disabled:active,
+                                                                              .datepicker table tr td.selected:hover.disabled:active,
+                                                                              .datepicker table tr td.selected.disabled.disabled:active,
+                                                                              .datepicker table tr td.selected.disabled:hover.disabled:active,
+                                                                              .datepicker table tr td.selected[disabled]:active,
+                                                                              .datepicker table tr td.selected:hover[disabled]:active,
+                                                                              .datepicker table tr td.selected.disabled[disabled]:active,
+                                                                              .datepicker table tr td.selected.disabled:hover[disabled]:active,
+                                                                              fieldset[disabled] .datepicker table tr td.selected:active,
+                                                                              fieldset[disabled] .datepicker table tr td.selected:hover:active,
+                                                                              fieldset[disabled] .datepicker table tr td.selected.disabled:active,
+                                                                              fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,
+                                                                              .datepicker table tr td.selected.disabled.active,
+                                                                              .datepicker table tr td.selected:hover.disabled.active,
+                                                                              .datepicker table tr td.selected.disabled.disabled.active,
+                                                                              .datepicker table tr td.selected.disabled:hover.disabled.active,
+                                                                              .datepicker table tr td.selected[disabled].active,
+                                                                              .datepicker table tr td.selected:hover[disabled].active,
+                                                                              .datepicker table tr td.selected.disabled[disabled].active,
+                                                                              .datepicker table tr td.selected.disabled:hover[disabled].active,
+                                                                              fieldset[disabled] .datepicker table tr td.selected.active,
+                                                                              fieldset[disabled] .datepicker table tr td.selected:hover.active,
+                                                                              fieldset[disabled] .datepicker table tr td.selected.disabled.active,
+                                                                              fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active {
+                                                                                background-color: #999999;
+                                                                                border-color: #555555; }
+
+                                                                                .datepicker table tr td.active, .datepicker table tr td.active:hover,
+                                                                                .datepicker table tr td.active.disabled,
+                                                                                .datepicker table tr td.active.disabled:hover {
+                                                                                  color: #ffffff;
+                                                                                  background-color: #428bca;
+                                                                                  border-color: #357ebd;
+                                                                                  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); }
+
+                                                                                  .datepicker table tr td.active:hover, .datepicker table tr td.active:hover:hover,
+                                                                                  .datepicker table tr td.active.disabled:hover,
+                                                                                  .datepicker table tr td.active.disabled:hover:hover,
+                                                                                  .datepicker table tr td.active:focus, .datepicker table tr td.active:hover:focus,
+                                                                                  .datepicker table tr td.active.disabled:focus,
+                                                                                  .datepicker table tr td.active.disabled:hover:focus,
+                                                                                  .datepicker table tr td.active:active, .datepicker table tr td.active:hover:active,
+                                                                                  .datepicker table tr td.active.disabled:active,
+                                                                                  .datepicker table tr td.active.disabled:hover:active,
+                                                                                  .datepicker table tr td.active.active, .datepicker table tr td.active:hover.active,
+                                                                                  .datepicker table tr td.active.disabled.active,
+                                                                                  .datepicker table tr td.active.disabled:hover.active,
+                                                                                  .open .dropdown-toggle.datepicker table tr td.active,
+                                                                                  .open .dropdown-toggle.datepicker table tr td.active:hover,
+                                                                                  .open .dropdown-toggle.datepicker table tr td.active.disabled,
+                                                                                  .open .dropdown-toggle.datepicker table tr td.active.disabled:hover {
+                                                                                    color: #ffffff;
+                                                                                    background-color: #3276b1;
+                                                                                    border-color: #285e8e; }
+
+                                                                                    .datepicker table tr td.active:active, .datepicker table tr td.active:hover:active,
+                                                                                    .datepicker table tr td.active.disabled:active,
+                                                                                    .datepicker table tr td.active.disabled:hover:active,
+                                                                                    .datepicker table tr td.active.active, .datepicker table tr td.active:hover.active,
+                                                                                    .datepicker table tr td.active.disabled.active,
+                                                                                    .datepicker table tr td.active.disabled:hover.active,
+                                                                                    .open .dropdown-toggle.datepicker table tr td.active,
+                                                                                    .open .dropdown-toggle.datepicker table tr td.active:hover,
+                                                                                    .open .dropdown-toggle.datepicker table tr td.active.disabled,
+                                                                                    .open .dropdown-toggle.datepicker table tr td.active.disabled:hover {
+                                                                                      background-image: none; }
+
+                                                                                      .datepicker table tr td.active.disabled,
+                                                                                      .datepicker table tr td.active:hover.disabled,
+                                                                                      .datepicker table tr td.active.disabled.disabled,
+                                                                                      .datepicker table tr td.active.disabled:hover.disabled,
+                                                                                      .datepicker table tr td.active[disabled],
+                                                                                      .datepicker table tr td.active:hover[disabled],
+                                                                                      .datepicker table tr td.active.disabled[disabled],
+                                                                                      .datepicker table tr td.active.disabled:hover[disabled],
+                                                                                      fieldset[disabled] .datepicker table tr td.active,
+                                                                                      fieldset[disabled] .datepicker table tr td.active:hover,
+                                                                                      fieldset[disabled] .datepicker table tr td.active.disabled,
+                                                                                      fieldset[disabled] .datepicker table tr td.active.disabled:hover,
+                                                                                      .datepicker table tr td.active.disabled:hover,
+                                                                                      .datepicker table tr td.active:hover.disabled:hover,
+                                                                                      .datepicker table tr td.active.disabled.disabled:hover,
+                                                                                      .datepicker table tr td.active.disabled:hover.disabled:hover,
+                                                                                      .datepicker table tr td.active[disabled]:hover,
+                                                                                      .datepicker table tr td.active:hover[disabled]:hover,
+                                                                                      .datepicker table tr td.active.disabled[disabled]:hover,
+                                                                                      .datepicker table tr td.active.disabled:hover[disabled]:hover,
+                                                                                      fieldset[disabled] .datepicker table tr td.active:hover,
+                                                                                      fieldset[disabled] .datepicker table tr td.active:hover:hover,
+                                                                                      fieldset[disabled] .datepicker table tr td.active.disabled:hover,
+                                                                                      fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,
+                                                                                      .datepicker table tr td.active.disabled:focus,
+                                                                                      .datepicker table tr td.active:hover.disabled:focus,
+                                                                                      .datepicker table tr td.active.disabled.disabled:focus,
+                                                                                      .datepicker table tr td.active.disabled:hover.disabled:focus,
+                                                                                      .datepicker table tr td.active[disabled]:focus,
+                                                                                      .datepicker table tr td.active:hover[disabled]:focus,
+                                                                                      .datepicker table tr td.active.disabled[disabled]:focus,
+                                                                                      .datepicker table tr td.active.disabled:hover[disabled]:focus,
+                                                                                      fieldset[disabled] .datepicker table tr td.active:focus,
+                                                                                      fieldset[disabled] .datepicker table tr td.active:hover:focus,
+                                                                                      fieldset[disabled] .datepicker table tr td.active.disabled:focus,
+                                                                                      fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,
+                                                                                      .datepicker table tr td.active.disabled:active,
+                                                                                      .datepicker table tr td.active:hover.disabled:active,
+                                                                                      .datepicker table tr td.active.disabled.disabled:active,
+                                                                                      .datepicker table tr td.active.disabled:hover.disabled:active,
+                                                                                      .datepicker table tr td.active[disabled]:active,
+                                                                                      .datepicker table tr td.active:hover[disabled]:active,
+                                                                                      .datepicker table tr td.active.disabled[disabled]:active,
+                                                                                      .datepicker table tr td.active.disabled:hover[disabled]:active,
+                                                                                      fieldset[disabled] .datepicker table tr td.active:active,
+                                                                                      fieldset[disabled] .datepicker table tr td.active:hover:active,
+                                                                                      fieldset[disabled] .datepicker table tr td.active.disabled:active,
+                                                                                      fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,
+                                                                                      .datepicker table tr td.active.disabled.active,
+                                                                                      .datepicker table tr td.active:hover.disabled.active,
+                                                                                      .datepicker table tr td.active.disabled.disabled.active,
+                                                                                      .datepicker table tr td.active.disabled:hover.disabled.active,
+                                                                                      .datepicker table tr td.active[disabled].active,
+                                                                                      .datepicker table tr td.active:hover[disabled].active,
+                                                                                      .datepicker table tr td.active.disabled[disabled].active,
+                                                                                      .datepicker table tr td.active.disabled:hover[disabled].active,
+                                                                                      fieldset[disabled] .datepicker table tr td.active.active,
+                                                                                      fieldset[disabled] .datepicker table tr td.active:hover.active,
+                                                                                      fieldset[disabled] .datepicker table tr td.active.disabled.active,
+                                                                                      fieldset[disabled] .datepicker table tr td.active.disabled:hover.active {
+                                                                                        background-color: #428bca;
+                                                                                        border-color: #357ebd; }
+
+                                                                                        .datepicker table tr td span {
+                                                                                          display: block;
+                                                                                          width: 23%;
+                                                                                          height: 54px;
+                                                                                          line-height: 54px;
+                                                                                          float: left;
+                                                                                          margin: 1%;
+                                                                                          cursor: pointer;
+                                                                                          border-radius: 4px; }
+
+                                                                                          .datepicker table tr td span:hover {
+                                                                                            background: #eeeeee; }
+
+                                                                                            .datepicker table tr td span.disabled, .datepicker table tr td span.disabled:hover {
+                                                                                              background: none;
+                                                                                              color: #999999;
+                                                                                              cursor: default; }
+
+                                                                                              .datepicker table tr td span.active, .datepicker table tr td span.active:hover,
+                                                                                              .datepicker table tr td span.active.disabled,
+                                                                                              .datepicker table tr td span.active.disabled:hover {
+                                                                                                color: #ffffff;
+                                                                                                background-color: #428bca;
+                                                                                                border-color: #357ebd;
+                                                                                                text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); }
+
+                                                                                                .datepicker table tr td span.active:hover,
+                                                                                                .datepicker table tr td span.active:hover:hover,
+                                                                                                .datepicker table tr td span.active.disabled:hover,
+                                                                                                .datepicker table tr td span.active.disabled:hover:hover,
+                                                                                                .datepicker table tr td span.active:focus,
+                                                                                                .datepicker table tr td span.active:hover:focus,
+                                                                                                .datepicker table tr td span.active.disabled:focus,
+                                                                                                .datepicker table tr td span.active.disabled:hover:focus,
+                                                                                                .datepicker table tr td span.active:active,
+                                                                                                .datepicker table tr td span.active:hover:active,
+                                                                                                .datepicker table tr td span.active.disabled:active,
+                                                                                                .datepicker table tr td span.active.disabled:hover:active,
+                                                                                                .datepicker table tr td span.active.active,
+                                                                                                .datepicker table tr td span.active:hover.active,
+                                                                                                .datepicker table tr td span.active.disabled.active,
+                                                                                                .datepicker table tr td span.active.disabled:hover.active,
+                                                                                                .open .dropdown-toggle.datepicker table tr td span.active,
+                                                                                                .open .dropdown-toggle.datepicker table tr td span.active:hover,
+                                                                                                .open .dropdown-toggle.datepicker table tr td span.active.disabled,
+                                                                                                .open .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
+                                                                                                  color: #ffffff;
+                                                                                                  background-color: #3276b1;
+                                                                                                  border-color: #285e8e; }
+
+                                                                                                  .datepicker table tr td span.active:active,
+                                                                                                  .datepicker table tr td span.active:hover:active,
+                                                                                                  .datepicker table tr td span.active.disabled:active,
+                                                                                                  .datepicker table tr td span.active.disabled:hover:active,
+                                                                                                  .datepicker table tr td span.active.active,
+                                                                                                  .datepicker table tr td span.active:hover.active,
+                                                                                                  .datepicker table tr td span.active.disabled.active,
+                                                                                                  .datepicker table tr td span.active.disabled:hover.active,
+                                                                                                  .open .dropdown-toggle.datepicker table tr td span.active,
+                                                                                                  .open .dropdown-toggle.datepicker table tr td span.active:hover,
+                                                                                                  .open .dropdown-toggle.datepicker table tr td span.active.disabled,
+                                                                                                  .open .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
+                                                                                                    background-image: none; }
+
+                                                                                                    .datepicker table tr td span.active.disabled,
+                                                                                                    .datepicker table tr td span.active:hover.disabled,
+                                                                                                    .datepicker table tr td span.active.disabled.disabled,
+                                                                                                    .datepicker table tr td span.active.disabled:hover.disabled,
+                                                                                                    .datepicker table tr td span.active[disabled],
+                                                                                                    .datepicker table tr td span.active:hover[disabled],
+                                                                                                    .datepicker table tr td span.active.disabled[disabled],
+                                                                                                    .datepicker table tr td span.active.disabled:hover[disabled],
+                                                                                                    fieldset[disabled] .datepicker table tr td span.active,
+                                                                                                    fieldset[disabled] .datepicker table tr td span.active:hover,
+                                                                                                    fieldset[disabled] .datepicker table tr td span.active.disabled,
+                                                                                                    fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
+                                                                                                    .datepicker table tr td span.active.disabled:hover,
+                                                                                                    .datepicker table tr td span.active:hover.disabled:hover,
+                                                                                                    .datepicker table tr td span.active.disabled.disabled:hover,
+                                                                                                    .datepicker table tr td span.active.disabled:hover.disabled:hover,
+                                                                                                    .datepicker table tr td span.active[disabled]:hover,
+                                                                                                    .datepicker table tr td span.active:hover[disabled]:hover,
+                                                                                                    .datepicker table tr td span.active.disabled[disabled]:hover,
+                                                                                                    .datepicker table tr td span.active.disabled:hover[disabled]:hover,
+                                                                                                    fieldset[disabled] .datepicker table tr td span.active:hover,
+                                                                                                    fieldset[disabled] .datepicker table tr td span.active:hover:hover,
+                                                                                                    fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
+                                                                                                    fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,
+                                                                                                    .datepicker table tr td span.active.disabled:focus,
+                                                                                                    .datepicker table tr td span.active:hover.disabled:focus,
+                                                                                                    .datepicker table tr td span.active.disabled.disabled:focus,
+                                                                                                    .datepicker table tr td span.active.disabled:hover.disabled:focus,
+                                                                                                    .datepicker table tr td span.active[disabled]:focus,
+                                                                                                    .datepicker table tr td span.active:hover[disabled]:focus,
+                                                                                                    .datepicker table tr td span.active.disabled[disabled]:focus,
+                                                                                                    .datepicker table tr td span.active.disabled:hover[disabled]:focus,
+                                                                                                    fieldset[disabled] .datepicker table tr td span.active:focus,
+                                                                                                    fieldset[disabled] .datepicker table tr td span.active:hover:focus,
+                                                                                                    fieldset[disabled] .datepicker table tr td span.active.disabled:focus,
+                                                                                                    fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,
+                                                                                                    .datepicker table tr td span.active.disabled:active,
+                                                                                                    .datepicker table tr td span.active:hover.disabled:active,
+                                                                                                    .datepicker table tr td span.active.disabled.disabled:active,
+                                                                                                    .datepicker table tr td span.active.disabled:hover.disabled:active,
+                                                                                                    .datepicker table tr td span.active[disabled]:active,
+                                                                                                    .datepicker table tr td span.active:hover[disabled]:active,
+                                                                                                    .datepicker table tr td span.active.disabled[disabled]:active,
+                                                                                                    .datepicker table tr td span.active.disabled:hover[disabled]:active,
+                                                                                                    fieldset[disabled] .datepicker table tr td span.active:active,
+                                                                                                    fieldset[disabled] .datepicker table tr td span.active:hover:active,
+                                                                                                    fieldset[disabled] .datepicker table tr td span.active.disabled:active,
+                                                                                                    fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,
+                                                                                                    .datepicker table tr td span.active.disabled.active,
+                                                                                                    .datepicker table tr td span.active:hover.disabled.active,
+                                                                                                    .datepicker table tr td span.active.disabled.disabled.active,
+                                                                                                    .datepicker table tr td span.active.disabled:hover.disabled.active,
+                                                                                                    .datepicker table tr td span.active[disabled].active,
+                                                                                                    .datepicker table tr td span.active:hover[disabled].active,
+                                                                                                    .datepicker table tr td span.active.disabled[disabled].active,
+                                                                                                    .datepicker table tr td span.active.disabled:hover[disabled].active,
+                                                                                                    fieldset[disabled] .datepicker table tr td span.active.active,
+                                                                                                    fieldset[disabled] .datepicker table tr td span.active:hover.active,
+                                                                                                    fieldset[disabled] .datepicker table tr td span.active.disabled.active,
+                                                                                                    fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active {
+                                                                                                      background-color: #428bca;
+                                                                                                      border-color: #357ebd; }
+
+                                                                                                      .datepicker table tr td span.old, .datepicker table tr td span.new {
+                                                                                                        color: #999999; }
+
+                                                                                                        .datepicker th.datepicker-switch {
+                                                                                                          width: 145px; }
+
+                                                                                                          .datepicker thead tr:first-child th, .datepicker tfoot tr th {
+                                                                                                            cursor: pointer; }
+
+                                                                                                            .datepicker thead tr:first-child th:hover, .datepicker tfoot tr th:hover {
+                                                                                                              background: #eeeeee; }
+
+                                                                                                              .datepicker .cw {
+                                                                                                                font-size: 10px;
+                                                                                                                width: 12px;
+                                                                                                                padding: 0 2px 0 5px;
+                                                                                                                vertical-align: middle; }
+
+                                                                                                                .datepicker thead tr:first-child th.cw {
+                                                                                                                  cursor: default;
+                                                                                                                  background-color: transparent; }
+
+                                                                                                                  .input-group.date .input-group-addon i {
+                                                                                                                    cursor: pointer;
+                                                                                                                    width: 16px;
+                                                                                                                    height: 16px; }
+
+                                                                                                                    .input-daterange input {
+                                                                                                                      text-align: center; }
+
+                                                                                                                      .input-daterange input:first-child {
+                                                                                                                        border-radius: 3px 0 0 3px; }
+
+                                                                                                                        .input-daterange input:last-child {
+                                                                                                                          border-radius: 0 3px 3px 0; }
+
+                                                                                                                          .input-daterange .input-group-addon {
+                                                                                                                            width: auto;
+                                                                                                                            min-width: 16px;
+                                                                                                                            padding: 4px 5px;
+                                                                                                                            font-weight: normal;
+                                                                                                                            line-height: 1.42857;
+                                                                                                                            text-align: center;
+                                                                                                                            text-shadow: 0 1px 0 #fff;
+                                                                                                                            vertical-align: middle;
+                                                                                                                            background-color: #eeeeee;
+                                                                                                                            border: solid #cccccc;
+                                                                                                                            border-width: 1px 0;
+                                                                                                                            margin-left: -5px;
+                                                                                                                            margin-right: -5px; }
+
+                                                                                                                            .datepicker.dropdown-menu {
+                                                                                                                              position: absolute;
+                                                                                                                              top: 100%;
+                                                                                                                              left: 0;
+                                                                                                                              z-index: 1000;
+                                                                                                                              float: left;
+                                                                                                                              display: none;
+                                                                                                                              min-width: 160px;
+                                                                                                                              list-style: none;
+                                                                                                                              background-color: #ffffff;
+                                                                                                                              border: 1px solid #ccc;
+                                                                                                                              border: 1px solid rgba(0, 0, 0, 0.2);
+                                                                                                                              border-radius: 5px;
+                                                                                                                              -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+                                                                                                                              -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+                                                                                                                              box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+                                                                                                                              -webkit-background-clip: padding-box;
+                                                                                                                              -moz-background-clip: padding;
+                                                                                                                              background-clip: padding-box;
+                                                                                                                              *border-right-width: 2px;
+                                                                                                                              *border-bottom-width: 2px;
+                                                                                                                              color: #333333;
+                                                                                                                              font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+                                                                                                                              font-size: 13px;
+                                                                                                                              line-height: 1.42857; }
+
+                                                                                                                              .datepicker.dropdown-menu th, .datepicker.datepicker-inline th,
+                                                                                                                              .datepicker.dropdown-menu td, .datepicker.datepicker-inline td {
+                                                                                                                                padding: 0px 5px; }
+.rickshaw_graph .detail {
+  pointer-events: none;
+  position: absolute;
+  top: 0;
+  z-index: 2;
+  background: rgba(0, 0, 0, 0.1);
+  bottom: 0;
+  width: 1px;
+  transition: opacity 0.25s linear;
+  -moz-transition: opacity 0.25s linear;
+  -o-transition: opacity 0.25s linear;
+  -webkit-transition: opacity 0.25s linear; }
+
+  .rickshaw_graph .detail.inactive {
+    opacity: 0; }
+
+    .rickshaw_graph .detail .item.active {
+      opacity: 1; }
+
+      .rickshaw_graph .detail .x_label {
+        font-family: Arial, sans-serif;
+        border-radius: 3px;
+        padding: 6px;
+        opacity: 0.5;
+        border: 1px solid #e0e0e0;
+        font-size: 12px;
+        position: absolute;
+        background: white;
+        white-space: nowrap; }
+
+        .rickshaw_graph .detail .x_label.left {
+          left: 0; }
+
+          .rickshaw_graph .detail .x_label.right {
+            right: 0; }
+
+            .rickshaw_graph .detail .item {
+              position: absolute;
+              z-index: 2;
+              border-radius: 3px;
+              padding: 0.25em;
+              font-size: 12px;
+              font-family: Arial, sans-serif;
+              opacity: 0;
+              background: rgba(0, 0, 0, 0.4);
+              color: white;
+              border: 1px solid rgba(0, 0, 0, 0.4);
+              margin-left: 1em;
+              margin-right: 1em;
+              margin-top: -1em;
+              white-space: nowrap; }
+
+              .rickshaw_graph .detail .item.left {
+                left: 0; }
+
+                .rickshaw_graph .detail .item.right {
+                  right: 0; }
+
+                  .rickshaw_graph .detail .item.active {
+                    opacity: 1;
+                    background: rgba(0, 0, 0, 0.8); }
+
+                    .rickshaw_graph .detail .item:after {
+                      position: absolute;
+                      display: block;
+                      width: 0;
+                      height: 0;
+                      content: "";
+                      border: 5px solid transparent; }
+
+                      .rickshaw_graph .detail .item.left:after {
+                        top: 1em;
+                        left: -5px;
+                        margin-top: -5px;
+                        border-right-color: rgba(0, 0, 0, 0.8);
+                        border-left-width: 0; }
+
+                        .rickshaw_graph .detail .item.right:after {
+                          top: 1em;
+                          right: -5px;
+                          margin-top: -5px;
+                          border-left-color: rgba(0, 0, 0, 0.8);
+                          border-right-width: 0; }
+
+                          .rickshaw_graph .detail .dot {
+                            width: 4px;
+                            height: 4px;
+                            margin-left: -3px;
+                            margin-top: -3.5px;
+                            border-radius: 5px;
+                            position: absolute;
+                            box-shadow: 0 0 2px rgba(0, 0, 0, 0.6);
+                            box-sizing: content-box;
+                            -moz-box-sizing: content-box;
+                            background: white;
+                            border-width: 2px;
+                            border-style: solid;
+                            display: none;
+                            background-clip: padding-box; }
+
+                            .rickshaw_graph .detail .dot.active {
+                              display: block; }
+
+                              .rickshaw_graph {
+                                position: relative; }
+
+                                .rickshaw_graph svg {
+                                  display: block;
+                                  overflow: hidden; }
+
+                                  .rickshaw_graph .x_tick {
+                                    position: absolute;
+                                    top: 0;
+                                    bottom: 0;
+                                    width: 0px;
+                                    border-left: 1px dotted rgba(0, 0, 0, 0.2);
+                                    pointer-events: none; }
+
+                                    .rickshaw_graph .x_tick .title {
+                                      position: absolute;
+                                      font-size: 12px;
+                                      font-family: Arial, sans-serif;
+                                      opacity: 0.5;
+                                      white-space: nowrap;
+                                      margin-left: 3px;
+                                      bottom: 1px; }
+
+                                      .rickshaw_annotation_timeline {
+                                        height: 1px;
+                                        border-top: 1px solid #e0e0e0;
+                                        margin-top: 10px;
+                                        position: relative; }
+
+                                        .rickshaw_annotation_timeline .annotation {
+                                          position: absolute;
+                                          height: 6px;
+                                          width: 6px;
+                                          margin-left: -2px;
+                                          top: -3px;
+                                          border-radius: 5px;
+                                          background-color: rgba(0, 0, 0, 0.25); }
+
+                                          .rickshaw_graph .annotation_line {
+                                            position: absolute;
+                                            top: 0;
+                                            bottom: -6px;
+                                            width: 0px;
+                                            border-left: 2px solid rgba(0, 0, 0, 0.3);
+                                            display: none; }
+
+                                            .rickshaw_graph .annotation_line.active {
+                                              display: block; }
+
+                                              .rickshaw_graph .annotation_range {
+                                                background: rgba(0, 0, 0, 0.1);
+                                                display: none;
+                                                position: absolute;
+                                                top: 0;
+                                                bottom: -6px; }
+
+                                                .rickshaw_graph .annotation_range.active {
+                                                  display: block; }
+
+                                                  .rickshaw_graph .annotation_range.active.offscreen {
+                                                    display: none; }
+
+                                                    .rickshaw_annotation_timeline .annotation .content {
+                                                      background: white;
+                                                      color: black;
+                                                      opacity: 0.9;
+                                                      padding: 5px 5px;
+                                                      box-shadow: 0 0 2px rgba(0, 0, 0, 0.8);
+                                                      border-radius: 3px;
+                                                      position: relative;
+                                                      z-index: 20;
+                                                      font-size: 12px;
+                                                      padding: 6px 8px 8px;
+                                                      top: 18px;
+                                                      left: -11px;
+                                                      width: 160px;
+                                                      display: none;
+                                                      cursor: pointer; }
+
+                                                      .rickshaw_annotation_timeline .annotation .content:before {
+                                                        content: "\25b2";
+                                                        position: absolute;
+                                                        top: -11px;
+                                                        color: white;
+                                                        text-shadow: 0 -1px 1px rgba(0, 0, 0, 0.8); }
+
+                                                        .rickshaw_annotation_timeline .annotation.active,
+                                                        .rickshaw_annotation_timeline .annotation:hover {
+                                                          background-color: rgba(0, 0, 0, 0.8);
+                                                          cursor: none; }
+
+                                                          .rickshaw_annotation_timeline .annotation .content:hover {
+                                                            z-index: 50; }
+
+                                                            .rickshaw_annotation_timeline .annotation.active .content {
+                                                              display: block; }
+
+                                                              .rickshaw_annotation_timeline .annotation:hover .content {
+                                                                display: block;
+                                                                z-index: 50; }
+
+                                                                .rickshaw_graph .y_axis, .rickshaw_graph .x_axis_d3 {
+                                                                  fill: none; }
+
+                                                                  .rickshaw_graph .y_ticks .tick line, .rickshaw_graph .x_ticks_d3 .tick {
+                                                                    stroke: rgba(0, 0, 0, 0.16);
+                                                                    stroke-width: 2px;
+                                                                    shape-rendering: crisp-edges;
+                                                                    pointer-events: none; }
+
+                                                                    .rickshaw_graph .y_grid .tick, .rickshaw_graph .x_grid_d3 .tick {
+                                                                      z-index: -1;
+                                                                      stroke: rgba(0, 0, 0, 0.2);
+                                                                      stroke-width: 1px;
+                                                                      stroke-dasharray: 1 1; }
+
+                                                                      .rickshaw_graph .y_grid .tick[data-y-value="0"] {
+                                                                        stroke-dasharray: 1 0; }
+
+                                                                        .rickshaw_graph .y_grid path, .rickshaw_graph .x_grid_d3 path {
+                                                                          fill: none;
+                                                                          stroke: none; }
+
+                                                                          .rickshaw_graph .y_ticks path, .rickshaw_graph .x_ticks_d3 path {
+                                                                            fill: none;
+                                                                            stroke: #808080; }
+
+                                                                            .rickshaw_graph .y_ticks text, .rickshaw_graph .x_ticks_d3 text {
+                                                                              opacity: 0.5;
+                                                                              font-size: 12px;
+                                                                              pointer-events: none; }
+
+                                                                              .rickshaw_graph .x_tick.glow .title, .rickshaw_graph .y_ticks.glow text {
+                                                                                fill: black;
+                                                                                color: black;
+                                                                                text-shadow: -1px 1px 0 rgba(255, 255, 255, 0.1), 1px -1px 0 rgba(255, 255, 255, 0.1),
+                                                                                                                                                                1px 1px 0 rgba(255, 255, 255, 0.1), 0px 1px 0 rgba(255, 255, 255, 0.1),
+                                                                                                                                                                0px -1px 0 rgba(255, 255, 255, 0.1), 1px 0px 0 rgba(255, 255, 255, 0.1),
+                                                                                                                                                                -1px 0px 0 rgba(255, 255, 255, 0.1), -1px -1px 0 rgba(255, 255, 255, 0.1); }
+
+                                                                                .rickshaw_graph .x_tick.inverse .title, .rickshaw_graph .y_ticks.inverse text {
+                                                                                  fill: white;
+                                                                                  color: white;
+                                                                                  text-shadow: -1px 1px 0 rgba(0, 0, 0, 0.8), 1px -1px 0 rgba(0, 0, 0, 0.8), 1px 1px 0 rgba(0,
+                                                                                                                                                                    0, 0, 0.8), 0px 1px 0 rgba(0, 0, 0, 0.8), 0px -1px 0 rgba(0, 0, 0, 0.8),
+                                                                                                                                                                    1px 0px 0 rgba(0, 0, 0, 0.8), -1px 0px 0 rgba(0, 0, 0, 0.8), -1px -1px 0 rgba(0,
+                                                                                                                                                                    0, 0, 0.8); }
+
+                                                                                  .rickshaw_legend {
+                                                                                    font-family: Arial;
+                                                                                    font-size: 12px;
+                                                                                    color: white;
+                                                                                    background: #404040;
+                                                                                    display: inline-block;
+                                                                                    padding: 12px 5px;
+                                                                                    border-radius: 2px;
+                                                                                    position: relative; }
+
+                                                                                    .rickshaw_legend:hover {
+                                                                                      z-index: 10; }
+
+                                                                                      .rickshaw_legend .swatch {
+                                                                                        width: 10px;
+                                                                                        height: 10px;
+                                                                                        border: 1px solid rgba(0, 0, 0, 0.2); }
+
+                                                                                        .rickshaw_legend .line {
+                                                                                          clear: both;
+                                                                                          line-height: 140%;
+                                                                                          padding-right: 15px; }
+
+                                                                                          .rickshaw_legend .line .swatch {
+                                                                                            display: inline-block;
+                                                                                            margin-right: 3px;
+                                                                                            border-radius: 2px; }
+
+                                                                                            .rickshaw_legend .label {
+                                                                                              margin: 0;
+                                                                                              white-space: nowrap;
+                                                                                              display: inline;
+                                                                                              font-size: inherit;
+                                                                                              background-color: transparent;
+                                                                                              color: inherit;
+                                                                                              font-weight: normal;
+                                                                                              line-height: normal;
+                                                                                              padding: 0px;
+                                                                                              text-shadow: none; }
+
+                                                                                              .rickshaw_legend .action:hover {
+                                                                                                opacity: 0.6; }
+
+                                                                                                .rickshaw_legend .action {
+                                                                                                  margin-right: 0.2em;
+                                                                                                  font-size: 10px;
+                                                                                                  opacity: 0.2;
+                                                                                                  cursor: pointer;
+                                                                                                  font-size: 14px; }
+
+                                                                                                  .rickshaw_legend .line.disabled {
+                                                                                                    opacity: 0.4; }
+
+                                                                                                    .rickshaw_legend ul {
+                                                                                                      list-style-type: none;
+                                                                                                      margin: 0;
+                                                                                                      padding: 0;
+                                                                                                      margin: 2px;
+                                                                                                      cursor: pointer; }
+
+                                                                                                      .rickshaw_legend li {
+                                                                                                        padding: 0 0 0 2px;
+                                                                                                        min-width: 80px;
+                                                                                                        white-space: nowrap; }
+
+                                                                                                        .rickshaw_legend li:hover {
+                                                                                                          background: rgba(255, 255, 255, 0.08);
+                                                                                                          border-radius: 3px; }
+
+                                                                                                          .rickshaw_legend li:active {
+                                                                                                            background: rgba(255, 255, 255, 0.2);
+                                                                                                            border-radius: 3px; }
+html {
+  font-family: sans-serif;
+  -ms-text-size-adjust: 100%;
+  -webkit-text-size-adjust: 100%; }
+
+  body {
+    margin: 0; }
+
+    article, aside, details, figcaption, figure, footer, header, hgroup, main,
+    nav, section, summary {
+      display: block; }
+
+      audio, canvas, progress, video {
+        display: inline-block;
+        vertical-align: baseline; }
+
+        audio:not([controls]) {
+          display: none;
+          height: 0; }
+
+          [hidden], template {
+            display: none; }
+
+            a {
+              background: transparent; }
+
+              a:active, a:hover {
+                outline: 0; }
+
+                abbr[title] {
+                  border-bottom: 1px dotted; }
+
+                  b, strong {
+                    font-weight: bold; }
+
+                    dfn {
+                      font-style: italic; }
+
+                      h1 {
+                        font-size: 2em;
+                        margin: 0.67em 0; }
+
+                        mark {
+                          background: #ff0;
+                          color: #000; }
+
+                          small {
+                            font-size: 80%; }
+
+                            sub, sup {
+                              font-size: 75%;
+                              line-height: 0;
+                              position: relative;
+                              vertical-align: baseline; }
+
+                              sup {
+                                top: -0.5em; }
+
+                                sub {
+                                  bottom: -0.25em; }
+
+                                  img {
+                                    border: 0; }
+
+                                    svg:not(:root) {
+                                      overflow: hidden; }
+
+                                      figure {
+                                        margin: 1em 40px; }
+
+                                        hr {
+                                          -moz-box-sizing: content-box;
+                                          box-sizing: content-box;
+                                          height: 0; }
+
+                                          pre {
+                                            overflow: auto; }
+
+                                            code, kbd, pre, samp {
+                                              font-family: monospace, monospace;
+                                              font-size: 1em; }
+
+                                              button, input, optgroup, select, textarea {
+                                                color: inherit;
+                                                font: inherit;
+                                                margin: 0; }
+
+                                                button {
+                                                  overflow: visible; }
+
+                                                  button, select {
+                                                    text-transform: none; }
+
+                                                    button, html input[type="button"], input[type="reset"], input[type="submit"] {
+                                                      -webkit-appearance: button;
+                                                      cursor: pointer; }
+
+                                                      button[disabled], html input[disabled] {
+                                                        cursor: default; }
+
+                                                        button::-moz-focus-inner, input::-moz-focus-inner {
+                                                          border: 0;
+                                                          padding: 0; }
+
+                                                          input {
+                                                            line-height: normal; }
+
+                                                            input[type="checkbox"], input[type="radio"] {
+                                                              box-sizing: border-box;
+                                                              padding: 0; }
+
+                                                              input[type="number"]::-webkit-inner-spin-button,
+                                                              input[type="number"]::-webkit-outer-spin-button {
+                                                                height: auto; }
+
+                                                                input[type="search"] {
+                                                                  -webkit-appearance: textfield;
+                                                                  -moz-box-sizing: content-box;
+                                                                  -webkit-box-sizing: content-box;
+                                                                  box-sizing: content-box; }
+
+                                                                  input[type="search"]::-webkit-search-cancel-button,
+                                                                  input[type="search"]::-webkit-search-decoration {
+                                                                    -webkit-appearance: none; }
+
+                                                                    fieldset {
+                                                                      border: 1px solid #c0c0c0;
+                                                                      margin: 0 2px;
+                                                                      padding: 0.35em 0.625em 0.75em; }
+
+                                                                      legend {
+                                                                        border: 0;
+                                                                        padding: 0; }
+
+                                                                        textarea {
+                                                                          overflow: auto; }
+
+                                                                          optgroup {
+                                                                            font-weight: bold; }
+
+                                                                            table {
+                                                                              border-collapse: collapse;
+                                                                              border-spacing: 0; }
+
+                                                                              td, th {
+                                                                                padding: 0; }
+@media print {
+  * {
+    text-shadow: none !important;
+    color: #000 !important;
+    background: transparent !important;
+    box-shadow: none !important;   }
+    a, a:visited {
+      text-decoration: underline;   }
+      a[href]:after {
+        content: " (" attr(href) ")";   }
+        abbr[title]:after {
+          content: " (" attr(title) ")";   }
+          a[href^="javascript:"]:after, a[href^="#"]:after {
+            content: "";   }
+            pre, blockquote {
+              border: 1px solid #999;
+              page-break-inside: avoid;   }
+              thead {
+                display: table-header-group;   }
+                tr, img {
+                  page-break-inside: avoid;   }
+                  img {
+                    max-width: 100% !important;   }
+                    p, h2, h3 {
+                      orphans: 3;
+                      widows: 3;   }
+                      h2, h3 {
+                        page-break-after: avoid;   }
+                        select {
+                          background: #fff !important;   }
+                          .navbar {
+                            display: none;   }
+                            .table td, .table th {
+                              background-color: #fff !important;   }
+  .btn > .caret, .dropup > .btn > .caret {
+    border-top-color: #000 !important;   }
+  .label {
+    border: 1px solid #000;   }
+    .table {
+      border-collapse: collapse !important;   }
+      .table-bordered th, .table-bordered td {
+        border: 1px solid #ddd !important;   }
+}
+@font-face {
+  font-family: 'Glyphicons Halflings';
+  src: url('/horizon/static/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.eot?7ad17c6085de');
+  src: url('/horizon/static/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.eot?&7ad17c6085de#iefix') format('embedded-opentype'),
+    url('/horizon/static/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff?68ed1dac06bf') format('woff'),
+    url('/horizon/static/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.ttf?e49d52e74b76') format('truetype'),
+    url('/horizon/static/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.svg?32941d633004#glyphicons_halflingsregular') format('svg'); }
+
+  .glyphicon {
+    position: relative;
+    top: 1px;
+    display: inline-block;
+    font-family: 'Glyphicons Halflings';
+    font-style: normal;
+    font-weight: normal;
+    line-height: 1;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale; }
+
+    .glyphicon-asterisk:before {
+      content: "\2a"; }
+
+.glyphicon-plus:before {
+  content: "\2b"; }
+
+.glyphicon-euro:before {
+  content: "\20ac"; }
+
+.glyphicon-minus:before {
+  content: "\2212"; }
+
+.glyphicon-cloud:before {
+  content: "\2601"; }
+
+.glyphicon-envelope:before {
+  content: "\2709"; }
+
+.glyphicon-pencil:before {
+  content: "\270f"; }
+
+.glyphicon-glass:before {
+  content: "\e001"; }
+
+.glyphicon-music:before {
+  content: "\e002"; }
+
+.glyphicon-search:before {
+  content: "\e003"; }
+
+.glyphicon-heart:before {
+  content: "\e005"; }
+
+.glyphicon-star:before {
+  content: "\e006"; }
+
+.glyphicon-star-empty:before {
+  content: "\e007"; }
+
+.glyphicon-user:before {
+  content: "\e008"; }
+
+.glyphicon-film:before {
+  content: "\e009"; }
+
+.glyphicon-th-large:before {
+  content: "\e010"; }
+
+.glyphicon-th:before {
+  content: "\e011"; }
+
+.glyphicon-th-list:before {
+  content: "\e012"; }
+
+.glyphicon-ok:before {
+  content: "\e013"; }
+
+.glyphicon-remove:before {
+  content: "\e014"; }
+
+.glyphicon-zoom-in:before {
+  content: "\e015"; }
+
+.glyphicon-zoom-out:before {
+  content: "\e016"; }
+
+.glyphicon-off:before {
+  content: "\e017"; }
+
+.glyphicon-signal:before {
+  content: "\e018"; }
+
+.glyphicon-cog:before {
+  content: "\e019"; }
+
+.glyphicon-trash:before {
+  content: "\e020"; }
+
+.glyphicon-home:before {
+  content: "\e021"; }
+
+.glyphicon-file:before {
+  content: "\e022"; }
+
+.glyphicon-time:before {
+  content: "\e023"; }
+
+.glyphicon-road:before {
+  content: "\e024"; }
+
+.glyphicon-download-alt:before {
+  content: "\e025"; }
+
+.glyphicon-download:before {
+  content: "\e026"; }
+
+.glyphicon-upload:before {
+  content: "\e027"; }
+
+.glyphicon-inbox:before {
+  content: "\e028"; }
+
+.glyphicon-play-circle:before {
+  content: "\e029"; }
+
+.glyphicon-repeat:before {
+  content: "\e030"; }
+
+.glyphicon-refresh:before {
+  content: "\e031"; }
+
+.glyphicon-list-alt:before {
+  content: "\e032"; }
+
+.glyphicon-lock:before {
+  content: "\e033"; }
+
+.glyphicon-flag:before {
+  content: "\e034"; }
+
+.glyphicon-headphones:before {
+  content: "\e035"; }
+
+.glyphicon-volume-off:before {
+  content: "\e036"; }
+
+.glyphicon-volume-down:before {
+  content: "\e037"; }
+
+.glyphicon-volume-up:before {
+  content: "\e038"; }
+
+.glyphicon-qrcode:before {
+  content: "\e039"; }
+
+.glyphicon-barcode:before {
+  content: "\e040"; }
+
+.glyphicon-tag:before {
+  content: "\e041"; }
+
+.glyphicon-tags:before {
+  content: "\e042"; }
+
+.glyphicon-book:before {
+  content: "\e043"; }
+
+.glyphicon-bookmark:before {
+  content: "\e044"; }
+
+.glyphicon-print:before {
+  content: "\e045"; }
+
+.glyphicon-camera:before {
+  content: "\e046"; }
+
+.glyphicon-font:before {
+  content: "\e047"; }
+
+.glyphicon-bold:before {
+  content: "\e048"; }
+
+.glyphicon-italic:before {
+  content: "\e049"; }
+
+.glyphicon-text-height:before {
+  content: "\e050"; }
+
+.glyphicon-text-width:before {
+  content: "\e051"; }
+
+.glyphicon-align-left:before {
+  content: "\e052"; }
+
+.glyphicon-align-center:before {
+  content: "\e053"; }
+
+.glyphicon-align-right:before {
+  content: "\e054"; }
+
+.glyphicon-align-justify:before {
+  content: "\e055"; }
+
+.glyphicon-list:before {
+  content: "\e056"; }
+
+.glyphicon-indent-left:before {
+  content: "\e057"; }
+
+.glyphicon-indent-right:before {
+  content: "\e058"; }
+
+.glyphicon-facetime-video:before {
+  content: "\e059"; }
+
+.glyphicon-picture:before {
+  content: "\e060"; }
+
+.glyphicon-map-marker:before {
+  content: "\e062"; }
+
+.glyphicon-adjust:before {
+  content: "\e063"; }
+
+.glyphicon-tint:before {
+  content: "\e064"; }
+
+.glyphicon-edit:before {
+  content: "\e065"; }
+
+.glyphicon-share:before {
+  content: "\e066"; }
+
+.glyphicon-check:before {
+  content: "\e067"; }
+
+.glyphicon-move:before {
+  content: "\e068"; }
+
+.glyphicon-step-backward:before {
+  content: "\e069"; }
+
+.glyphicon-fast-backward:before {
+  content: "\e070"; }
+
+.glyphicon-backward:before {
+  content: "\e071"; }
+
+.glyphicon-play:before {
+  content: "\e072"; }
+
+.glyphicon-pause:before {
+  content: "\e073"; }
+
+.glyphicon-stop:before {
+  content: "\e074"; }
+
+.glyphicon-forward:before {
+  content: "\e075"; }
+
+.glyphicon-fast-forward:before {
+  content: "\e076"; }
+
+.glyphicon-step-forward:before {
+  content: "\e077"; }
+
+.glyphicon-eject:before {
+  content: "\e078"; }
+
+.glyphicon-chevron-left:before {
+  content: "\e079"; }
+
+.glyphicon-chevron-right:before {
+  content: "\e080"; }
+
+.glyphicon-plus-sign:before {
+  content: "\e081"; }
+
+.glyphicon-minus-sign:before {
+  content: "\e082"; }
+
+.glyphicon-remove-sign:before {
+  content: "\e083"; }
+
+.glyphicon-ok-sign:before {
+  content: "\e084"; }
+
+.glyphicon-question-sign:before {
+  content: "\e085"; }
+
+.glyphicon-info-sign:before {
+  content: "\e086"; }
+
+.glyphicon-screenshot:before {
+  content: "\e087"; }
+
+.glyphicon-remove-circle:before {
+  content: "\e088"; }
+
+.glyphicon-ok-circle:before {
+  content: "\e089"; }
+
+.glyphicon-ban-circle:before {
+  content: "\e090"; }
+
+.glyphicon-arrow-left:before {
+  content: "\e091"; }
+
+.glyphicon-arrow-right:before {
+  content: "\e092"; }
+
+.glyphicon-arrow-up:before {
+  content: "\e093"; }
+
+.glyphicon-arrow-down:before {
+  content: "\e094"; }
+
+.glyphicon-share-alt:before {
+  content: "\e095"; }
+
+.glyphicon-resize-full:before {
+  content: "\e096"; }
+
+.glyphicon-resize-small:before {
+  content: "\e097"; }
+
+.glyphicon-exclamation-sign:before {
+  content: "\e101"; }
+
+.glyphicon-gift:before {
+  content: "\e102"; }
+
+.glyphicon-leaf:before {
+  content: "\e103"; }
+
+.glyphicon-fire:before {
+  content: "\e104"; }
+
+.glyphicon-eye-open:before {
+  content: "\e105"; }
+
+.glyphicon-eye-close:before {
+  content: "\e106"; }
+
+.glyphicon-warning-sign:before {
+  content: "\e107"; }
+
+.glyphicon-plane:before {
+  content: "\e108"; }
+
+.glyphicon-calendar:before {
+  content: "\e109"; }
+
+.glyphicon-random:before {
+  content: "\e110"; }
+
+.glyphicon-comment:before {
+  content: "\e111"; }
+
+.glyphicon-magnet:before {
+  content: "\e112"; }
+
+.glyphicon-chevron-up:before {
+  content: "\e113"; }
+
+.glyphicon-chevron-down:before {
+  content: "\e114"; }
+
+.glyphicon-retweet:before {
+  content: "\e115"; }
+
+.glyphicon-shopping-cart:before {
+  content: "\e116"; }
+
+.glyphicon-folder-close:before {
+  content: "\e117"; }
+
+.glyphicon-folder-open:before {
+  content: "\e118"; }
+
+.glyphicon-resize-vertical:before {
+  content: "\e119"; }
+
+.glyphicon-resize-horizontal:before {
+  content: "\e120"; }
+
+.glyphicon-hdd:before {
+  content: "\e121"; }
+
+.glyphicon-bullhorn:before {
+  content: "\e122"; }
+
+.glyphicon-bell:before {
+  content: "\e123"; }
+
+.glyphicon-certificate:before {
+  content: "\e124"; }
+
+.glyphicon-thumbs-up:before {
+  content: "\e125"; }
+
+.glyphicon-thumbs-down:before {
+  content: "\e126"; }
+
+.glyphicon-hand-right:before {
+  content: "\e127"; }
+
+.glyphicon-hand-left:before {
+  content: "\e128"; }
+
+.glyphicon-hand-up:before {
+  content: "\e129"; }
+
+.glyphicon-hand-down:before {
+  content: "\e130"; }
+
+.glyphicon-circle-arrow-right:before {
+  content: "\e131"; }
+
+.glyphicon-circle-arrow-left:before {
+  content: "\e132"; }
+
+.glyphicon-circle-arrow-up:before {
+  content: "\e133"; }
+
+.glyphicon-circle-arrow-down:before {
+  content: "\e134"; }
+
+.glyphicon-globe:before {
+  content: "\e135"; }
+
+.glyphicon-wrench:before {
+  content: "\e136"; }
+
+.glyphicon-tasks:before {
+  content: "\e137"; }
+
+.glyphicon-filter:before {
+  content: "\e138"; }
+
+.glyphicon-briefcase:before {
+  content: "\e139"; }
+
+.glyphicon-fullscreen:before {
+  content: "\e140"; }
+
+.glyphicon-dashboard:before {
+  content: "\e141"; }
+
+.glyphicon-paperclip:before {
+  content: "\e142"; }
+
+.glyphicon-heart-empty:before {
+  content: "\e143"; }
+
+.glyphicon-link:before {
+  content: "\e144"; }
+
+.glyphicon-phone:before {
+  content: "\e145"; }
+
+.glyphicon-pushpin:before {
+  content: "\e146"; }
+
+.glyphicon-usd:before {
+  content: "\e148"; }
+
+.glyphicon-gbp:before {
+  content: "\e149"; }
+
+.glyphicon-sort:before {
+  content: "\e150"; }
+
+.glyphicon-sort-by-alphabet:before {
+  content: "\e151"; }
+
+.glyphicon-sort-by-alphabet-alt:before {
+  content: "\e152"; }
+
+.glyphicon-sort-by-order:before {
+  content: "\e153"; }
+
+.glyphicon-sort-by-order-alt:before {
+  content: "\e154"; }
+
+.glyphicon-sort-by-attributes:before {
+  content: "\e155"; }
+
+.glyphicon-sort-by-attributes-alt:before {
+  content: "\e156"; }
+
+.glyphicon-unchecked:before {
+  content: "\e157"; }
+
+.glyphicon-expand:before {
+  content: "\e158"; }
+
+.glyphicon-collapse-down:before {
+  content: "\e159"; }
+
+.glyphicon-collapse-up:before {
+  content: "\e160"; }
+
+.glyphicon-log-in:before {
+  content: "\e161"; }
+
+.glyphicon-flash:before {
+  content: "\e162"; }
+
+.glyphicon-log-out:before {
+  content: "\e163"; }
+
+.glyphicon-new-window:before {
+  content: "\e164"; }
+
+.glyphicon-record:before {
+  content: "\e165"; }
+
+.glyphicon-save:before {
+  content: "\e166"; }
+
+.glyphicon-open:before {
+  content: "\e167"; }
+
+.glyphicon-saved:before {
+  content: "\e168"; }
+
+.glyphicon-import:before {
+  content: "\e169"; }
+
+.glyphicon-export:before {
+  content: "\e170"; }
+
+.glyphicon-send:before {
+  content: "\e171"; }
+
+.glyphicon-floppy-disk:before {
+  content: "\e172"; }
+
+.glyphicon-floppy-saved:before {
+  content: "\e173"; }
+
+.glyphicon-floppy-remove:before {
+  content: "\e174"; }
+
+.glyphicon-floppy-save:before {
+  content: "\e175"; }
+
+.glyphicon-floppy-open:before {
+  content: "\e176"; }
+
+.glyphicon-credit-card:before {
+  content: "\e177"; }
+
+.glyphicon-transfer:before {
+  content: "\e178"; }
+
+.glyphicon-cutlery:before {
+  content: "\e179"; }
+
+.glyphicon-header:before {
+  content: "\e180"; }
+
+.glyphicon-compressed:before {
+  content: "\e181"; }
+
+.glyphicon-earphone:before {
+  content: "\e182"; }
+
+.glyphicon-phone-alt:before {
+  content: "\e183"; }
+
+.glyphicon-tower:before {
+  content: "\e184"; }
+
+.glyphicon-stats:before {
+  content: "\e185"; }
+
+.glyphicon-sd-video:before {
+  content: "\e186"; }
+
+.glyphicon-hd-video:before {
+  content: "\e187"; }
+
+.glyphicon-subtitles:before {
+  content: "\e188"; }
+
+.glyphicon-sound-stereo:before {
+  content: "\e189"; }
+
+.glyphicon-sound-dolby:before {
+  content: "\e190"; }
+
+.glyphicon-sound-5-1:before {
+  content: "\e191"; }
+
+.glyphicon-sound-6-1:before {
+  content: "\e192"; }
+
+.glyphicon-sound-7-1:before {
+  content: "\e193"; }
+
+.glyphicon-copyright-mark:before {
+  content: "\e194"; }
+
+.glyphicon-registration-mark:before {
+  content: "\e195"; }
+
+.glyphicon-cloud-download:before {
+  content: "\e197"; }
+
+.glyphicon-cloud-upload:before {
+  content: "\e198"; }
+
+.glyphicon-tree-conifer:before {
+  content: "\e199"; }
+
+.glyphicon-tree-deciduous:before {
+  content: "\e200"; }
+* {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box; }
+
+  *:before, *:after {
+    -webkit-box-sizing: border-box;
+    -moz-box-sizing: border-box;
+    box-sizing: border-box; }
+
+    html {
+      font-size: 10px;
+      -webkit-tap-highlight-color: transparent; }
+
+      body {
+        font-family: Arial, "Helvetica Neue", Helvetica, sans-serif;
+        font-size: 13px;
+        line-height: 1.42857;
+        color: #000;
+        background-color: #fff; }
+
+        input, button, select, textarea {
+          font-family: inherit;
+          font-size: inherit;
+          line-height: inherit; }
+
+          a {
+            color: #145c9e;
+            text-decoration: none; }
+            a:hover, a:focus {
+              color: #145c9e;
+              text-decoration: underline; }
+              a:focus {
+                outline: thin dotted;
+                outline: 5px auto -webkit-focus-ring-color;
+                outline-offset: -2px; }
+
+figure {
+  margin: 0; }
+
+  img {
+    vertical-align: middle; }
+
+    .img-responsive {
+      display: block;
+      width: 100% \9;
+      max-width: 100%;
+      height: auto; }
+
+      .img-rounded {
+        border-radius: 6px; }
+
+        .img-thumbnail {
+          padding: 4px;
+          line-height: 1.42857;
+          background-color: #fff;
+          border: 1px solid #ddd;
+          border-radius: 4px;
+          -webkit-transition: all 0.2s ease-in-out;
+          -o-transition: all 0.2s ease-in-out;
+          transition: all 0.2s ease-in-out;
+          display: inline-block;
+          width: 100% \9;
+          max-width: 100%;
+          height: auto; }
+
+          .img-circle {
+            border-radius: 50%; }
+
+            hr {
+              margin-top: 20px;
+              margin-bottom: 20px;
+              border: 0;
+              border-top: 1px solid #eee; }
+
+              .sr-only {
+                position: absolute;
+                width: 1px;
+                height: 1px;
+                margin: -1px;
+                padding: 0;
+                overflow: hidden;
+                clip: rect(0, 0, 0, 0);
+                border: 0; }
+
+                .sr-only-focusable:active, .sr-only-focusable:focus {
+                  position: static;
+                  width: auto;
+                  height: auto;
+                  margin: 0;
+                  overflow: visible;
+                  clip: auto; }
+h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
+  font-family: Arial, "Helvetica Neue", Helvetica, sans-serif;
+  font-weight: 600;
+  line-height: 1;
+  color: #000000; }
+  h1 small, h1 .small, h2 small, h2 .small, h3 small, h3 .small, h4 small,
+  h4 .small, h5 small, h5 .small, h6 small, h6 .small, .h1 small, .h1 .small,
+  .h2 small, .h2 .small, .h3 small, .h3 .small, .h4 small, .h4 .small, .h5 small,
+  .h5 .small, .h6 small, .h6 .small {
+    font-weight: normal;
+    line-height: 1;
+    color: #999; }
+
+h1, .h1, h2, .h2, h3, .h3 {
+  margin-top: 20px;
+  margin-bottom: 10px; }
+  h1 small, h1 .small, .h1 small, .h1 .small, h2 small, h2 .small, .h2 small,
+  .h2 .small, h3 small, h3 .small, .h3 small, .h3 .small {
+    font-size: 65%; }
+
+h4, .h4, h5, .h5, h6, .h6 {
+  margin-top: 10px;
+  margin-bottom: 10px; }
+  h4 small, h4 .small, .h4 small, .h4 .small, h5 small, h5 .small, .h5 small,
+  .h5 .small, h6 small, h6 .small, .h6 small, .h6 .small {
+    font-size: 75%; }
+
+h1, .h1 {
+  font-size: 36px; }
+
+  h2, .h2 {
+    font-size: 30px; }
+
+    h3, .h3 {
+      font-size: 24px; }
+
+      h4, .h4 {
+        font-size: 18px; }
+
+        h5, .h5 {
+          font-size: 14px; }
+
+          h6, .h6 {
+            font-size: 12px; }
+
+            p {
+              margin: 0 0 10px; }
+
+              .lead {
+                margin-bottom: 20px;
+                font-size: 14px;
+                font-weight: 300;
+                line-height: 1.4; }
+                @media (min-width: 768px) {
+                  .lead {
+                    font-size: 19.5px;   }
+}
+
+small, .small {
+  font-size: 92%; }
+
+  cite {
+    font-style: normal; }
+
+    mark, .mark {
+      background-color: #fcf8e3;
+      padding: 0.2em; }
+
+      .text-left {
+        text-align: left; }
+
+        .text-right {
+          text-align: right; }
+
+          .text-center {
+            text-align: center; }
+
+            .text-justify {
+              text-align: justify; }
+
+              .text-nowrap {
+                white-space: nowrap; }
+
+                .text-lowercase {
+                  text-transform: lowercase; }
+
+                  .text-uppercase {
+                    text-transform: uppercase; }
+
+                    .text-capitalize {
+                      text-transform: capitalize; }
+
+                      .text-muted {
+                        color: #999; }
+
+                        .bg-primary {
+                          color: #fff; }
+
+                          .page-header {
+                            padding-bottom: 9px;
+                            margin: 40px 0 20px;
+                            border-bottom: 1px solid #eee; }
+
+                            ul, ol {
+                              margin-top: 0;
+                              margin-bottom: 10px; }
+                              ul ul, ul ol, ol ul, ol ol {
+                                margin-bottom: 0; }
+
+.list-unstyled, .list-inline {
+  padding-left: 0;
+  list-style: none; }
+
+  .list-inline {
+    margin-left: -5px; }
+    .list-inline > li {
+      display: inline-block;
+      padding-left: 5px;
+      padding-right: 5px; }
+
+dl {
+  margin-top: 0;
+  margin-bottom: 20px; }
+
+  dt, dd {
+    line-height: 1.42857; }
+
+    dt {
+      font-weight: bold; }
+
+      dd {
+        margin-left: 0; }
+
+        @media (min-width: 768px) {
+          .dl-horizontal dt {
+            float: left;
+            width: 160px;
+            clear: left;
+            text-align: right;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;   }
+            .dl-horizontal dd {
+              margin-left: 180px;   }
+}
+
+abbr[title], abbr[data-original-title] {
+  cursor: help;
+  border-bottom: 1px dotted #999; }
+
+  .initialism {
+    font-size: 90%;
+    text-transform: uppercase; }
+
+    blockquote {
+      padding: 10px 20px;
+      margin: 0 0 20px;
+      font-size: 17.5px;
+      border-left: 5px solid #eee; }
+      blockquote p:last-child, blockquote ul:last-child, blockquote ol:last-child {
+        margin-bottom: 0; }
+      blockquote footer, blockquote small, blockquote .small {
+        display: block;
+        font-size: 80%;
+        line-height: 1.42857;
+        color: #999; }
+        blockquote footer:before, blockquote small:before, blockquote .small:before {
+          content: '\2014 \00A0'; }
+
+.blockquote-reverse, blockquote.pull-right {
+  padding-right: 15px;
+  padding-left: 0;
+  border-right: 5px solid #eee;
+  border-left: 0;
+  text-align: right; }
+  .blockquote-reverse footer:before, .blockquote-reverse small:before,
+  .blockquote-reverse .small:before, blockquote.pull-right footer:before,
+  blockquote.pull-right small:before, blockquote.pull-right .small:before {
+    content: ''; }
+    .blockquote-reverse footer:after, .blockquote-reverse small:after,
+    .blockquote-reverse .small:after, blockquote.pull-right footer:after,
+    blockquote.pull-right small:after, blockquote.pull-right .small:after {
+      content: '\00A0 \2014'; }
+
+blockquote:before, blockquote:after {
+  content: ""; }
+
+  address {
+    margin-bottom: 20px;
+    font-style: normal;
+    line-height: 1.42857; }
+.text-primary {
+  color: #0074cd; }
+
+  a.text-primary:hover {
+    color: #00579a; }
+
+    .text-success {
+      color: #468847; }
+
+      a.text-success:hover {
+        color: #356635; }
+
+        .text-info {
+          color: #3a87ad; }
+
+          a.text-info:hover {
+            color: #2d6987; }
+
+            .text-warning {
+              color: #c09853; }
+
+              a.text-warning:hover {
+                color: #a47e3c; }
+
+                .text-danger {
+                  color: #b94a48; }
+
+                  a.text-danger:hover {
+                    color: #953b39; }
+.bg-primary {
+  background-color: #0074cd; }
+
+  a.bg-primary:hover {
+    background-color: #00579a; }
+
+    .bg-success {
+      background-color: #dff0d8; }
+
+      a.bg-success:hover {
+        background-color: #c1e2b3; }
+
+        .bg-info {
+          background-color: #d9edf7; }
+
+          a.bg-info:hover {
+            background-color: #afd9ee; }
+
+            .bg-warning {
+              background-color: #fcf8e3; }
+
+              a.bg-warning:hover {
+                background-color: #f7ecb5; }
+
+                .bg-danger {
+                  background-color: #f2dede; }
+
+                  a.bg-danger:hover {
+                    background-color: #e4b9b9; }
+.dl-horizontal dd:before, .dl-horizontal dd:after {
+  content: " ";
+  display: table; }
+  .dl-horizontal dd:after {
+    clear: both; }
+.container:before, .container:after {
+  content: " ";
+  display: table; }
+  .container:after {
+    clear: both; }
+    .container-fluid:before, .container-fluid:after {
+      content: " ";
+      display: table; }
+      .container-fluid:after {
+        clear: both; }
+        .row:before, .row:after {
+          content: " ";
+          display: table; }
+          .row:after {
+            clear: both; }
+            .form-horizontal .form-group:before, .form-horizontal .form-group:after {
+              content: " ";
+              display: table; }
+              .form-horizontal .form-group:after {
+                clear: both; }
+.btn-toolbar:before, .btn-toolbar:after {
+  content: " ";
+  display: table; }
+  .btn-toolbar:after {
+    clear: both; }
+    .btn-group-vertical > .btn-group:before, .btn-group-vertical > .btn-group:after {
+      content: " ";
+      display: table; }
+      .btn-group-vertical > .btn-group:after {
+        clear: both; }
+.nav:before, .nav:after {
+  content: " ";
+  display: table; }
+  .nav:after {
+    clear: both; }
+    .navbar:before, .navbar:after {
+      content: " ";
+      display: table; }
+      .navbar:after {
+        clear: both; }
+        .navbar-header:before, .navbar-header:after {
+          content: " ";
+          display: table; }
+          .navbar-header:after {
+            clear: both; }
+            .navbar-collapse:before, .navbar-collapse:after {
+              content: " ";
+              display: table; }
+              .navbar-collapse:after {
+                clear: both; }
+                .pager:before, .pager:after {
+                  content: " ";
+                  display: table; }
+                  .pager:after {
+                    clear: both; }
+                    .panel-body:before, .panel-body:after {
+                      content: " ";
+                      display: table; }
+                      .panel-body:after {
+                        clear: both; }
+                        .modal-footer:before, .modal-footer:after {
+                          content: " ";
+                          display: table; }
+                          .modal-footer:after {
+                            clear: both; }
+                            .clearfix:before, .clearfix:after {
+                              content: " ";
+                              display: table; }
+                              .clearfix:after {
+                                clear: both; }
+code, kbd, pre, samp {
+  font-family: Menlo, Monaco, Consolas, "Courier New", monospace; }
+
+  code {
+    padding: 2px 4px;
+    font-size: 90%;
+    color: #c7254e;
+    background-color: #f9f2f4;
+    border-radius: 4px; }
+
+    kbd {
+      padding: 2px 4px;
+      font-size: 90%;
+      color: #fff;
+      background-color: #333;
+      border-radius: 3px;
+      box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); }
+      kbd kbd {
+        padding: 0;
+        font-size: 100%;
+        box-shadow: none; }
+
+pre {
+  display: block;
+  padding: 9.5px;
+  margin: 0 0 10px;
+  font-size: 12px;
+  line-height: 1.42857;
+  word-break: break-all;
+  word-wrap: break-word;
+  color: #333;
+  background-color: #f5f5f5;
+  border: 1px solid #ccc;
+  border-radius: 4px; }
+  pre code {
+    padding: 0;
+    font-size: inherit;
+    color: inherit;
+    white-space: pre-wrap;
+    background-color: transparent;
+    border-radius: 0; }
+
+.pre-scrollable {
+  max-height: 340px;
+  overflow-y: scroll; }
+.container {
+  margin-right: auto;
+  margin-left: auto;
+  padding-left: 15px;
+  padding-right: 15px; }
+  @media (min-width: 768px) {
+    .container {
+      width: 750px;   }
+}
+    @media (min-width: 992px) {
+      .container {
+        width: 970px;   }
+}
+      @media (min-width: 1200px) {
+        .container {
+          width: 1170px;   }
+}
+
+.container-fluid {
+  margin-right: auto;
+  margin-left: auto;
+  padding-left: 15px;
+  padding-right: 15px; }
+
+  .row {
+    margin-left: -15px;
+    margin-right: -15px; }
+.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2,
+.col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4,
+.col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6,
+.col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7,
+.col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9,
+.col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11,
+.col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12,
+.col-lg-12, .left, .right {
+  position: relative;
+  min-height: 1px;
+  padding-left: 15px;
+  padding-right: 15px; }
+
+  .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7,
+  .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
+    float: left; }
+
+    .col-xs-1 {
+      width: 8.33333%; }
+
+      .col-xs-2 {
+        width: 16.66667%; }
+
+        .col-xs-3 {
+          width: 25%; }
+
+          .col-xs-4 {
+            width: 33.33333%; }
+
+            .col-xs-5 {
+              width: 41.66667%; }
+
+              .col-xs-6 {
+                width: 50%; }
+
+                .col-xs-7 {
+                  width: 58.33333%; }
+
+                  .col-xs-8 {
+                    width: 66.66667%; }
+
+                    .col-xs-9 {
+                      width: 75%; }
+
+                      .col-xs-10 {
+                        width: 83.33333%; }
+
+                        .col-xs-11 {
+                          width: 91.66667%; }
+
+                          .col-xs-12 {
+                            width: 100%; }
+
+                            .col-xs-pull-0 {
+                              right: auto; }
+
+                              .col-xs-pull-1 {
+                                right: 8.33333%; }
+
+                                .col-xs-pull-2 {
+                                  right: 16.66667%; }
+
+                                  .col-xs-pull-3 {
+                                    right: 25%; }
+
+                                    .col-xs-pull-4 {
+                                      right: 33.33333%; }
+
+                                      .col-xs-pull-5 {
+                                        right: 41.66667%; }
+
+                                        .col-xs-pull-6 {
+                                          right: 50%; }
+
+                                          .col-xs-pull-7 {
+                                            right: 58.33333%; }
+
+                                            .col-xs-pull-8 {
+                                              right: 66.66667%; }
+
+                                              .col-xs-pull-9 {
+                                                right: 75%; }
+
+                                                .col-xs-pull-10 {
+                                                  right: 83.33333%; }
+
+                                                  .col-xs-pull-11 {
+                                                    right: 91.66667%; }
+
+                                                    .col-xs-pull-12 {
+                                                      right: 100%; }
+
+                                                      .col-xs-push-0 {
+                                                        left: auto; }
+
+                                                        .col-xs-push-1 {
+                                                          left: 8.33333%; }
+
+                                                          .col-xs-push-2 {
+                                                            left: 16.66667%; }
+
+                                                            .col-xs-push-3 {
+                                                              left: 25%; }
+
+                                                              .col-xs-push-4 {
+                                                                left: 33.33333%; }
+
+                                                                .col-xs-push-5 {
+                                                                  left: 41.66667%; }
+
+                                                                  .col-xs-push-6 {
+                                                                    left: 50%; }
+
+                                                                    .col-xs-push-7 {
+                                                                      left: 58.33333%; }
+
+                                                                      .col-xs-push-8 {
+                                                                        left: 66.66667%; }
+
+                                                                        .col-xs-push-9 {
+                                                                          left: 75%; }
+
+                                                                          .col-xs-push-10 {
+                                                                            left: 83.33333%; }
+
+                                                                            .col-xs-push-11 {
+                                                                              left: 91.66667%; }
+
+                                                                              .col-xs-push-12 {
+                                                                                left: 100%; }
+
+                                                                                .col-xs-offset-0 {
+                                                                                  margin-left: 0%; }
+
+                                                                                  .col-xs-offset-1 {
+                                                                                    margin-left: 8.33333%; }
+
+                                                                                    .col-xs-offset-2 {
+                                                                                      margin-left: 16.66667%; }
+
+                                                                                      .col-xs-offset-3 {
+                                                                                        margin-left: 25%; }
+
+                                                                                        .col-xs-offset-4 {
+                                                                                          margin-left: 33.33333%; }
+
+                                                                                          .col-xs-offset-5 {
+                                                                                            margin-left: 41.66667%; }
+
+                                                                                            .col-xs-offset-6 {
+                                                                                              margin-left: 50%; }
+
+                                                                                              .col-xs-offset-7 {
+                                                                                                margin-left: 58.33333%; }
+
+                                                                                                .col-xs-offset-8 {
+                                                                                                  margin-left: 66.66667%; }
+
+                                                                                                  .col-xs-offset-9 {
+                                                                                                    margin-left: 75%; }
+
+                                                                                                    .col-xs-offset-10 {
+                                                                                                      margin-left: 83.33333%; }
+
+                                                                                                      .col-xs-offset-11 {
+                                                                                                        margin-left: 91.66667%; }
+
+                                                                                                        .col-xs-offset-12 {
+                                                                                                          margin-left: 100%; }
+                                                                                                          @media (min-width: 768px) {
+                                                                                                            .col-xs-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7,
+                                                                                                            .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .left, .right {
+                                                                                                              float: left;   }
+                                                                                                              .col-sm-1 {
+                                                                                                                width: 8.33333%;   }
+                                                                                                                .col-sm-2 {
+                                                                                                                  width: 16.66667%;   }
+                                                                                                                  .col-sm-3 {
+                                                                                                                    width: 25%;   }
+                                                                                                                    .col-sm-4 {
+                                                                                                                      width: 33.33333%;   }
+                                                                                                                      .col-sm-5 {
+                                                                                                                        width: 41.66667%;   }
+                                                                                                                        .col-sm-6, .left, .right {
+                                                                                                                          width: 50%;   }
+                                                                                                                          .col-sm-7 {
+                                                                                                                            width: 58.33333%;   }
+                                                                                                                            .col-sm-8 {
+                                                                                                                              width: 66.66667%;   }
+                                                                                                                              .col-sm-9 {
+                                                                                                                                width: 75%;   }
+                                                                                                                                .col-sm-10 {
+                                                                                                                                  width: 83.33333%;   }
+                                                                                                                                  .col-sm-11 {
+                                                                                                                                    width: 91.66667%;   }
+                                                                                                                                    .col-sm-12 {
+                                                                                                                                      width: 100%;   }
+                                                                                                                                      .col-sm-pull-0 {
+                                                                                                                                        right: auto;   }
+                                                                                                                                        .col-sm-pull-1 {
+                                                                                                                                          right: 8.33333%;   }
+                                                                                                                                          .col-sm-pull-2 {
+                                                                                                                                            right: 16.66667%;   }
+                                                                                                                                            .col-sm-pull-3 {
+                                                                                                                                              right: 25%;   }
+                                                                                                                                              .col-sm-pull-4 {
+                                                                                                                                                right: 33.33333%;   }
+                                                                                                                                                .col-sm-pull-5 {
+                                                                                                                                                  right: 41.66667%;   }
+                                                                                                                                                  .col-sm-pull-6 {
+                                                                                                                                                    right: 50%;   }
+                                                                                                                                                    .col-sm-pull-7 {
+                                                                                                                                                      right: 58.33333%;   }
+                                                                                                                                                      .col-sm-pull-8 {
+                                                                                                                                                        right: 66.66667%;   }
+                                                                                                                                                        .col-sm-pull-9 {
+                                                                                                                                                          right: 75%;   }
+                                                                                                                                                          .col-sm-pull-10 {
+                                                                                                                                                            right: 83.33333%;   }
+                                                                                                                                                            .col-sm-pull-11 {
+                                                                                                                                                              right: 91.66667%;   }
+                                                                                                                                                              .col-sm-pull-12 {
+                                                                                                                                                                right: 100%;   }
+                                                                                                                                                                .col-sm-push-0 {
+                                                                                                                                                                  left: auto;   }
+                                                                                                                                                                  .col-sm-push-1 {
+                                                                                                                                                                    left: 8.33333%;   }
+                                                                                                                                                                    .col-sm-push-2 {
+                                                                                                                                                                      left: 16.66667%;   }
+                                                                                                                                                                      .col-sm-push-3 {
+                                                                                                                                                                        left: 25%;   }
+                                                                                                                                                                        .col-sm-push-4 {
+                                                                                                                                                                          left: 33.33333%;   }
+                                                                                                                                                                          .col-sm-push-5 {
+                                                                                                                                                                            left: 41.66667%;   }
+                                                                                                                                                                            .col-sm-push-6 {
+                                                                                                                                                                              left: 50%;   }
+                                                                                                                                                                              .col-sm-push-7 {
+                                                                                                                                                                                left: 58.33333%;   }
+                                                                                                                                                                                .col-sm-push-8 {
+                                                                                                                                                                                  left: 66.66667%;   }
+                                                                                                                                                                                  .col-sm-push-9 {
+                                                                                                                                                                                    left: 75%;   }
+                                                                                                                                                                                    .col-sm-push-10 {
+                                                                                                                                                                                      left: 83.33333%;   }
+                                                                                                                                                                                      .col-sm-push-11 {
+                                                                                                                                                                                        left: 91.66667%;   }
+                                                                                                                                                                                        .col-sm-push-12 {
+                                                                                                                                                                                          left: 100%;   }
+                                                                                                                                                                                          .col-sm-offset-0 {
+                                                                                                                                                                                            margin-left: 0%;   }
+                                                                                                                                                                                            .col-sm-offset-1 {
+                                                                                                                                                                                              margin-left: 8.33333%;   }
+                                                                                                                                                                                              .col-sm-offset-2 {
+                                                                                                                                                                                                margin-left: 16.66667%;   }
+                                                                                                                                                                                                .col-sm-offset-3 {
+                                                                                                                                                                                                  margin-left: 25%;   }
+                                                                                                                                                                                                  .col-sm-offset-4 {
+                                                                                                                                                                                                    margin-left: 33.33333%;   }
+                                                                                                                                                                                                    .col-sm-offset-5 {
+                                                                                                                                                                                                      margin-left: 41.66667%;   }
+                                                                                                                                                                                                      .col-sm-offset-6 {
+                                                                                                                                                                                                        margin-left: 50%;   }
+                                                                                                                                                                                                        .col-sm-offset-7 {
+                                                                                                                                                                                                          margin-left: 58.33333%;   }
+                                                                                                                                                                                                          .col-sm-offset-8 {
+                                                                                                                                                                                                            margin-left: 66.66667%;   }
+                                                                                                                                                                                                            .col-sm-offset-9 {
+                                                                                                                                                                                                              margin-left: 75%;   }
+                                                                                                                                                                                                              .col-sm-offset-10 {
+                                                                                                                                                                                                                margin-left: 83.33333%;   }
+                                                                                                                                                                                                                .col-sm-offset-11 {
+                                                                                                                                                                                                                  margin-left: 91.66667%;   }
+                                                                                                                                                                                                                  .col-sm-offset-12 {
+                                                                                                                                                                                                                    margin-left: 100%;   }
+}
+                                                                                                                                                                                                                  @media (min-width: 992px) {
+                                                                                                                                                                                                                    .col-xs-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7,
+                                                                                                                                                                                                                    .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
+                                                                                                                                                                                                                      float: left;   }
+                                                                                                                                                                                                                      .col-md-1 {
+                                                                                                                                                                                                                        width: 8.33333%;   }
+                                                                                                                                                                                                                        .col-md-2 {
+                                                                                                                                                                                                                          width: 16.66667%;   }
+                                                                                                                                                                                                                          .col-md-3 {
+                                                                                                                                                                                                                            width: 25%;   }
+                                                                                                                                                                                                                            .col-md-4 {
+                                                                                                                                                                                                                              width: 33.33333%;   }
+                                                                                                                                                                                                                              .col-md-5 {
+                                                                                                                                                                                                                                width: 41.66667%;   }
+                                                                                                                                                                                                                                .col-md-6 {
+                                                                                                                                                                                                                                  width: 50%;   }
+                                                                                                                                                                                                                                  .col-md-7 {
+                                                                                                                                                                                                                                    width: 58.33333%;   }
+                                                                                                                                                                                                                                    .col-md-8 {
+                                                                                                                                                                                                                                      width: 66.66667%;   }
+                                                                                                                                                                                                                                      .col-md-9 {
+                                                                                                                                                                                                                                        width: 75%;   }
+                                                                                                                                                                                                                                        .col-md-10 {
+                                                                                                                                                                                                                                          width: 83.33333%;   }
+                                                                                                                                                                                                                                          .col-md-11 {
+                                                                                                                                                                                                                                            width: 91.66667%;   }
+                                                                                                                                                                                                                                            .col-md-12 {
+                                                                                                                                                                                                                                              width: 100%;   }
+                                                                                                                                                                                                                                              .col-md-pull-0 {
+                                                                                                                                                                                                                                                right: auto;   }
+                                                                                                                                                                                                                                                .col-md-pull-1 {
+                                                                                                                                                                                                                                                  right: 8.33333%;   }
+                                                                                                                                                                                                                                                  .col-md-pull-2 {
+                                                                                                                                                                                                                                                    right: 16.66667%;   }
+                                                                                                                                                                                                                                                    .col-md-pull-3 {
+                                                                                                                                                                                                                                                      right: 25%;   }
+                                                                                                                                                                                                                                                      .col-md-pull-4 {
+                                                                                                                                                                                                                                                        right: 33.33333%;   }
+                                                                                                                                                                                                                                                        .col-md-pull-5 {
+                                                                                                                                                                                                                                                          right: 41.66667%;   }
+                                                                                                                                                                                                                                                          .col-md-pull-6 {
+                                                                                                                                                                                                                                                            right: 50%;   }
+                                                                                                                                                                                                                                                            .col-md-pull-7 {
+                                                                                                                                                                                                                                                              right: 58.33333%;   }
+                                                                                                                                                                                                                                                              .col-md-pull-8 {
+                                                                                                                                                                                                                                                                right: 66.66667%;   }
+                                                                                                                                                                                                                                                                .col-md-pull-9 {
+                                                                                                                                                                                                                                                                  right: 75%;   }
+                                                                                                                                                                                                                                                                  .col-md-pull-10 {
+                                                                                                                                                                                                                                                                    right: 83.33333%;   }
+                                                                                                                                                                                                                                                                    .col-md-pull-11 {
+                                                                                                                                                                                                                                                                      right: 91.66667%;   }
+                                                                                                                                                                                                                                                                      .col-md-pull-12 {
+                                                                                                                                                                                                                                                                        right: 100%;   }
+                                                                                                                                                                                                                                                                        .col-md-push-0 {
+                                                                                                                                                                                                                                                                          left: auto;   }
+                                                                                                                                                                                                                                                                          .col-md-push-1 {
+                                                                                                                                                                                                                                                                            left: 8.33333%;   }
+                                                                                                                                                                                                                                                                            .col-md-push-2 {
+                                                                                                                                                                                                                                                                              left: 16.66667%;   }
+                                                                                                                                                                                                                                                                              .col-md-push-3 {
+                                                                                                                                                                                                                                                                                left: 25%;   }
+                                                                                                                                                                                                                                                                                .col-md-push-4 {
+                                                                                                                                                                                                                                                                                  left: 33.33333%;   }
+                                                                                                                                                                                                                                                                                  .col-md-push-5 {
+                                                                                                                                                                                                                                                                                    left: 41.66667%;   }
+                                                                                                                                                                                                                                                                                    .col-md-push-6 {
+                                                                                                                                                                                                                                                                                      left: 50%;   }
+                                                                                                                                                                                                                                                                                      .col-md-push-7 {
+                                                                                                                                                                                                                                                                                        left: 58.33333%;   }
+                                                                                                                                                                                                                                                                                        .col-md-push-8 {
+                                                                                                                                                                                                                                                                                          left: 66.66667%;   }
+                                                                                                                                                                                                                                                                                          .col-md-push-9 {
+                                                                                                                                                                                                                                                                                            left: 75%;   }
+                                                                                                                                                                                                                                                                                            .col-md-push-10 {
+                                                                                                                                                                                                                                                                                              left: 83.33333%;   }
+                                                                                                                                                                                                                                                                                              .col-md-push-11 {
+                                                                                                                                                                                                                                                                                                left: 91.66667%;   }
+                                                                                                                                                                                                                                                                                                .col-md-push-12 {
+                                                                                                                                                                                                                                                                                                  left: 100%;   }
+                                                                                                                                                                                                                                                                                                  .col-md-offset-0 {
+                                                                                                                                                                                                                                                                                                    margin-left: 0%;   }
+                                                                                                                                                                                                                                                                                                    .col-md-offset-1 {
+                                                                                                                                                                                                                                                                                                      margin-left: 8.33333%;   }
+                                                                                                                                                                                                                                                                                                      .col-md-offset-2 {
+                                                                                                                                                                                                                                                                                                        margin-left: 16.66667%;   }
+                                                                                                                                                                                                                                                                                                        .col-md-offset-3 {
+                                                                                                                                                                                                                                                                                                          margin-left: 25%;   }
+                                                                                                                                                                                                                                                                                                          .col-md-offset-4 {
+                                                                                                                                                                                                                                                                                                            margin-left: 33.33333%;   }
+                                                                                                                                                                                                                                                                                                            .col-md-offset-5 {
+                                                                                                                                                                                                                                                                                                              margin-left: 41.66667%;   }
+                                                                                                                                                                                                                                                                                                              .col-md-offset-6 {
+                                                                                                                                                                                                                                                                                                                margin-left: 50%;   }
+                                                                                                                                                                                                                                                                                                                .col-md-offset-7 {
+                                                                                                                                                                                                                                                                                                                  margin-left: 58.33333%;   }
+                                                                                                                                                                                                                                                                                                                  .col-md-offset-8 {
+                                                                                                                                                                                                                                                                                                                    margin-left: 66.66667%;   }
+                                                                                                                                                                                                                                                                                                                    .col-md-offset-9 {
+                                                                                                                                                                                                                                                                                                                      margin-left: 75%;   }
+                                                                                                                                                                                                                                                                                                                      .col-md-offset-10 {
+                                                                                                                                                                                                                                                                                                                        margin-left: 83.33333%;   }
+                                                                                                                                                                                                                                                                                                                        .col-md-offset-11 {
+                                                                                                                                                                                                                                                                                                                          margin-left: 91.66667%;   }
+                                                                                                                                                                                                                                                                                                                          .col-md-offset-12 {
+                                                                                                                                                                                                                                                                                                                            margin-left: 100%;   }
+}
+                                                                                                                                                                                                                                                                                                                          @media (min-width: 1200px) {
+                                                                                                                                                                                                                                                                                                                            .col-xs-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7,
+                                                                                                                                                                                                                                                                                                                            .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
+                                                                                                                                                                                                                                                                                                                              float: left;   }
+                                                                                                                                                                                                                                                                                                                              .col-lg-1 {
+                                                                                                                                                                                                                                                                                                                                width: 8.33333%;   }
+                                                                                                                                                                                                                                                                                                                                .col-lg-2 {
+                                                                                                                                                                                                                                                                                                                                  width: 16.66667%;   }
+                                                                                                                                                                                                                                                                                                                                  .col-lg-3 {
+                                                                                                                                                                                                                                                                                                                                    width: 25%;   }
+                                                                                                                                                                                                                                                                                                                                    .col-lg-4 {
+                                                                                                                                                                                                                                                                                                                                      width: 33.33333%;   }
+                                                                                                                                                                                                                                                                                                                                      .col-lg-5 {
+                                                                                                                                                                                                                                                                                                                                        width: 41.66667%;   }
+                                                                                                                                                                                                                                                                                                                                        .col-lg-6 {
+                                                                                                                                                                                                                                                                                                                                          width: 50%;   }
+                                                                                                                                                                                                                                                                                                                                          .col-lg-7 {
+                                                                                                                                                                                                                                                                                                                                            width: 58.33333%;   }
+                                                                                                                                                                                                                                                                                                                                            .col-lg-8 {
+                                                                                                                                                                                                                                                                                                                                              width: 66.66667%;   }
+                                                                                                                                                                                                                                                                                                                                              .col-lg-9 {
+                                                                                                                                                                                                                                                                                                                                                width: 75%;   }
+                                                                                                                                                                                                                                                                                                                                                .col-lg-10 {
+                                                                                                                                                                                                                                                                                                                                                  width: 83.33333%;   }
+                                                                                                                                                                                                                                                                                                                                                  .col-lg-11 {
+                                                                                                                                                                                                                                                                                                                                                    width: 91.66667%;   }
+                                                                                                                                                                                                                                                                                                                                                    .col-lg-12 {
+                                                                                                                                                                                                                                                                                                                                                      width: 100%;   }
+                                                                                                                                                                                                                                                                                                                                                      .col-lg-pull-0 {
+                                                                                                                                                                                                                                                                                                                                                        right: auto;   }
+                                                                                                                                                                                                                                                                                                                                                        .col-lg-pull-1 {
+                                                                                                                                                                                                                                                                                                                                                          right: 8.33333%;   }
+                                                                                                                                                                                                                                                                                                                                                          .col-lg-pull-2 {
+                                                                                                                                                                                                                                                                                                                                                            right: 16.66667%;   }
+                                                                                                                                                                                                                                                                                                                                                            .col-lg-pull-3 {
+                                                                                                                                                                                                                                                                                                                                                              right: 25%;   }
+                                                                                                                                                                                                                                                                                                                                                              .col-lg-pull-4 {
+                                                                                                                                                                                                                                                                                                                                                                right: 33.33333%;   }
+                                                                                                                                                                                                                                                                                                                                                                .col-lg-pull-5 {
+                                                                                                                                                                                                                                                                                                                                                                  right: 41.66667%;   }
+                                                                                                                                                                                                                                                                                                                                                                  .col-lg-pull-6 {
+                                                                                                                                                                                                                                                                                                                                                                    right: 50%;   }
+                                                                                                                                                                                                                                                                                                                                                                    .col-lg-pull-7 {
+                                                                                                                                                                                                                                                                                                                                                                      right: 58.33333%;   }
+                                                                                                                                                                                                                                                                                                                                                                      .col-lg-pull-8 {
+                                                                                                                                                                                                                                                                                                                                                                        right: 66.66667%;   }
+                                                                                                                                                                                                                                                                                                                                                                        .col-lg-pull-9 {
+                                                                                                                                                                                                                                                                                                                                                                          right: 75%;   }
+                                                                                                                                                                                                                                                                                                                                                                          .col-lg-pull-10 {
+                                                                                                                                                                                                                                                                                                                                                                            right: 83.33333%;   }
+                                                                                                                                                                                                                                                                                                                                                                            .col-lg-pull-11 {
+                                                                                                                                                                                                                                                                                                                                                                              right: 91.66667%;   }
+                                                                                                                                                                                                                                                                                                                                                                              .col-lg-pull-12 {
+                                                                                                                                                                                                                                                                                                                                                                                right: 100%;   }
+                                                                                                                                                                                                                                                                                                                                                                                .col-lg-push-0 {
+                                                                                                                                                                                                                                                                                                                                                                                  left: auto;   }
+                                                                                                                                                                                                                                                                                                                                                                                  .col-lg-push-1 {
+                                                                                                                                                                                                                                                                                                                                                                                    left: 8.33333%;   }
+                                                                                                                                                                                                                                                                                                                                                                                    .col-lg-push-2 {
+                                                                                                                                                                                                                                                                                                                                                                                      left: 16.66667%;   }
+                                                                                                                                                                                                                                                                                                                                                                                      .col-lg-push-3 {
+                                                                                                                                                                                                                                                                                                                                                                                        left: 25%;   }
+                                                                                                                                                                                                                                                                                                                                                                                        .col-lg-push-4 {
+                                                                                                                                                                                                                                                                                                                                                                                          left: 33.33333%;   }
+                                                                                                                                                                                                                                                                                                                                                                                          .col-lg-push-5 {
+                                                                                                                                                                                                                                                                                                                                                                                            left: 41.66667%;   }
+                                                                                                                                                                                                                                                                                                                                                                                            .col-lg-push-6 {
+                                                                                                                                                                                                                                                                                                                                                                                              left: 50%;   }
+                                                                                                                                                                                                                                                                                                                                                                                              .col-lg-push-7 {
+                                                                                                                                                                                                                                                                                                                                                                                                left: 58.33333%;   }
+                                                                                                                                                                                                                                                                                                                                                                                                .col-lg-push-8 {
+                                                                                                                                                                                                                                                                                                                                                                                                  left: 66.66667%;   }
+                                                                                                                                                                                                                                                                                                                                                                                                  .col-lg-push-9 {
+                                                                                                                                                                                                                                                                                                                                                                                                    left: 75%;   }
+                                                                                                                                                                                                                                                                                                                                                                                                    .col-lg-push-10 {
+                                                                                                                                                                                                                                                                                                                                                                                                      left: 83.33333%;   }
+                                                                                                                                                                                                                                                                                                                                                                                                      .col-lg-push-11 {
+                                                                                                                                                                                                                                                                                                                                                                                                        left: 91.66667%;   }
+                                                                                                                                                                                                                                                                                                                                                                                                        .col-lg-push-12 {
+                                                                                                                                                                                                                                                                                                                                                                                                          left: 100%;   }
+                                                                                                                                                                                                                                                                                                                                                                                                          .col-lg-offset-0 {
+                                                                                                                                                                                                                                                                                                                                                                                                            margin-left: 0%;   }
+                                                                                                                                                                                                                                                                                                                                                                                                            .col-lg-offset-1 {
+                                                                                                                                                                                                                                                                                                                                                                                                              margin-left: 8.33333%;   }
+                                                                                                                                                                                                                                                                                                                                                                                                              .col-lg-offset-2 {
+                                                                                                                                                                                                                                                                                                                                                                                                                margin-left: 16.66667%;   }
+                                                                                                                                                                                                                                                                                                                                                                                                                .col-lg-offset-3 {
+                                                                                                                                                                                                                                                                                                                                                                                                                  margin-left: 25%;   }
+                                                                                                                                                                                                                                                                                                                                                                                                                  .col-lg-offset-4 {
+                                                                                                                                                                                                                                                                                                                                                                                                                    margin-left: 33.33333%;   }
+                                                                                                                                                                                                                                                                                                                                                                                                                    .col-lg-offset-5 {
+                                                                                                                                                                                                                                                                                                                                                                                                                      margin-left: 41.66667%;   }
+                                                                                                                                                                                                                                                                                                                                                                                                                      .col-lg-offset-6 {
+                                                                                                                                                                                                                                                                                                                                                                                                                        margin-left: 50%;   }
+                                                                                                                                                                                                                                                                                                                                                                                                                        .col-lg-offset-7 {
+                                                                                                                                                                                                                                                                                                                                                                                                                          margin-left: 58.33333%;   }
+                                                                                                                                                                                                                                                                                                                                                                                                                          .col-lg-offset-8 {
+                                                                                                                                                                                                                                                                                                                                                                                                                            margin-left: 66.66667%;   }
+                                                                                                                                                                                                                                                                                                                                                                                                                            .col-lg-offset-9 {
+                                                                                                                                                                                                                                                                                                                                                                                                                              margin-left: 75%;   }
+                                                                                                                                                                                                                                                                                                                                                                                                                              .col-lg-offset-10 {
+                                                                                                                                                                                                                                                                                                                                                                                                                                margin-left: 83.33333%;   }
+                                                                                                                                                                                                                                                                                                                                                                                                                                .col-lg-offset-11 {
+                                                                                                                                                                                                                                                                                                                                                                                                                                  margin-left: 91.66667%;   }
+                                                                                                                                                                                                                                                                                                                                                                                                                                  .col-lg-offset-12 {
+                                                                                                                                                                                                                                                                                                                                                                                                                                    margin-left: 100%;   }
+}
+table {
+  background-color: transparent; }
+
+  th {
+    text-align: left; }
+
+    .table {
+      width: 100%;
+      max-width: 100%;
+      margin-bottom: 20px; }
+      .table > thead > tr > th, .table > thead > tr > td, .table > tbody > tr > th,
+      .table > tbody > tr > td, .table > tfoot > tr > th, .table > tfoot > tr > td {
+        padding: 8px;
+        line-height: 1.42857;
+        vertical-align: top;
+        border-top: 1px solid #d5dfe6; }
+      .table > thead > tr > th {
+        vertical-align: bottom;
+        border-bottom: 1px solid #d5dfe6; }
+        .table > caption + thead > tr:first-child > th,
+        .table > caption + thead > tr:first-child > td,
+        .table > colgroup + thead > tr:first-child > th,
+        .table > colgroup + thead > tr:first-child > td,
+        .table > thead:first-child > tr:first-child > th,
+        .table > thead:first-child > tr:first-child > td {
+          border-top: 0; }
+      .table > tbody + tbody {
+        border-top: 1px solid #d5dfe6; }
+        .table .table {
+          background-color: #fff; }
+
+.table-condensed > thead > tr > th, .table-condensed > thead > tr > td,
+.table-condensed > tbody > tr > th, .table-condensed > tbody > tr > td,
+.table-condensed > tfoot > tr > th, .table-condensed > tfoot > tr > td {
+  padding: 5px; }
+
+.table-bordered > thead > tr > th, .table-bordered > thead > tr > td,
+.table-bordered > tbody > tr > th, .table-bordered > tbody > tr > td,
+.table-bordered > tfoot > tr > th, .table-bordered > tfoot > tr > td {
+  border: 1px solid #d5dfe6; }
+.table-bordered > thead > tr > th, .table-bordered > thead > tr > td {
+  border-bottom-width: 1px; }
+
+.table-striped > tbody > tr:nth-child(even) > td,
+.table-striped > tbody > tr:nth-child(even) > th {
+  background-color: #f9f9f9; }
+
+.table-hover > tbody > tr:hover > td, .table-hover > tbody > tr:hover > th {
+  background-color: #f5f5f5; }
+
+table col[class*="col-"] {
+  position: static;
+  float: none;
+  display: table-column; }
+
+  table td[class*="col-"], table th[class*="col-"] {
+    position: static;
+    float: none;
+    display: table-cell; }
+
+@media screen and (max-width: 767px) {
+  .table-responsive {
+    width: 100%;
+    margin-bottom: 15px;
+    overflow-y: hidden;
+    overflow-x: auto;
+    -ms-overflow-style: -ms-autohiding-scrollbar;
+    border: 1px solid #dddddd;
+    -webkit-overflow-scrolling: touch;   }
+    .table-responsive > .table {
+      margin-bottom: 0;   }
+      .table-responsive > .table > thead > tr > th,
+      .table-responsive > .table > thead > tr > td,
+      .table-responsive > .table > tbody > tr > th,
+      .table-responsive > .table > tbody > tr > td,
+      .table-responsive > .table > tfoot > tr > th,
+      .table-responsive > .table > tfoot > tr > td {
+        white-space: nowrap;   }
+    .table-responsive > .table-bordered {
+      border: 0;   }
+      .table-responsive > .table-bordered > thead > tr > th:first-child,
+      .table-responsive > .table-bordered > thead > tr > td:first-child,
+      .table-responsive > .table-bordered > tbody > tr > th:first-child,
+      .table-responsive > .table-bordered > tbody > tr > td:first-child,
+      .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+      .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+        border-left: 0;   }
+        .table-responsive > .table-bordered > thead > tr > th:last-child,
+        .table-responsive > .table-bordered > thead > tr > td:last-child,
+        .table-responsive > .table-bordered > tbody > tr > th:last-child,
+        .table-responsive > .table-bordered > tbody > tr > td:last-child,
+        .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+        .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+          border-right: 0;   }
+      .table-responsive > .table-bordered > tbody > tr:last-child > th,
+      .table-responsive > .table-bordered > tbody > tr:last-child > td,
+      .table-responsive > .table-bordered > tfoot > tr:last-child > th,
+      .table-responsive > .table-bordered > tfoot > tr:last-child > td {
+        border-bottom: 0;   }
+}
+.table > thead > tr > td.active, .table > thead > tr > th.active,
+.table > thead > tr.active > td, .table > thead > tr.active > th,
+.table > tbody > tr > td.active, .table > tbody > tr > th.active,
+.table > tbody > tr.active > td, .table > tbody > tr.active > th,
+.table > tfoot > tr > td.active, .table > tfoot > tr > th.active,
+.table > tfoot > tr.active > td, .table > tfoot > tr.active > th {
+  background-color: #f5f5f5; }
+
+.table-hover > tbody > tr > td.active:hover,
+.table-hover > tbody > tr > th.active:hover,
+.table-hover > tbody > tr.active:hover > td,
+.table-hover > tbody > tr:hover > .active,
+.table-hover > tbody > tr.active:hover > th {
+  background-color: #e8e8e8; }
+
+.table > thead > tr > td.success, .table > thead > tr > th.success,
+.table > thead > tr.success > td, .table > thead > tr.success > th,
+.table > tbody > tr > td.success, .table > tbody > tr > th.success,
+.table > tbody > tr.success > td, .table > tbody > tr.success > th,
+.table > tfoot > tr > td.success, .table > tfoot > tr > th.success,
+.table > tfoot > tr.success > td, .table > tfoot > tr.success > th {
+  background-color: #dff0d8; }
+
+.table-hover > tbody > tr > td.success:hover,
+.table-hover > tbody > tr > th.success:hover,
+.table-hover > tbody > tr.success:hover > td,
+.table-hover > tbody > tr:hover > .success,
+.table-hover > tbody > tr.success:hover > th {
+  background-color: #d0e9c6; }
+
+.table > thead > tr > td.info, .table > thead > tr > th.info,
+.table > thead > tr.info > td, .table > thead > tr.info > th,
+.table > tbody > tr > td.info, .table > tbody > tr > th.info,
+.table > tbody > tr.info > td, .table > tbody > tr.info > th,
+.table > tfoot > tr > td.info, .table > tfoot > tr > th.info,
+.table > tfoot > tr.info > td, .table > tfoot > tr.info > th {
+  background-color: #d9edf7; }
+
+.table-hover > tbody > tr > td.info:hover,
+.table-hover > tbody > tr > th.info:hover,
+.table-hover > tbody > tr.info:hover > td, .table-hover > tbody > tr:hover > .info,
+.table-hover > tbody > tr.info:hover > th {
+  background-color: #c4e3f3; }
+
+.table > thead > tr > td.warning, .table > thead > tr > th.warning,
+.table > thead > tr.warning > td, .table > thead > tr.warning > th,
+.table > tbody > tr > td.warning, .table > tbody > tr > th.warning,
+.table > tbody > tr.warning > td, .table > tbody > tr.warning > th,
+.table > tfoot > tr > td.warning, .table > tfoot > tr > th.warning,
+.table > tfoot > tr.warning > td, .table > tfoot > tr.warning > th {
+  background-color: #fcf8e3; }
+
+.table-hover > tbody > tr > td.warning:hover,
+.table-hover > tbody > tr > th.warning:hover,
+.table-hover > tbody > tr.warning:hover > td,
+.table-hover > tbody > tr:hover > .warning,
+.table-hover > tbody > tr.warning:hover > th {
+  background-color: #faf2cc; }
+
+.table > thead > tr > td.danger, .table > thead > tr > th.danger,
+.table > thead > tr.danger > td, .table > thead > tr.danger > th,
+.table > tbody > tr > td.danger, .table > tbody > tr > th.danger,
+.table > tbody > tr.danger > td, .table > tbody > tr.danger > th,
+.table > tfoot > tr > td.danger, .table > tfoot > tr > th.danger,
+.table > tfoot > tr.danger > td, .table > tfoot > tr.danger > th {
+  background-color: #f2dede; }
+
+.table-hover > tbody > tr > td.danger:hover,
+.table-hover > tbody > tr > th.danger:hover,
+.table-hover > tbody > tr.danger:hover > td,
+.table-hover > tbody > tr:hover > .danger,
+.table-hover > tbody > tr.danger:hover > th {
+  background-color: #ebcccc; }
+fieldset {
+  padding: 0;
+  margin: 0;
+  border: 0;
+  min-width: 0; }
+
+  legend {
+    display: block;
+    width: 100%;
+    padding: 0;
+    margin-bottom: 20px;
+    font-size: 10px;
+    font-weight: 600;
+    line-height: inherit;
+    color: #000;
+    border: 0;
+    border-bottom: 1px solid #e5e5e5; }
+
+    label {
+      display: inline-block;
+      max-width: 100%;
+      margin-bottom: 5px;
+      font-weight: bold; }
+
+      input[type="search"] {
+        -webkit-box-sizing: border-box;
+        -moz-box-sizing: border-box;
+        box-sizing: border-box; }
+
+        input[type="radio"], input[type="checkbox"] {
+          margin: 4px 0 0;
+          margin-top: 1px \9;
+          line-height: normal; }
+
+          input[type="file"] {
+            display: block; }
+
+            input[type="range"] {
+              display: block;
+              width: 100%; }
+
+              select[multiple], select[size] {
+                height: auto; }
+
+                input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus {
+                  outline: thin dotted;
+                  outline: 5px auto -webkit-focus-ring-color;
+                  outline-offset: -2px; }
+
+                  output {
+                    display: block;
+                    padding-top: 9px;
+                    font-size: 13px;
+                    line-height: 1.42857;
+                    color: #000; }
+
+                    .form-control, .datepicker input {
+                      display: block;
+                      width: 100%;
+                      height: 38px;
+                      padding: 8px 12px;
+                      font-size: 13px;
+                      line-height: 1.42857;
+                      height: 32px;
+                      color: #000;
+                      background-color: #fff;
+                      background-image: none;
+                      border: 1px solid #ccc;
+                      border-radius: 4px;
+                      -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+                      box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+                      -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
+                      -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
+                      transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; }
+                      .form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control,
+                      .datepicker input[disabled], .datepicker input[readonly],
+                      fieldset[disabled] .datepicker input, .datepicker fieldset[disabled] input {
+                        cursor: not-allowed;
+                        background-color: #eee;
+                        opacity: 1; }
+
+textarea.form-control, .datepicker textareainput {
+  height: auto; }
+
+  input[type="search"] {
+    -webkit-appearance: none; }
+
+    input[type="date"], input[type="time"], input[type="datetime-local"],
+    input[type="month"] {
+      line-height: 38px;
+      line-height: 1.42857 \0; }
+      input[type="date"].input-sm, input[type="time"].input-sm,
+      input[type="datetime-local"].input-sm, input[type="month"].input-sm,
+      .form-horizontal .form-group-sm input[type="datetime-local"].form-control,
+      .form-horizontal .form-group-sm input[type="time"].form-control,
+      .form-horizontal .form-group-sm input[type="month"].form-control,
+      .form-horizontal .form-group-sm input[type="date"].form-control,
+      .input-group-sm input[type="datetime-local"].form-control,
+      .input-group-sm input[type="datetime-local"].input-group-addon,
+      .input-group-sm > .input-group-btn input[type="datetime-local"].btn,
+      .input-group-sm input[type="time"].form-control,
+      .input-group-sm input[type="time"].input-group-addon,
+      .input-group-sm > .input-group-btn input[type="time"].btn,
+      .input-group-sm input[type="month"].form-control,
+      .input-group-sm input[type="month"].input-group-addon,
+      .input-group-sm > .input-group-btn input[type="month"].btn,
+      .input-group-sm input[type="date"].form-control,
+      .input-group-sm input[type="date"].input-group-addon,
+      .input-group-sm > .input-group-btn input[type="date"].btn,
+      .input-group-sm .datepicker input[type="month"],
+      .datepicker .input-group-sm input[type="month"],
+      .input-group-sm .datepicker input[type="time"],
+      .datepicker .input-group-sm input[type="time"],
+      .form-horizontal .form-group-sm .datepicker input[type="datetime-local"],
+      .datepicker .form-horizontal .form-group-sm input[type="datetime-local"],
+      .input-group-sm .datepicker input[type="date"],
+      .datepicker .input-group-sm input[type="date"],
+      .form-horizontal .form-group-sm .datepicker input[type="month"],
+      .datepicker .form-horizontal .form-group-sm input[type="month"],
+      .form-horizontal .form-group-sm .datepicker input[type="date"],
+      .datepicker .form-horizontal .form-group-sm input[type="date"],
+      .form-horizontal .form-group-sm .datepicker input[type="time"],
+      .datepicker .form-horizontal .form-group-sm input[type="time"],
+      .input-group-sm .datepicker input[type="datetime-local"],
+      .datepicker .input-group-sm input[type="datetime-local"] {
+        line-height: 30px; }
+        input[type="date"].input-lg, input[type="time"].input-lg,
+        input[type="datetime-local"].input-lg, input[type="month"].input-lg,
+        .form-horizontal .form-group-lg input[type="date"].form-control,
+        .form-horizontal .form-group-lg input[type="month"].form-control,
+        .form-horizontal .form-group-lg input[type="datetime-local"].form-control,
+        .form-horizontal .form-group-lg input[type="time"].form-control,
+        .input-group-lg input[type="date"].form-control,
+        .input-group-lg input[type="date"].input-group-addon,
+        .input-group-lg > .input-group-btn input[type="date"].btn,
+        .input-group-lg input[type="month"].form-control,
+        .input-group-lg input[type="month"].input-group-addon,
+        .input-group-lg > .input-group-btn input[type="month"].btn,
+        .input-group-lg input[type="datetime-local"].form-control,
+        .input-group-lg input[type="datetime-local"].input-group-addon,
+        .input-group-lg > .input-group-btn input[type="datetime-local"].btn,
+        .input-group-lg input[type="time"].form-control,
+        .input-group-lg input[type="time"].input-group-addon,
+        .input-group-lg > .input-group-btn input[type="time"].btn,
+        .form-horizontal .form-group-lg .datepicker input[type="time"],
+        .datepicker .form-horizontal .form-group-lg input[type="time"],
+        .input-group-lg .datepicker input[type="datetime-local"],
+        .datepicker .input-group-lg input[type="datetime-local"],
+        .form-horizontal .form-group-lg .datepicker input[type="date"],
+        .datepicker .form-horizontal .form-group-lg input[type="date"],
+        .input-group-lg .datepicker input[type="month"],
+        .datepicker .input-group-lg input[type="month"],
+        .form-horizontal .form-group-lg .datepicker input[type="month"],
+        .datepicker .form-horizontal .form-group-lg input[type="month"],
+        .form-horizontal .form-group-lg .datepicker input[type="datetime-local"],
+        .datepicker .form-horizontal .form-group-lg input[type="datetime-local"],
+        .input-group-lg .datepicker input[type="time"],
+        .datepicker .input-group-lg input[type="time"],
+        .input-group-lg .datepicker input[type="date"],
+        .datepicker .input-group-lg input[type="date"] {
+          line-height: 54px; }
+
+.form-group {
+  margin-bottom: 15px; }
+
+  .radio, .checkbox {
+    position: relative;
+    display: block;
+    min-height: 20px;
+    margin-top: 10px;
+    margin-bottom: 10px; }
+    .radio label, .checkbox label {
+      padding-left: 20px;
+      margin-bottom: 0;
+      font-weight: normal;
+      cursor: pointer; }
+
+.radio input[type="radio"], .radio-inline input[type="radio"],
+.checkbox input[type="checkbox"], .checkbox-inline input[type="checkbox"] {
+  position: absolute;
+  margin-left: -20px;
+  margin-top: 4px \9; }
+
+  .radio + .radio, .checkbox + .checkbox {
+    margin-top: -5px; }
+
+    .radio-inline, .checkbox-inline {
+      display: inline-block;
+      padding-left: 20px;
+      margin-bottom: 0;
+      vertical-align: middle;
+      font-weight: normal;
+      cursor: pointer; }
+
+      .radio-inline + .radio-inline, .checkbox-inline + .checkbox-inline {
+        margin-top: 0;
+        margin-left: 10px; }
+
+        input[type="radio"][disabled], input[type="radio"].disabled,
+        fieldset[disabled] input[type="radio"], input[type="checkbox"][disabled],
+        input[type="checkbox"].disabled, fieldset[disabled] input[type="checkbox"] {
+          cursor: not-allowed; }
+
+.radio-inline.disabled, fieldset[disabled] .radio-inline,
+.checkbox-inline.disabled, fieldset[disabled] .checkbox-inline {
+  cursor: not-allowed; }
+
+.radio.disabled label, fieldset[disabled] .radio label, .checkbox.disabled label,
+fieldset[disabled] .checkbox label {
+  cursor: not-allowed; }
+
+.form-control-static {
+  padding-top: 9px;
+  padding-bottom: 9px;
+  margin-bottom: 0; }
+  .form-control-static.input-lg, .form-control-static.input-sm,
+  .form-horizontal .form-group-lg .form-control-static.form-control,
+  .form-horizontal .form-group-sm .form-control-static.form-control,
+  .input-group-lg .form-control-static.form-control,
+  .input-group-lg .form-control-static.input-group-addon,
+  .input-group-lg > .input-group-btn .form-control-static.btn,
+  .input-group-sm .form-control-static.form-control,
+  .input-group-sm .form-control-static.input-group-addon,
+  .input-group-sm > .input-group-btn .form-control-static.btn,
+  .input-group-lg .datepicker input.form-control-static,
+  .datepicker .input-group-lg input.form-control-static,
+  .form-horizontal .form-group-sm .datepicker input.form-control-static,
+  .datepicker .form-horizontal .form-group-sm input.form-control-static,
+  .input-group-sm .datepicker input.form-control-static,
+  .datepicker .input-group-sm input.form-control-static,
+  .form-horizontal .form-group-lg .datepicker input.form-control-static,
+  .datepicker .form-horizontal .form-group-lg input.form-control-static {
+    padding-left: 0;
+    padding-right: 0; }
+
+.has-feedback {
+  position: relative; }
+  .has-feedback .form-control, .has-feedback .datepicker input,
+  .datepicker .has-feedback input {
+    padding-right: 47.5px; }
+
+.form-control-feedback {
+  position: absolute;
+  top: 25px;
+  right: 0;
+  z-index: 2;
+  display: block;
+  width: 38px;
+  height: 38px;
+  line-height: 38px;
+  text-align: center; }
+
+  .input-lg + .form-control-feedback,
+  .form-horizontal .form-group-lg .form-control + .form-control-feedback,
+  .input-group-lg .form-control + .form-control-feedback,
+  .input-group-lg .input-group-addon + .form-control-feedback,
+  .input-group-lg > .input-group-btn .btn + .form-control-feedback,
+  .input-group-lg .datepicker input + .form-control-feedback,
+  .datepicker .input-group-lg input + .form-control-feedback,
+  .form-horizontal .form-group-lg .datepicker input + .form-control-feedback,
+  .datepicker .form-horizontal .form-group-lg input + .form-control-feedback {
+    width: 54px;
+    height: 54px;
+    line-height: 54px; }
+
+    .input-sm + .form-control-feedback,
+    .form-horizontal .form-group-sm .form-control + .form-control-feedback,
+    .input-group-sm .form-control + .form-control-feedback,
+    .input-group-sm .input-group-addon + .form-control-feedback,
+    .input-group-sm > .input-group-btn .btn + .form-control-feedback,
+    .input-group-sm .datepicker input + .form-control-feedback,
+    .datepicker .input-group-sm input + .form-control-feedback,
+    .form-horizontal .form-group-sm .datepicker input + .form-control-feedback,
+    .datepicker .form-horizontal .form-group-sm input + .form-control-feedback {
+      width: 30px;
+      height: 30px;
+      line-height: 30px; }
+
+      .has-feedback label.sr-only ~ .form-control-feedback {
+        top: 0; }
+
+        .help-block {
+          display: block;
+          margin-top: 5px;
+          margin-bottom: 10px;
+          color: #404040; }
+
+          @media (min-width: 768px) {
+            .form-inline .form-group, .navbar-form .form-group, .table_actions .form-group {
+              display: inline-block;
+              margin-bottom: 0;
+              vertical-align: middle;   }
+              .form-inline .form-control, .navbar-form .form-control,
+              .table_actions .form-control, .form-inline .datepicker input,
+              .datepicker .form-inline input, .table_actions .datepicker input,
+              .datepicker .table_actions input, .navbar-form .datepicker input,
+              .datepicker .navbar-form input {
+                display: inline-block;
+                width: auto;
+                vertical-align: middle;   }
+                .form-inline .input-group, .navbar-form .input-group, .table_actions .input-group {
+                  display: inline-table;
+                  vertical-align: middle;   }
+                  .form-inline .input-group .input-group-addon,
+                  .form-inline .input-group .input-group-btn,
+                  .form-inline .input-group .form-control,
+                  .navbar-form .input-group .input-group-btn,
+                  .navbar-form .input-group .form-control,
+                  .navbar-form .input-group .input-group-addon,
+                  .table_actions .input-group .input-group-btn,
+                  .table_actions .input-group .form-control,
+                  .table_actions .input-group .input-group-addon,
+                  .navbar-form .input-group .datepicker input,
+                  .datepicker .navbar-form .input-group input,
+                  .form-inline .input-group .datepicker input,
+                  .datepicker .form-inline .input-group input,
+                  .table_actions .input-group .datepicker input,
+                  .datepicker .table_actions .input-group input {
+                    width: auto;   }
+            .form-inline .input-group > .form-control,
+            .navbar-form .input-group > .form-control,
+            .table_actions .input-group > .form-control,
+            .table_actions .input-group .datepicker > input,
+            .datepicker .table_actions .input-group > input,
+            .form-inline .input-group .datepicker > input,
+            .datepicker .form-inline .input-group > input,
+            .navbar-form .input-group .datepicker > input,
+            .datepicker .navbar-form .input-group > input {
+              width: 100%;   }
+              .form-inline .control-label, .navbar-form .control-label,
+              .table_actions .control-label {
+                margin-bottom: 0;
+                vertical-align: middle;   }
+                .form-inline .radio, .form-inline .checkbox, .navbar-form .radio,
+                .navbar-form .checkbox, .table_actions .radio, .table_actions .checkbox {
+                  display: inline-block;
+                  margin-top: 0;
+                  margin-bottom: 0;
+                  vertical-align: middle;   }
+                  .form-inline .radio label, .form-inline .checkbox label, .navbar-form .radio label,
+                  .navbar-form .checkbox label, .table_actions .radio label,
+                  .table_actions .checkbox label {
+                    padding-left: 0;   }
+            .form-inline .radio input[type="radio"],
+            .form-inline .checkbox input[type="checkbox"],
+            .navbar-form .checkbox input[type="checkbox"],
+            .navbar-form .radio input[type="radio"],
+            .table_actions .checkbox input[type="checkbox"],
+            .table_actions .radio input[type="radio"] {
+              position: relative;
+              margin-left: 0;   }
+              .form-inline .has-feedback .form-control-feedback,
+              .navbar-form .has-feedback .form-control-feedback,
+              .table_actions .has-feedback .form-control-feedback {
+                top: 0;   }
+}
+
+.form-horizontal .radio, .form-horizontal .checkbox,
+.form-horizontal .radio-inline, .form-horizontal .checkbox-inline {
+  margin-top: 0;
+  margin-bottom: 0;
+  padding-top: 9px; }
+  .form-horizontal .radio, .form-horizontal .checkbox {
+    min-height: 29px; }
+    .form-horizontal .form-group {
+      margin-left: -15px;
+      margin-right: -15px; }
+      @media (min-width: 768px) {
+        .form-horizontal .control-label {
+          text-align: right;
+          margin-bottom: 0;
+          padding-top: 9px;   }
+}
+.form-horizontal .has-feedback .form-control-feedback {
+  top: 0;
+  right: 15px; }
+  @media (min-width: 768px) {
+    .form-horizontal .form-group-lg .control-label {
+      padding-top: 19.66667px;   }
+}
+@media (min-width: 768px) {
+  .form-horizontal .form-group-sm .control-label {
+    padding-top: 6px;   }
+}
+.form-control:focus, .datepicker input:focus {
+  border-color: #66afe9;
+  outline: 0;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); }
+
+.input-sm, .form-horizontal .form-group-sm .form-control,
+.input-group-sm .form-control, .input-group-sm .input-group-addon,
+.input-group-sm > .input-group-btn .btn,
+.form-horizontal .form-group-sm .datepicker input,
+.datepicker .form-horizontal .form-group-sm input,
+.input-group-sm .datepicker input, .datepicker .input-group-sm input {
+  height: 30px;
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px; }
+
+  select.input-sm, .form-horizontal .form-group-sm select.form-control,
+  .input-group-sm select.form-control, .input-group-sm select.input-group-addon,
+  .input-group-sm > .input-group-btn select.btn,
+  .input-group-sm .datepicker selectinput, .datepicker .input-group-sm selectinput,
+  .form-horizontal .form-group-sm .datepicker selectinput,
+  .datepicker .form-horizontal .form-group-sm selectinput {
+    height: 30px;
+    line-height: 30px; }
+
+    textarea.input-sm, select[multiple].input-sm,
+    .form-horizontal .form-group-sm textarea.form-control,
+    .form-horizontal .form-group-sm select[multiple].form-control,
+    .input-group-sm textarea.form-control, .input-group-sm textarea.input-group-addon,
+    .input-group-sm > .input-group-btn textarea.btn,
+    .input-group-sm select[multiple].form-control,
+    .input-group-sm select[multiple].input-group-addon,
+    .input-group-sm > .input-group-btn select[multiple].btn,
+    .form-horizontal .form-group-sm .datepicker selectinput[multiple],
+    .datepicker .form-horizontal .form-group-sm selectinput[multiple],
+    .form-horizontal .form-group-sm .datepicker textareainput,
+    .datepicker .form-horizontal .form-group-sm textareainput,
+    .input-group-sm .datepicker selectinput[multiple],
+    .datepicker .input-group-sm selectinput[multiple],
+    .input-group-sm .datepicker textareainput,
+    .datepicker .input-group-sm textareainput {
+      height: auto; }
+
+      .input-lg, .form-horizontal .form-group-lg .form-control,
+      .input-group-lg .form-control, .input-group-lg .input-group-addon,
+      .input-group-lg > .input-group-btn .btn,
+      .form-horizontal .form-group-lg .datepicker input,
+      .datepicker .form-horizontal .form-group-lg input,
+      .input-group-lg .datepicker input, .datepicker .input-group-lg input {
+        height: 54px;
+        padding: 14px 16px;
+        font-size: 18px;
+        line-height: 1.33333;
+        border-radius: 6px; }
+
+        select.input-lg, .form-horizontal .form-group-lg select.form-control,
+        .input-group-lg select.form-control, .input-group-lg select.input-group-addon,
+        .input-group-lg > .input-group-btn select.btn,
+        .input-group-lg .datepicker selectinput, .datepicker .input-group-lg selectinput,
+        .form-horizontal .form-group-lg .datepicker selectinput,
+        .datepicker .form-horizontal .form-group-lg selectinput {
+          height: 54px;
+          line-height: 54px; }
+
+          textarea.input-lg, select[multiple].input-lg,
+          .form-horizontal .form-group-lg select[multiple].form-control,
+          .form-horizontal .form-group-lg textarea.form-control,
+          .input-group-lg select[multiple].form-control,
+          .input-group-lg select[multiple].input-group-addon,
+          .input-group-lg > .input-group-btn select[multiple].btn,
+          .input-group-lg textarea.form-control, .input-group-lg textarea.input-group-addon,
+          .input-group-lg > .input-group-btn textarea.btn,
+          .input-group-lg .datepicker selectinput[multiple],
+          .datepicker .input-group-lg selectinput[multiple],
+          .form-horizontal .form-group-lg .datepicker textareainput,
+          .datepicker .form-horizontal .form-group-lg textareainput,
+          .form-horizontal .form-group-lg .datepicker selectinput[multiple],
+          .datepicker .form-horizontal .form-group-lg selectinput[multiple],
+          .input-group-lg .datepicker textareainput,
+          .datepicker .input-group-lg textareainput {
+            height: auto; }
+            .has-success .help-block, .has-success .control-label, .has-success .radio,
+            .has-success .checkbox, .has-success .radio-inline, .has-success .checkbox-inline {
+              color: #468847; }
+              .has-success .form-control, .has-success .datepicker input,
+              .datepicker .has-success input {
+                border-color: #468847;
+                -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+                box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); }
+                .has-success .form-control:focus, .has-success .datepicker input:focus,
+                .datepicker .has-success input:focus {
+                  border-color: #356635;
+                  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+                  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; }
+            .has-success .input-group-addon {
+              color: #468847;
+              border-color: #468847;
+              background-color: #dff0d8; }
+              .has-success .form-control-feedback {
+                color: #468847; }
+                .has-warning .help-block, .has-warning .control-label, .has-warning .radio,
+                .has-warning .checkbox, .has-warning .radio-inline, .has-warning .checkbox-inline {
+                  color: #c09853; }
+                  .has-warning .form-control, .has-warning .datepicker input,
+                  .datepicker .has-warning input {
+                    border-color: #c09853;
+                    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+                    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); }
+                    .has-warning .form-control:focus, .has-warning .datepicker input:focus,
+                    .datepicker .has-warning input:focus {
+                      border-color: #a47e3c;
+                      -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+                      box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; }
+            .has-warning .input-group-addon {
+              color: #c09853;
+              border-color: #c09853;
+              background-color: #fcf8e3; }
+              .has-warning .form-control-feedback {
+                color: #c09853; }
+                .has-error .help-block, .has-error .control-label, .has-error .radio,
+                .has-error .checkbox, .has-error .radio-inline, .has-error .checkbox-inline {
+                  color: #b94a48; }
+                  .has-error .form-control, .has-error .datepicker input,
+                  .datepicker .has-error input {
+                    border-color: #b94a48;
+                    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+                    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); }
+                    .has-error .form-control:focus, .has-error .datepicker input:focus,
+                    .datepicker .has-error input:focus {
+                      border-color: #953b39;
+                      -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+                      box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; }
+            .has-error .input-group-addon {
+              color: #b94a48;
+              border-color: #b94a48;
+              background-color: #f2dede; }
+              .has-error .form-control-feedback {
+                color: #b94a48; }
+.form-control::-moz-placeholder, .datepicker input::-moz-placeholder {
+  color: #999;
+  opacity: 1; }
+  .form-control:-ms-input-placeholder, .datepicker input:-ms-input-placeholder {
+    color: #999; }
+    .form-control::-webkit-input-placeholder,
+    .datepicker input::-webkit-input-placeholder {
+      color: #999; }
+.input-group-addon.input-lg,
+.form-horizontal .form-group-lg .input-group-addon.form-control,
+.input-group-lg .input-group-addon.form-control,
+.input-group-lg .input-group-addon,
+.input-group-lg > .input-group-btn .input-group-addon.btn,
+.form-horizontal .form-group-lg .datepicker input.input-group-addon,
+.datepicker .form-horizontal .form-group-lg input.input-group-addon,
+.input-group-lg .datepicker input.input-group-addon,
+.datepicker .input-group-lg input.input-group-addon {
+  padding: 14px 16px;
+  font-size: 18px;
+  border-radius: 6px; }
+  .input-group-addon.input-sm,
+  .form-horizontal .form-group-sm .input-group-addon.form-control,
+  .input-group-sm .input-group-addon.form-control,
+  .input-group-sm .input-group-addon,
+  .input-group-sm > .input-group-btn .input-group-addon.btn,
+  .input-group-sm .datepicker input.input-group-addon,
+  .datepicker .input-group-sm input.input-group-addon,
+  .form-horizontal .form-group-sm .datepicker input.input-group-addon,
+  .datepicker .form-horizontal .form-group-sm input.input-group-addon {
+    padding: 5px 10px;
+    font-size: 12px;
+    border-radius: 3px; }
+
+.input-group {
+  position: relative;
+  display: table;
+  border-collapse: separate; }
+  .input-group[class*="col-"] {
+    float: none;
+    padding-left: 0;
+    padding-right: 0; }
+    .input-group .form-control, .input-group .datepicker input,
+    .datepicker .input-group input {
+      position: relative;
+      z-index: 2;
+      float: left;
+      width: 100%;
+      margin-bottom: 0; }
+
+.input-group-addon, .input-group-btn, .input-group .form-control,
+.input-group .datepicker input, .datepicker .input-group input {
+  display: table-cell; }
+  .input-group-addon:not(:first-child):not(:last-child),
+  .input-group-btn:not(:first-child):not(:last-child),
+  .input-group .form-control:not(:first-child):not(:last-child),
+  .input-group .datepicker input:not(:first-child):not(:last-child),
+  .datepicker .input-group input:not(:first-child):not(:last-child) {
+    border-radius: 0; }
+
+.input-group-addon, .input-group-btn {
+  width: 1%;
+  white-space: nowrap;
+  vertical-align: middle; }
+
+  .input-group-addon {
+    padding: 8px 12px;
+    font-size: 13px;
+    font-weight: normal;
+    line-height: 1;
+    color: #000;
+    text-align: center;
+    background-color: #eee;
+    border: 1px solid #ccc;
+    border-radius: 4px; }
+    .input-group-addon input[type="radio"], .input-group-addon input[type="checkbox"] {
+      margin-top: 0; }
+
+.input-group .form-control:first-child, .input-group-addon:first-child,
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group > .btn,
+.input-group-btn:first-child > .dropdown-toggle,
+.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
+.input-group-btn:last-child > .btn-group:not(:last-child) > .btn,
+.input-group .datepicker input:first-child,
+.datepicker .input-group input:first-child {
+  border-bottom-right-radius: 0;
+  border-top-right-radius: 0; }
+
+  .input-group-addon:first-child {
+    border-right: 0; }
+
+    .input-group .form-control:last-child, .input-group-addon:last-child,
+    .input-group-btn:last-child > .btn,
+    .input-group-btn:last-child > .btn-group > .btn,
+    .input-group-btn:last-child > .dropdown-toggle,
+    .input-group-btn:first-child > .btn:not(:first-child),
+    .input-group-btn:first-child > .btn-group:not(:first-child) > .btn,
+    .input-group .datepicker input:last-child,
+    .datepicker .input-group input:last-child {
+      border-bottom-left-radius: 0;
+      border-top-left-radius: 0; }
+
+      .input-group-addon:last-child {
+        border-left: 0; }
+
+        .input-group-btn {
+          position: relative;
+          font-size: 0;
+          white-space: nowrap; }
+          .input-group-btn > .btn {
+            position: relative; }
+            .input-group-btn > .btn + .btn {
+              margin-left: -1px; }
+              .input-group-btn > .btn:hover, .input-group-btn > .btn:focus,
+              .input-group-btn > .btn:active {
+                z-index: 2; }
+          .input-group-btn:first-child > .btn, .input-group-btn:first-child > .btn-group {
+            margin-right: -1px; }
+          .input-group-btn:last-child > .btn, .input-group-btn:last-child > .btn-group {
+            margin-left: -1px; }
+.btn {
+  display: inline-block;
+  margin-bottom: 0;
+  font-weight: normal;
+  text-align: center;
+  vertical-align: middle;
+  cursor: pointer;
+  background-image: none;
+  border: 1px solid transparent;
+  white-space: nowrap;
+  padding: 8px 12px;
+  font-size: 13px;
+  line-height: 1.42857;
+  border-radius: 4px;
+  padding: 3px 12px;
+  height: 32px;
+  line-height: 24px;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none; }
+  .btn:focus, .btn:active:focus, .btn.active:focus {
+    outline: thin dotted;
+    outline: 5px auto -webkit-focus-ring-color;
+    outline-offset: -2px; }
+  .btn:hover, .btn:focus {
+    color: #0160c1;
+    text-decoration: none; }
+    .btn:active, .btn.active {
+      outline: 0;
+      background-image: none;
+      -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.12);
+      box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.12); }
+      .btn.disabled, .btn[disabled], fieldset[disabled] .btn {
+        cursor: not-allowed;
+        pointer-events: none;
+        opacity: 0.65;
+        filter: alpha(opacity=65);
+        -webkit-box-shadow: none;
+        box-shadow: none; }
+
+.btn-default {
+  color: #000000;
+  border: 1px solid #c3ced7;
+  background: -webkit-linear-gradient(#f1f3f4, #e3e8ea);
+  background: -o-linear-gradient(#f1f3f4, #e3e8ea);
+  background: -moz-linear-gradient(#f1f3f4, #e3e8ea);
+  background: linear-gradient(#f1f3f4, #e3e8ea); }
+  .btn-default:hover, .btn-default:focus {
+    color: #000;
+    border: 1px solid #c3ced7;
+    background: -webkit-linear-gradient(#f8f9fa, #f1f4f5);
+    background: -o-linear-gradient(#f8f9fa, #f1f4f5);
+    background: -moz-linear-gradient(#f8f9fa, #f1f4f5);
+    background: linear-gradient(#f8f9fa, #f1f4f5); }
+
+.btn-primary {
+  color: #fff;
+  background: #0074cd;
+  border-color: #0074cd; }
+  .btn-primary:hover, .btn-primary:focus {
+    color: #fff;
+    text-decoration: none;
+    background: #0160c1;
+    border-color: #0160c1; }
+
+.btn-success {
+  color: #fff;
+  background-color: #5cb85c;
+  border-color: #4cae4c; }
+  .btn-success:hover, .btn-success:focus {
+    color: #fff;
+    text-decoration: none; }
+
+.btn-info {
+  color: #fff;
+  background-color: #5bc0de;
+  border-color: #46b8da; }
+  .btn-info:hover, .btn-info:focus {
+    color: #fff;
+    text-decoration: none; }
+
+.btn-warning {
+  color: #fff;
+  background-color: #f0ad4e;
+  border-color: #eea236; }
+  .btn-warning:hover, .btn-warning:focus {
+    color: #fff;
+    text-decoration: none; }
+
+.btn-danger {
+  color: #000;
+  border: 1px solid #c3ced7;
+  background: -webkit-linear-gradient(#f1f3f4, #e3e8ea);
+  background: -o-linear-gradient(#f1f3f4, #e3e8ea);
+  background: -moz-linear-gradient(#f1f3f4, #e3e8ea);
+  background: linear-gradient(#f1f3f4, #e3e8ea); }
+  .btn-danger:hover, .btn-danger:focus {
+    color: #000;
+    text-decoration: none; }
+
+.btn-link {
+  color: #145c9e;
+  font-weight: normal;
+  cursor: pointer;
+  border-radius: 0; }
+  .btn-link, .btn-link:active, .btn-link[disabled], fieldset[disabled] .btn-link {
+    background-color: transparent;
+    -webkit-box-shadow: none;
+    box-shadow: none; }
+    .btn-link, .btn-link:hover, .btn-link:focus, .btn-link:active {
+      border-color: transparent; }
+      .btn-link:hover, .btn-link:focus {
+        color: #fff;
+        text-decoration: underline;
+        background-color: transparent; }
+        .btn-link[disabled]:hover, .btn-link[disabled]:focus,
+        fieldset[disabled] .btn-link:hover, fieldset[disabled] .btn-link:focus {
+          color: #8193a1;
+          text-decoration: none; }
+
+.btn-lg, .btn-group-lg .btn {
+  padding: 14px 16px;
+  font-size: 18px;
+  line-height: 1.33333;
+  border-radius: 6px; }
+
+  .btn-sm, .btn-group-sm .btn {
+    padding: 5px 10px;
+    font-size: 12px;
+    line-height: 1.5;
+    border-radius: 3px;
+    padding: 7px 10px 5px 10px;
+    font-size: 12px;
+    line-height: 1.5;
+    border-radius: 3px; }
+
+    .btn-xs, .btn-group-xs .btn {
+      padding: 1px 5px;
+      font-size: 12px;
+      line-height: 1.5;
+      border-radius: 3px; }
+
+      .btn-block {
+        display: block;
+        width: 100%; }
+
+        .btn-block + .btn-block {
+          margin-top: 5px; }
+
+          input[type="submit"].btn-block, input[type="reset"].btn-block,
+          input[type="button"].btn-block {
+            width: 100%; }
+.fade {
+  opacity: 0;
+  -webkit-transition: opacity 0.15s linear;
+  -o-transition: opacity 0.15s linear;
+  transition: opacity 0.15s linear; }
+  .fade.in {
+    opacity: 1; }
+
+.collapse {
+  display: none; }
+  .collapse.in {
+    display: block; }
+
+tr.collapse.in {
+  display: table-row; }
+
+  tbody.collapse.in {
+    display: table-row-group; }
+
+    .collapsing {
+      position: relative;
+      height: 0;
+      overflow: hidden;
+      -webkit-transition: height 0.35s ease;
+      -o-transition: height 0.35s ease;
+      transition: height 0.35s ease; }
+.caret {
+  display: inline-block;
+  width: 0;
+  height: 0;
+  margin-left: 2px;
+  vertical-align: middle;
+  border-top: 4px solid;
+  border-right: 4px solid transparent;
+  border-left: 4px solid transparent; }
+
+  .dropdown {
+    position: relative; }
+
+    .dropdown-toggle:focus {
+      outline: 0; }
+
+      .dropdown-menu {
+        position: absolute;
+        top: 100%;
+        right: 0;
+        left: auto;
+        z-index: 1000;
+        display: none;
+        float: right;
+        min-width: 160px;
+        padding: 2px 0px 3px 0px;
+        margin: 2px 0 0;
+        list-style: none;
+        font-size: 13px;
+        text-align: left;
+        background: #ffffff;
+        border: 1px solid #c4ced7;
+        border-radius: 4px;
+        -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.17);
+        box-shadow: 0 6px 12px rgba(0, 0, 0, 0.17);
+        background-clip: padding-box; }
+        .dropdown-menu.pull-right {
+          right: 0;
+          left: auto; }
+          .dropdown-menu .divider {
+            height: 1px;
+            margin: 6px 0;
+            overflow: hidden;
+            margin: 3px 0px;
+            background: #c4ced7; }
+            .dropdown-menu > li > a,
+            .topbar .switcher_bar .context-selection .context-lists ul li > a {
+              display: block;
+              padding: 0px 20px;
+              font-weight: normal;
+              line-height: 30px;
+              height: 30px;
+              color: #000;
+              white-space: nowrap; }
+
+.dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus,
+.topbar .switcher_bar .context-selection .context-lists ul li > a:focus,
+.topbar .switcher_bar .context-selection .context-lists ul li > a:hover {
+  text-decoration: none;
+  color: #000;
+  background: #ebeced; }
+
+.dropdown-menu > .active > a, .dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+  color: #fff;
+  text-decoration: none;
+  outline: 0;
+  background: #428bca; }
+
+.dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+  color: #999; }
+
+.dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus {
+  text-decoration: none;
+  background-color: transparent;
+  background-image: none;
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  cursor: not-allowed; }
+
+.open > .dropdown-menu {
+  display: block; }
+  .open > a {
+    outline: 0; }
+
+.dropdown-menu-right {
+  left: auto;
+  right: 0; }
+
+  .dropdown-menu-left {
+    left: 0;
+    right: auto; }
+
+    .dropdown-header {
+      display: block;
+      padding: 0px 20px;
+      font-size: 12px;
+      line-height: 30px;
+      font-weight: 600;
+      color: #000;
+      white-space: nowrap; }
+
+      .dropdown-backdrop {
+        position: fixed;
+        left: 0;
+        right: 0;
+        bottom: 0;
+        top: 0;
+        z-index: 990; }
+
+        .pull-right > .dropdown-menu {
+          right: 0;
+          left: auto; }
+
+          .dropup .caret, .navbar-fixed-bottom .dropdown .caret {
+            border-top: 0;
+            border-bottom: 4px solid;
+            content: ""; }
+            .dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu {
+              top: auto;
+              bottom: 100%;
+              margin-bottom: 1px; }
+
+@media (min-width: 768px) {
+  .navbar-right .dropdown-menu {
+    right: 0;
+    left: auto;   }
+    .navbar-right .dropdown-menu-left {
+      left: 0;
+      right: auto;   }
+}
+.btn-group, .btn-group-vertical {
+  position: relative;
+  display: inline-block;
+  vertical-align: middle; }
+  .btn-group > .btn, .btn-group-vertical > .btn {
+    position: relative;
+    float: left; }
+    .btn-group > .btn:hover, .btn-group > .btn:focus, .btn-group > .btn:active,
+    .btn-group > .btn.active, .btn-group-vertical > .btn:hover,
+    .btn-group-vertical > .btn:focus, .btn-group-vertical > .btn:active,
+    .btn-group-vertical > .btn.active {
+      z-index: 2; }
+      .btn-group > .btn:focus, .btn-group-vertical > .btn:focus {
+        outline: 0; }
+
+.btn-group .btn + .btn, .btn-group .btn + .btn-group, .btn-group .btn-group + .btn,
+.btn-group .btn-group + .btn-group {
+  margin-left: -1px; }
+
+.btn-toolbar {
+  margin-left: -5px; }
+  .btn-toolbar .btn-group, .btn-toolbar .input-group {
+    float: left; }
+    .btn-toolbar > .btn, .btn-toolbar > .btn-group, .btn-toolbar > .input-group {
+      margin-left: 5px; }
+
+.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+  border-radius: 0; }
+
+  .btn-group > .btn:first-child {
+    margin-left: 0; }
+    .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
+      border-bottom-right-radius: 0;
+      border-top-right-radius: 0; }
+
+.btn-group > .btn:last-child:not(:first-child),
+.btn-group > .dropdown-toggle:not(:first-child) {
+  border-bottom-left-radius: 0;
+  border-top-left-radius: 0; }
+
+  .btn-group > .btn-group {
+    float: left; }
+
+    .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+      border-radius: 0; }
+
+      .btn-group > .btn-group:first-child > .btn:last-child,
+      .btn-group > .btn-group:first-child > .dropdown-toggle {
+        border-bottom-right-radius: 0;
+        border-top-right-radius: 0; }
+
+.btn-group > .btn-group:last-child > .btn:first-child {
+  border-bottom-left-radius: 0;
+  border-top-left-radius: 0; }
+
+  .btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle {
+    outline: 0; }
+
+    .btn-group > .btn-lg + .dropdown-toggle,
+    .btn-group .btn-group-lg > .btn + .dropdown-toggle,
+    .btn-group-lg .btn-group > .btn + .dropdown-toggle {
+      padding-left: 12px;
+      padding-right: 12px; }
+
+      .btn-lg .caret, .btn-group-lg .btn .caret {
+        border-width: 5px 5px 0;
+        border-bottom-width: 0; }
+
+        .dropup .btn-lg .caret, .dropup .btn-group-lg .btn .caret,
+        .btn-group-lg .dropup .btn .caret {
+          border-width: 0 5px 5px; }
+
+          .btn-group > .btn + .dropdown-toggle {
+            padding-left: 8px;
+            padding-right: 8px; }
+
+            .btn-group.open .dropdown-toggle {
+              -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.12);
+              box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.12); }
+              .btn-group.open .dropdown-toggle.btn-link {
+                -webkit-box-shadow: none;
+                box-shadow: none; }
+
+.btn .caret {
+  margin-left: 0; }
+
+  .btn-group-vertical > .btn, .btn-group-vertical > .btn-group,
+  .btn-group-vertical > .btn-group > .btn {
+    display: block;
+    float: none;
+    width: 100%;
+    max-width: 100%; }
+    .btn-group-vertical > .btn-group > .btn {
+      float: none; }
+  .btn-group-vertical > .btn + .btn, .btn-group-vertical > .btn + .btn-group,
+  .btn-group-vertical > .btn-group + .btn,
+  .btn-group-vertical > .btn-group + .btn-group {
+    margin-top: -1px;
+    margin-left: 0; }
+
+.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
+  border-radius: 0; }
+  .btn-group-vertical > .btn:first-child:not(:last-child) {
+    border-top-right-radius: 4px;
+    border-bottom-right-radius: 0;
+    border-bottom-left-radius: 0; }
+    .btn-group-vertical > .btn:last-child:not(:first-child) {
+      border-bottom-left-radius: 4px;
+      border-top-right-radius: 0;
+      border-top-left-radius: 0; }
+
+.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
+  border-radius: 0; }
+
+  .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
+  .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+    border-bottom-right-radius: 0;
+    border-bottom-left-radius: 0; }
+
+.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
+  border-top-right-radius: 0;
+  border-top-left-radius: 0; }
+
+  .btn-group-justified {
+    display: table;
+    width: 100%;
+    table-layout: fixed;
+    border-collapse: separate; }
+    .btn-group-justified > .btn, .btn-group-justified > .btn-group {
+      float: none;
+      display: table-cell;
+      width: 1%; }
+      .btn-group-justified > .btn-group .btn {
+        width: 100%; }
+        .btn-group-justified > .btn-group .dropdown-menu {
+          left: auto; }
+
+[data-toggle="buttons"] > .btn > input[type="radio"],
+[data-toggle="buttons"] > .btn > input[type="checkbox"] {
+  position: absolute;
+  z-index: -1;
+  opacity: 0;
+  filter: alpha(opacity=0); }
+.navbar-btn.btn-xs, .btn-group-xs .navbar-btn.btn {
+  margin-top: 14px;
+  margin-bottom: 14px; }
+  .navbar-btn.btn-sm, .btn-group-sm .navbar-btn.btn {
+    margin-top: 10px;
+    margin-bottom: 10px; }
+
+.navbar {
+  position: relative;
+  min-height: 50px;
+  margin-bottom: 20px;
+  border: 1px solid transparent; }
+  @media (min-width: 768px) {
+    .navbar {
+      border-radius: 4px;   }
+}
+
+@media (min-width: 768px) {
+  .navbar-header {
+    float: left;   }
+}
+
+.navbar-collapse {
+  overflow-x: visible;
+  padding-right: 15px;
+  padding-left: 15px;
+  border-top: 1px solid transparent;
+  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
+  -webkit-overflow-scrolling: touch; }
+  .navbar-collapse.in {
+    overflow-y: auto; }
+    @media (min-width: 768px) {
+      .navbar-collapse {
+        width: auto;
+        border-top: 0;
+        box-shadow: none;   }
+        .navbar-collapse.collapse {
+          display: block !important;
+          height: auto !important;
+          padding-bottom: 0;
+          overflow: visible !important;   }
+          .navbar-collapse.in {
+            overflow-y: visible;   }
+            .navbar-fixed-top .navbar-collapse, .navbar-static-top .navbar-collapse,
+            .navbar-fixed-bottom .navbar-collapse {
+              padding-left: 0;
+              padding-right: 0;   }
+}
+
+.navbar-fixed-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse {
+  max-height: 340px; }
+  @media (max-width: 480px) and (orientation: landscape) {
+    .navbar-fixed-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse {
+      max-height: 200px;   }
+}
+
+.container > .navbar-header, .container > .navbar-collapse,
+.container-fluid > .navbar-header, .container-fluid > .navbar-collapse {
+  margin-right: -15px;
+  margin-left: -15px; }
+  @media (min-width: 768px) {
+    .container > .navbar-header, .container > .navbar-collapse,
+    .container-fluid > .navbar-header, .container-fluid > .navbar-collapse {
+      margin-right: 0;
+      margin-left: 0;   }
+}
+
+.navbar-static-top {
+  z-index: 1000;
+  border-width: 0 0 1px; }
+  @media (min-width: 768px) {
+    .navbar-static-top {
+      border-radius: 0;   }
+}
+
+.navbar-fixed-top, .navbar-fixed-bottom {
+  position: fixed;
+  right: 0;
+  left: 0;
+  z-index: 1030;
+  -webkit-transform: translate3d(0, 0, 0);
+  transform: translate3d(0, 0, 0); }
+  @media (min-width: 768px) {
+    .navbar-fixed-top, .navbar-fixed-bottom {
+      border-radius: 0;   }
+}
+
+.navbar-fixed-top {
+  top: 0;
+  border-width: 0 0 1px; }
+
+  .navbar-fixed-bottom {
+    bottom: 0;
+    margin-bottom: 0;
+    border-width: 1px 0 0; }
+
+    .navbar-brand {
+      float: left;
+      padding: 15px 15px;
+      font-size: 18px;
+      line-height: 20px;
+      height: 50px; }
+      .navbar-brand:hover, .navbar-brand:focus {
+        text-decoration: none; }
+        @media (min-width: 768px) {
+          .navbar > .container .navbar-brand, .navbar > .container-fluid .navbar-brand {
+            margin-left: -15px;   }
+}
+
+.navbar-toggle {
+  position: relative;
+  float: right;
+  margin-right: 15px;
+  padding: 9px 10px;
+  margin-top: 8px;
+  margin-bottom: 8px;
+  background-color: transparent;
+  background-image: none;
+  border: 1px solid transparent;
+  border-radius: 4px; }
+  .navbar-toggle:focus {
+    outline: 0; }
+    .navbar-toggle .icon-bar {
+      display: block;
+      width: 22px;
+      height: 2px;
+      border-radius: 1px; }
+      .navbar-toggle .icon-bar + .icon-bar {
+        margin-top: 4px; }
+        @media (min-width: 768px) {
+          .navbar-toggle {
+            display: none;   }
+}
+
+.navbar-nav {
+  margin: 7.5px -15px; }
+  .navbar-nav > li > a {
+    padding-top: 10px;
+    padding-bottom: 10px;
+    line-height: 20px; }
+    @media (max-width: 767px) {
+      .navbar-nav .open .dropdown-menu {
+        position: static;
+        float: none;
+        width: auto;
+        margin-top: 0;
+        background-color: transparent;
+        border: 0;
+        box-shadow: none;   }
+        .navbar-nav .open .dropdown-menu > li > a,
+        .navbar-nav .open .dropdown-menu .dropdown-header,
+        .navbar-nav .open .topbar .switcher_bar .context-selection .context-lists ul li > a,
+        .topbar .switcher_bar .context-selection .context-lists ul li .navbar-nav .open > a {
+          padding: 5px 15px 5px 25px;   }
+          .navbar-nav .open .dropdown-menu > li > a,
+          .navbar-nav .open .topbar .switcher_bar .context-selection .context-lists ul li > a,
+          .topbar .switcher_bar .context-selection .context-lists ul li .navbar-nav .open > a {
+            line-height: 20px;   }
+            .navbar-nav .open .dropdown-menu > li > a:hover,
+            .navbar-nav .open .dropdown-menu > li > a:focus,
+            .navbar-nav .open .topbar .switcher_bar .context-selection .context-lists ul li > a:hover,
+            .topbar .switcher_bar .context-selection .context-lists ul li .navbar-nav .open > a:hover,
+            .navbar-nav .open .topbar .switcher_bar .context-selection .context-lists ul li > a:focus,
+            .topbar .switcher_bar .context-selection .context-lists ul li .navbar-nav .open > a:focus {
+              background-image: none;   }
+}
+  @media (min-width: 768px) {
+    .navbar-nav {
+      float: left;
+      margin: 0;   }
+      .navbar-nav > li {
+        float: left;   }
+        .navbar-nav > li > a {
+          padding-top: 15px;
+          padding-bottom: 15px;   }
+      .navbar-nav.navbar-right:last-child {
+        margin-right: -15px;   }
+}
+
+@media (min-width: 768px) {
+  .navbar-left {
+    float: left !important;   }
+    .navbar-right {
+      float: right !important;   }
+}
+
+.navbar-form {
+  margin-left: -15px;
+  margin-right: -15px;
+  padding: 10px 15px;
+  border-top: 1px solid transparent;
+  border-bottom: 1px solid transparent;
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+  margin-top: 6px;
+  margin-bottom: 6px; }
+  @media (max-width: 767px) {
+    .navbar-form .form-group {
+      margin-bottom: 5px;   }
+}
+  @media (min-width: 768px) {
+    .navbar-form {
+      width: auto;
+      border: 0;
+      margin-left: 0;
+      margin-right: 0;
+      padding-top: 0;
+      padding-bottom: 0;
+      -webkit-box-shadow: none;
+      box-shadow: none;   }
+      .navbar-form.navbar-right:last-child {
+        margin-right: -15px;   }
+}
+
+.navbar-nav > li > .dropdown-menu {
+  margin-top: 0;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0; }
+
+  .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
+    border-bottom-right-radius: 0;
+    border-bottom-left-radius: 0; }
+
+    .navbar-btn {
+      margin-top: 6px;
+      margin-bottom: 6px; }
+
+      .navbar-text {
+        margin-top: 15px;
+        margin-bottom: 15px; }
+        @media (min-width: 768px) {
+          .navbar-text {
+            float: left;
+            margin-left: 15px;
+            margin-right: 15px;   }
+            .navbar-text.navbar-right:last-child {
+              margin-right: 0;   }
+}
+
+.navbar-default {
+  background-color: #0074cd;
+  border-color: #0061ac; }
+  .navbar-default .navbar-brand {
+    color: #fff; }
+    .navbar-default .navbar-brand:hover, .navbar-default .navbar-brand:focus {
+      color: #fff;
+      background-color: none; }
+  .navbar-default .navbar-text {
+    color: #ddd; }
+    .navbar-default .navbar-nav > li > a {
+      color: #fff; }
+      .navbar-default .navbar-nav > li > a:hover,
+      .navbar-default .navbar-nav > li > a:focus {
+        color: #fff;
+        background-color: #00579a; }
+    .navbar-default .navbar-nav > .active > a,
+    .navbar-default .navbar-nav > .active > a:hover,
+    .navbar-default .navbar-nav > .active > a:focus {
+      color: #fff;
+      background-color: #00579a; }
+    .navbar-default .navbar-nav > .disabled > a,
+    .navbar-default .navbar-nav > .disabled > a:hover,
+    .navbar-default .navbar-nav > .disabled > a:focus {
+      color: #ddd;
+      background-color: transparent; }
+  .navbar-default .navbar-toggle {
+    border-color: #00579a; }
+    .navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus {
+      background-color: #00579a; }
+      .navbar-default .navbar-toggle .icon-bar {
+        background-color: #fff; }
+  .navbar-default .navbar-collapse, .navbar-default .navbar-form {
+    border-color: #0061ac; }
+    .navbar-default .navbar-nav > .open > a,
+    .navbar-default .navbar-nav > .open > a:hover,
+    .navbar-default .navbar-nav > .open > a:focus {
+      background-color: #00579a;
+      color: #fff; }
+    @media (max-width: 767px) {
+      .navbar-default .navbar-nav .open .dropdown-menu > li > a,
+      .navbar-default .navbar-nav .open .topbar .switcher_bar .context-selection .context-lists ul li > a,
+      .topbar .switcher_bar .context-selection .context-lists ul li .navbar-default .navbar-nav .open > a {
+        color: #fff;   }
+        .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
+        .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus,
+        .navbar-default .navbar-nav .open .topbar .switcher_bar .context-selection .context-lists ul li > a:focus,
+        .topbar .switcher_bar .context-selection .context-lists ul li .navbar-default .navbar-nav .open > a:focus,
+        .navbar-default .navbar-nav .open .topbar .switcher_bar .context-selection .context-lists ul li > a:hover,
+        .topbar .switcher_bar .context-selection .context-lists ul li .navbar-default .navbar-nav .open > a:hover {
+          color: #fff;
+          background-color: #00579a;   }
+      .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
+      .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
+      .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
+        color: #fff;
+        background-color: #00579a;   }
+      .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
+      .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+      .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+        color: #ddd;
+        background-color: transparent;   }
+}
+  .navbar-default .navbar-link {
+    color: #fff; }
+    .navbar-default .navbar-link:hover {
+      color: #fff; }
+  .navbar-default .btn-link {
+    color: #fff; }
+    .navbar-default .btn-link:hover, .navbar-default .btn-link:focus {
+      color: #fff; }
+      .navbar-default .btn-link[disabled]:hover,
+      .navbar-default .btn-link[disabled]:focus,
+      fieldset[disabled] .navbar-default .btn-link:hover,
+      fieldset[disabled] .navbar-default .btn-link:focus {
+        color: #ddd; }
+
+.navbar-inverse {
+  background-color: #033C73;
+  border-color: #022f5a; }
+  .navbar-inverse .navbar-brand {
+    color: #fff; }
+    .navbar-inverse .navbar-brand:hover, .navbar-inverse .navbar-brand:focus {
+      color: #fff;
+      background-color: none; }
+  .navbar-inverse .navbar-text {
+    color: #fff; }
+    .navbar-inverse .navbar-nav > li > a {
+      color: #fff; }
+      .navbar-inverse .navbar-nav > li > a:hover,
+      .navbar-inverse .navbar-nav > li > a:focus {
+        color: #fff;
+        background-color: #022f5a; }
+    .navbar-inverse .navbar-nav > .active > a,
+    .navbar-inverse .navbar-nav > .active > a:hover,
+    .navbar-inverse .navbar-nav > .active > a:focus {
+      color: #fff;
+      background-color: #022f5a; }
+    .navbar-inverse .navbar-nav > .disabled > a,
+    .navbar-inverse .navbar-nav > .disabled > a:hover,
+    .navbar-inverse .navbar-nav > .disabled > a:focus {
+      color: #ccc;
+      background-color: transparent; }
+  .navbar-inverse .navbar-toggle {
+    border-color: #022f5a; }
+    .navbar-inverse .navbar-toggle:hover, .navbar-inverse .navbar-toggle:focus {
+      background-color: #022f5a; }
+      .navbar-inverse .navbar-toggle .icon-bar {
+        background-color: #fff; }
+  .navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form {
+    border-color: #022a50; }
+    .navbar-inverse .navbar-nav > .open > a,
+    .navbar-inverse .navbar-nav > .open > a:hover,
+    .navbar-inverse .navbar-nav > .open > a:focus {
+      background-color: #022f5a;
+      color: #fff; }
+    @media (max-width: 767px) {
+      .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
+        border-color: #022f5a;   }
+        .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
+          background-color: #022f5a;   }
+          .navbar-inverse .navbar-nav .open .dropdown-menu > li > a,
+          .navbar-inverse .navbar-nav .open .topbar .switcher_bar .context-selection .context-lists ul li > a,
+          .topbar .switcher_bar .context-selection .context-lists ul li .navbar-inverse .navbar-nav .open > a {
+            color: #fff;   }
+            .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
+            .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus,
+            .navbar-inverse .navbar-nav .open .topbar .switcher_bar .context-selection .context-lists ul li > a:focus,
+            .topbar .switcher_bar .context-selection .context-lists ul li .navbar-inverse .navbar-nav .open > a:focus,
+            .navbar-inverse .navbar-nav .open .topbar .switcher_bar .context-selection .context-lists ul li > a:hover,
+            .topbar .switcher_bar .context-selection .context-lists ul li .navbar-inverse .navbar-nav .open > a:hover {
+              color: #fff;
+              background-color: #022f5a;   }
+      .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
+      .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
+      .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
+        color: #fff;
+        background-color: #022f5a;   }
+      .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
+      .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+      .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+        color: #ccc;
+        background-color: transparent;   }
+}
+  .navbar-inverse .navbar-link {
+    color: #fff; }
+    .navbar-inverse .navbar-link:hover {
+      color: #fff; }
+  .navbar-inverse .btn-link {
+    color: #fff; }
+    .navbar-inverse .btn-link:hover, .navbar-inverse .btn-link:focus {
+      color: #fff; }
+      .navbar-inverse .btn-link[disabled]:hover,
+      .navbar-inverse .btn-link[disabled]:focus,
+      fieldset[disabled] .navbar-inverse .btn-link:hover,
+      fieldset[disabled] .navbar-inverse .btn-link:focus {
+        color: #ccc; }
+.btn-xs .badge, .btn-group-xs .btn .badge {
+  top: 0;
+  padding: 1px 5px; }
+
+.badge {
+  display: inline-block;
+  min-width: 10px;
+  padding: 3px 7px;
+  font-size: 12px;
+  font-weight: bold;
+  color: #fff;
+  line-height: 1;
+  vertical-align: baseline;
+  white-space: nowrap;
+  text-align: center;
+  background-color: #0074cd;
+  border-radius: 10px; }
+  .badge:empty {
+    display: none; }
+    .btn .badge {
+      position: relative;
+      top: -1px; }
+      a.list-group-item.active > .badge, .nav-pills > .active > a > .badge {
+        color: #145c9e;
+        background-color: #fff; }
+        .nav-pills > li > a > .badge {
+          margin-left: 3px; }
+
+a.badge:hover, a.badge:focus {
+  color: #fff;
+  text-decoration: none;
+  cursor: pointer; }
+div.table_cell_wrapper .inline-edit-actions button.btn-xs,
+div.table_cell_wrapper .inline-edit-actions .btn-group-xs button.btn,
+.btn-group-xs div.table_cell_wrapper .inline-edit-actions button.btn {
+  margin: 1px; }
+  div.table_cell_wrapper .inline-edit-actions button.btn-xs:not(:first-child),
+  div.table_cell_wrapper .inline-edit-actions .btn-group-xs button:not(:first-child).btn,
+  .btn-group-xs div.table_cell_wrapper .inline-edit-actions button:not(:first-child).btn {
+    margin-top: 0; }
+
+td.inline_edit_available div.table_cell_wrapper .table_cell_action button.ajax-inline-edit {
+  padding: 9px 12px 9px 12px;
+  position: relative;
+  border-radius: 0px;
+  position: relative;
+  display: block;
+  background: none;
+  border: 0 none; }
+  td.inline_edit_available div.table_cell_wrapper .table_cell_action button.ajax-inline-edit:before {
+    display: inline-block;
+    content: "";
+    width: 18px;
+    height: 20px;
+    margin-top: 0px;
+    *margin-right: 0.3em;
+    line-height: 14px;
+    background-image: url('/horizon/static/dashboard/scss/None');
+    background-position: 0 -72px;
+    background-repeat: no-repeat;
+    position: absolute;
+    top: 2px;
+    left: 4px; }
+
+td.has-form {
+  padding: 0 !important; }
+
+  div.table_cell_wrapper {
+    position: relative; }
+    div.table_cell_wrapper .table_cell_data_wrapper {
+      padding-right: 35px;
+      min-height: 15px; }
+      div.table_cell_wrapper .inline-edit-label {
+        display: inline; }
+        div.table_cell_wrapper .inline-edit-form {
+          float: left;
+          padding: 1px;
+          padding-right: 30px;
+          width: 100%; }
+          div.table_cell_wrapper .inline-edit-form input,
+          div.table_cell_wrapper .inline-edit-form textarea {
+            width: 100%;
+            height: 45px;
+            border: 2px inset;
+            border-color: lightgray;
+            background: oldlace; }
+            div.table_cell_wrapper .inline-edit-form input[type='checkbox'] {
+              width: auto;
+              height: auto;
+              margin-left: 5%;
+              margin-top: 10%; }
+              div.table_cell_wrapper .inline-edit-form label {
+                vertical-align: text-bottom; }
+                div.table_cell_wrapper .inline-edit-form textarea {
+                  resize: vertical;
+                  padding: 6px; }
+    div.table_cell_wrapper .inline-edit-actions {
+      float: right;
+      width: 0; }
+      div.table_cell_wrapper .table_cell_action {
+        float: right;
+        width: 28px;
+        margin: 0; }
+        div.table_cell_wrapper .table_cell_action button.ajax-inline-edit {
+          padding: 10px;
+          position: relative;
+          display: none;
+          background: none;
+          border: 0 none; }
+    div.table_cell_wrapper .table_cell_action {
+      width: auto;
+      margin: auto 0px 0px 0px;
+      display: none;
+      position: absolute;
+      top: -10px;
+      right: 0px;
+      z-index: 99; }
+      div.table_cell_wrapper .inline-edit-error .error {
+        padding: 9px 12px 9px 12px;
+        position: relative;
+        border-radius: 0px;
+        position: absolute;
+        width: 18px;
+        height: 20px;
+        top: 20px;
+        left: 2px;
+        padding: 0; }
+        div.table_cell_wrapper .inline-edit-error .error:before {
+          display: inline-block;
+          content: "";
+          width: 20px;
+          height: 20px;
+          margin-top: 0px;
+          *margin-right: 0.3em;
+          line-height: 14px;
+          background-image: url('/horizon/static/dashboard/scss/None');
+          background-position: -144px -120px;
+          background-repeat: no-repeat;
+          position: absolute;
+          top: 0px;
+          left: 0px; }
+    div.table_cell_wrapper .inline-edit-status .success {
+      padding: 9px 12px 9px 12px;
+      position: relative;
+      border-radius: 0px;
+      padding: 0;
+      position: absolute;
+      top: 2px;
+      right: 18px;
+      width: 18px;
+      height: 20px;
+      z-index: 100; }
+      div.table_cell_wrapper .inline-edit-status .success:before {
+        display: inline-block;
+        content: "";
+        width: 20px;
+        height: 20px;
+        margin-top: 0px;
+        *margin-right: 0.3em;
+        line-height: 14px;
+        background-image: url('/horizon/static/dashboard/scss/None');
+        background-position: -288px 0px;
+        background-repeat: no-repeat;
+        position: absolute;
+        top: 0px;
+        left: 0px; }
+    div.table_cell_wrapper .inline-edit-status .loading {
+      padding: 9px 12px 9px 12px;
+      position: relative;
+      border-radius: 0px;
+      padding: 0;
+      position: absolute;
+      top: 0px;
+      right: 24px;
+      width: 18px;
+      height: 20px;
+      z-index: 100; }
+      div.table_cell_wrapper .inline-edit-status .loading:before {
+        display: inline-block;
+        content: "";
+        width: 20px;
+        height: 20px;
+        margin-top: 0px;
+        *margin-right: 0.3em;
+        line-height: 14px;
+        background-image: url('/horizon/static/dashboard/img/spinner.gif?205a75e19a4e');
+        background-position: 0px 0px;
+        background-repeat: no-repeat;
+        position: absolute;
+        top: 0px;
+        left: 0px; }
+    div.table_cell_wrapper .inline-edit-status.inline-edit-mod .loading {
+      top: 15px;
+      right: 34px; }
+.nav {
+  margin-bottom: 0;
+  padding-left: 0;
+  list-style: none; }
+  .nav > li {
+    position: relative;
+    display: block; }
+    .nav > li > a {
+      position: relative;
+      display: block;
+      padding: 10px 15px; }
+      .nav > li > a:hover, .nav > li > a:focus {
+        text-decoration: none;
+        background-color: #eee; }
+    .nav > li.disabled > a {
+      color: #999; }
+      .nav > li.disabled > a:hover, .nav > li.disabled > a:focus {
+        color: #999;
+        text-decoration: none;
+        background-color: transparent;
+        cursor: not-allowed; }
+  .nav .open > a, .nav .open > a:hover, .nav .open > a:focus {
+    background-color: #eee;
+    border-color: #145c9e; }
+  .nav .nav-divider {
+    height: 1px;
+    margin: 9px 0;
+    overflow: hidden;
+    background-color: #e5e5e5; }
+    .nav > li > a > img {
+      max-width: none; }
+
+.nav-tabs {
+  border-bottom: 1px solid #ddd; }
+  .nav-tabs > li {
+    height: 33px;
+    float: left;
+    margin-bottom: -1px; }
+    .nav-tabs > li > a {
+      margin-right: 2px;
+      line-height: 33px;
+      border: 1px solid transparent;
+      padding: 0px 14px; }
+      .nav-tabs > li > a:hover {
+        border-color: #eee #eee #ddd;
+        background-color: #dbdcdf;
+        height: 32px; }
+    .nav-tabs > li.active > a, .nav-tabs > li.active > a:hover,
+    .nav-tabs > li.active > a:focus {
+      border-color: #d5dfe6 #d5dfe6 #fff;
+      background: url('/horizon/static/dashboard/img/content_tab_bkgd_selected.png?98c2981dc0ac') repeat-x;
+      color: #005d9d;
+      height: 33px;
+      line-height: 33px;
+      font-weight: bold;
+      cursor: default; }
+
+.nav-justified, .nav-tabs.nav-justified {
+  width: 100%; }
+  .nav-justified > li, .nav-tabs.nav-justified > li {
+    float: none; }
+    .nav-justified > li > a, .nav-tabs.nav-justified > li > a {
+      text-align: center;
+      margin-bottom: 5px; }
+  .nav-justified > .dropdown .dropdown-menu,
+  .nav-tabs.nav-justified > .dropdown .dropdown-menu {
+    top: auto;
+    left: auto; }
+    @media (min-width: 768px) {
+      .nav-justified > li, .nav-tabs.nav-justified > li {
+        display: table-cell;
+        width: 1%;   }
+        .nav-justified > li > a, .nav-tabs.nav-justified > li > a {
+          margin-bottom: 0;   }
+}
+
+.nav-tabs-justified, .nav-tabs.nav-justified {
+  border-bottom: 0; }
+  .nav-tabs-justified > li > a, .nav-tabs.nav-justified > li > a {
+    margin-right: 0;
+    border-radius: 4px; }
+    .nav-tabs-justified > .active > a, .nav-tabs-justified > .active > a:hover,
+    .nav-tabs-justified > .active > a:focus, .nav-tabs.nav-justified > .active > a,
+    .nav-tabs.nav-justified > .active > a:hover,
+    .nav-tabs.nav-justified > .active > a:focus {
+      border: 1px solid #ddd; }
+      @media (min-width: 768px) {
+        .nav-tabs-justified > li > a, .nav-tabs.nav-justified > li > a {
+          border-bottom: 1px solid #ddd;
+          border-radius: 4px 4px 0 0;   }
+          .nav-tabs-justified > .active > a, .nav-tabs-justified > .active > a:hover,
+          .nav-tabs-justified > .active > a:focus, .nav-tabs.nav-justified > .active > a,
+          .nav-tabs.nav-justified > .active > a:hover,
+          .nav-tabs.nav-justified > .active > a:focus {
+            border-bottom-color: #fff;   }
+}
+
+.nav-pills > li {
+  float: left; }
+  .nav-pills > li > a {
+    border-radius: 4px; }
+    .nav-pills > li + li {
+      margin-left: 2px; }
+      .nav-pills > li.active > a, .nav-pills > li.active > a:hover,
+      .nav-pills > li.active > a:focus {
+        color: #fff;
+        background-color: #0074cd; }
+
+.nav-stacked > li {
+  float: none; }
+  .nav-stacked > li + li {
+    margin-top: 2px;
+    margin-left: 0; }
+
+.tab-content > .tab-pane {
+  display: none; }
+  .tab-content > .active {
+    display: block; }
+
+.nav-tabs .dropdown-menu {
+  margin-top: -1px;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0; }
+.form-inline, .navbar-form, .table_actions {
+  display: inline; }
+  .form-inline input, .form-inline button, .form-inline a.btn, .navbar-form input,
+  .navbar-form button, .navbar-form a.btn, .table_actions input,
+  .table_actions button, .table_actions a.btn {
+    margin-left: 5px; }
+
+.clearfix:after {
+  visibility: hidden;
+  display: block;
+  font-size: 0;
+  content: " ";
+  clear: both;
+  height: 0; }
+
+  * html .clearfix {
+    zoom: 1; }
+
+    *:first-child + html .clearfix {
+      zoom: 1; }
+
+      @font-face {
+        src: url('/horizon/static/dashboard/fonts/Anivers_Regular-webfont.eot?5f61443eb372');
+        src: url('/horizon/static/dashboard/fonts/Anivers_Regular-webfont.eot?iefix&5f61443eb372') format('eot'),
+                url('/horizon/static/dashboard/fonts/Anivers_Regular-webfont.woff?2c3db88030ec') format('woff'),
+                url('/horizon/static/dashboard/fonts/Anivers_Regular-webfont.ttf?6a7822aa21cf') format('truetype'),
+                url('/horizon/static/dashboard/fonts/Anivers_Regular-webfont.svg?1dbc53d268e6#webfont3JLVF59W') format('svg');
+        font-weight: normal;
+        font-style: normal; }
+
+        body {
+          background: #fff;
+          color: #000;
+          min-width: 900px; }
+
+small {
+  font-size: 11px; }
+
+  a {
+    color: #145c93;
+    text-decoration: none; }
+
+    a:hover, a:focus {
+      color: #2a6496;
+      text-decoration: underline; }
+
+      ul {
+        list-style: none;
+        margin: 0; }
+
+        .list-bullet {
+          list-style: disc; }
+
+          .small-padding {
+            padding-left: 0;
+            padding-right: 5px;
+            padding-bottom: 5px; }
+
+            dt {
+              font-weight: bold; }
+
+              .page-header {
+                margin: 0 0 5px 0;
+                padding: 10px 0 5px 0;
+                border-bottom: 0;
+                font-family: Arial;
+                height: auto;
+                width: 100%; }
+                .page-header h1 {
+                  margin: 0; }
+
+h2 {
+  color: #000000;
+  font-size: 30px;
+  font-weight: normal; }
+
+  #create_container_form .modal-footer {
+    margin-top: 190px; }
+
+    .sidebar {
+      background-color: #ebeced;
+      margin-left: -235px;
+      margin-top: -79px;
+      left: 235px;
+      width: 235px;
+      height: 100%;
+      position: absolute;
+      border-right: 1px solid #c4ced8;
+      z-index: -1; }
+
+      .sidebar h4 {
+        color: #000000;
+        margin: 0px;
+        padding: 0px 13px 0px 28px;
+        border-bottom: 1px solid #c4ced8; }
+
+        .sidebar .nav-tabs {
+          margin-top: -34px; }
+
+          .sidebar .nav-tabs li.active a {
+            background-color: #fff; }
+
+            a.current_item {
+              width: 163px;
+              float: left; }
+
+              a.current_item:hover {
+                text-decoration: none; }
+
+                a.current_item:hover h3, a.current_item:hover h4 {
+                  color: #145c9e;
+                  border-radius: 4px; }
+
+                  #usage {
+                    margin-bottom: 25px;
+                    height: 125px; }
+
+                    .usage_block {
+                      background: #e8f8ff;
+                      color: #84b6c5;
+                      border: 1px solid #afe3fb;
+                      border-radius: 5px;
+                      float: left;
+                      width: 29%;
+                      margin-right: 5%;
+                      min-height: 125px; }
+
+                      .usage_block.last {
+                        margin-right: 0; }
+
+                        .usage_block h3 {
+                          background: #cef0ff;
+                          color: #4fa5bf;
+                          font-weight: normal;
+                          padding: 0 0 0 10px;
+                          border-bottom: 1px solid #c6e7f5;
+                          border-top-left-radius: 5px;
+                          border-top-right-radius: 5px; }
+
+                          .usage_block ul {
+                            margin: 10px; }
+
+                            .usage_block .quantity {
+                              font-size: 25px; }
+
+                              .usage_block li {
+                                font-size: 11px;
+                                margin: 0 0 15px 0; }
+
+                                .usage_block .unit {
+                                  font-size: 11px;
+                                  text-transform: uppercase;
+                                  padding: 0 0 0 1px; }
+
+                                  .table_wrapper > form.wait, .table_wrapper > form.wait * {
+                                    cursor: wait !important; }
+
+                                    .table-bordered {
+                                      border: none; }
+
+                                      .table_header {
+                                        min-height: 35px;
+                                        padding: 5px 0; }
+
+                                        .table_caption th {
+                                          background-color: transparent;
+                                          border: none; }
+
+                                          .table-bordered th.table_header {
+                                            border: none;
+                                            padding: 8px 0px; }
+
+                                            .table-bordered tr.table_caption + tr th {
+                                              border-top: 1px solid #d5dfe6; }
+
+                                              .table-bordered tr.table_caption + tr th:first-child,
+                                              .table-bordered tr.table_caption + tr th.hide + th {
+                                                border-left: 1px solid #d5dfe6; }
+
+                                                .table-bordered tr.table_caption + tr th:last-child {
+                                                  border-right: 1px solid #d5dfe6; }
+
+                                                  .table-bordered tbody tr td:first-child, .table-bordered tfoot tr td:first-child {
+                                                    border-left: 1px solid #d5dfe6; }
+
+                                                    .table-bordered tbody tr td:last-child, .table-bordered tfoot tr td:last-child {
+                                                      border-right: 1px solid #d5dfe6; }
+
+                                                      .table-bordered tfoot tr td:first-child {
+                                                        border-bottom: 1px solid #d5dfe6; }
+
+                                                        .table-bordered tfoot tr td:last-child {
+                                                          border-bottom: 1px solid #d5dfe6; }
+
+                                                          .table_title h3, .table_header h3 {
+                                                            font-weight: normal;
+                                                            font-size: 24px;
+                                                            margin: 0 0 5px 0;
+                                                            float: left; }
+
+                                                            .table th.header {
+                                                              cursor: pointer; }
+
+                                                              .table th.header:hover {
+                                                                background-color: #e8e8e8;
+                                                                text-decoration: underline; }
+
+                                                                .table tbody td.anchor a {
+                                                                  display: block; }
+
+                                                                  .table tr.table_caption th.header:hover {
+                                                                    background-color: transparent;
+                                                                    cursor: default; }
+
+                                                                    .table th.headerSortUp:hover, .table th.headerSortDown:hover {
+                                                                      background-color: #dfdfdf; }
+
+                                                                      .table th.headerSortUp, .table th.headerSortDown {
+                                                                        background-color: #f2f4f7;
+                                                                        background-repeat: no-repeat; }
+
+                                                                        .table th.headerSortDown {
+                                                                          background-image: url('/horizon/static/dashboard/img/drop_arrow.png?493996e1b30a'); }
+
+                                                                          .table th.headerSortUp {
+                                                                            background-image: url('/horizon/static/dashboard/img/up_arrow.png?049fea208e16'); }
+
+                                                                            .table tr.summation td:first-child, .table tr.summation td:last-child {
+                                                                              border-radius: 0;
+                                                                              border-bottom: 0 none; }
+
+                                                                              .table li {
+                                                                                list-style-position: inside; }
+
+                                                                                th {
+                                                                                  background: #f2f4f7; }
+
+                                                                                  td.anchor {
+                                                                                    padding: 0; }
+
+                                                                                    .main_nav {
+                                                                                      list-style: none;
+                                                                                      width: 222px;
+                                                                                      margin: 10px 0 20px 0; }
+
+                                                                                      .main_nav a {
+                                                                                        color: #999;
+                                                                                        width: 185px;
+                                                                                        padding: 10px;
+                                                                                        display: block;
+                                                                                        margin-left: 20px; }
+
+                                                                                        .main_nav a.active {
+                                                                                          background: #fff;
+                                                                                          border: 2px solid #d8d8d8;
+                                                                                          border-right: 0;
+                                                                                          border-bottom-color: #ccc; }
+
+                                                                                          table form {
+                                                                                            margin-bottom: 0;
+                                                                                            width: 1px; }
+
+                                                                                            .messages {
+                                                                                              position: fixed;
+                                                                                              z-index: 9999;
+                                                                                              top: 20px;
+                                                                                              right: 20px;
+                                                                                              width: 300px; }
+                                                                                              .messages .alert {
+                                                                                                -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+                                                                                                box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); }
+                                                                                                .messages .alert.alert-danger, .messages .alert.javascript_disabled_alert {
+                                                                                                  border-width: 1px;
+                                                                                                  border-style: solid;
+                                                                                                  border-color: #b1191e; }
+                                                                                                  .messages .alert.alert-success {
+                                                                                                    border-width: 1px;
+                                                                                                    border-style: solid;
+                                                                                                    border-color: #ccdbe6; }
+
+.alert .alert-actions {
+  margin-top: -23px;
+  margin-right: -23px; }
+
+  .modal > form, .login > form, .alert-actions > form {
+    margin-bottom: 0; }
+
+    .alert p {
+      overflow: hidden;
+      word-wrap: break-word; }
+
+      .alert p:last-child {
+        margin-bottom: 0; }
+
+        #actions.single {
+          width: 90px; }
+
+          .table-striped tr td {
+            transition: background 0.2s;
+            -webkit-transition: background 0.2s;
+            -moz-transition: background 0.2s;
+            -o-transition: background 0.2s; }
+
+            .inspect {
+              float: left;
+              display: block;
+              margin-top: 5px;
+              margin-right: 25px; }
+
+              .table {
+                margin-bottom: 25px; }
+                .table > thead > tr > th, .table > thead > tr > td, .table > tbody > tr > th,
+                .table > tbody > tr > td, .table > tfoot > tr > th, .table > tfoot > tr > td {
+                  vertical-align: middle; }
+
+.table tr td {
+  vertical-align: middle; }
+
+  .table tr.empty td {
+    text-align: center; }
+
+    .table tfoot tr td {
+      border-top: 1px solid #eeeeee;
+      background-color: #f2f4f7;
+      font-size: 11px;
+      line-height: 14px; }
+
+      .table_actions {
+        float: right;
+        min-width: 400px;
+        margin-right: 5px; }
+
+        .table_actions .table_search, .table_actions .table_filter {
+          display: inline-flex;
+          display: -ms-inline-flexbox;
+          -ms-flex-direction: row;
+          display: -webkit-inline-flex;
+          display: -moz-inline-flex; }
+
+          .table_search input[type="text"] {
+            padding-right: 26px; }
+            .table_search select {
+              width: auto; }
+
+.table_actions .table_actions_menu {
+  display: inline-block;
+  position: relative;
+  margin-left: 5px; }
+  .table_actions .table_actions_menu .dropdown-menu {
+    left: auto;
+    right: 0; }
+    .table_actions .table_actions_menu .dropdown-menu a,
+    .table_actions .table_actions_menu .dropdown-menu button {
+      margin-left: 0px;
+      padding-left: 22px; }
+      .table_actions .table_actions_menu .dropdown-menu a .fa,
+      .table_actions .table_actions_menu .dropdown-menu button .fa {
+        margin-left: -14px; }
+
+td.no-transition {
+  -webkit-transition: none !important;
+  -moz-transition: none !important;
+  -o-transition: none !important;
+  -ms-transition: none !important;
+  transition: none !important; }
+
+  td.success {
+    background-color: #dff0d8 !important; }
+
+    td.loading {
+      background-color: #e6e6e6 !important; }
+
+      .table_header .table_actions {
+        display: inline-flex;
+        display: -ms-inline-flexbox;
+        -ms-flex-direction: row;
+        display: -webkit-inline-flex;
+        display: -moz-inline-flex;
+        min-width: 0; }
+
+        .table_header .table_actions a, .table_header .table_actions > button,
+        .table_header .table_actions .table_search button {
+          display: inline-block;
+          float: none;
+          max-height: 32px;
+          font-weight: 600; }
+
+          .table_header .table_actions a:hover {
+            background: -webkit-linear-gradient(#f8f9fa, #f1f4f5);
+            background: -o-linear-gradient(#f8f9fa, #f1f4f5);
+            background: -moz-linear-gradient(#f8f9fa, #f1f4f5);
+            background: linear-gradient(#f8f9fa, #f1f4f5); }
+
+            .table_header .table_actions .table_search select {
+              margin: 0px 5px;
+              line-height: 22px;
+              height: 32px; }
+
+              .table_header .table_filter {
+                vertical-align: bottom;
+                margin-right: 20px; }
+
+                .table_header .table_filter i {
+                  vertical-align: middle; }
+
+                  .table_actions form {
+                    float: right;
+                    margin-left: 10px; }
+
+                    .hidden {
+                      display: none; }
+
+                      .table-striped.datatable tbody td {
+                        background-clip: padding-box; }
+                        .table-striped.datatable tbody tr.odd td {
+                          background-color: #fff; }
+                          .table-striped.datatable tbody tr.even td {
+                            background-color: #f9f9f9; }
+                            .table-striped.datatable tbody tr.odd:hover td,
+                            .table-striped.datatable tbody tr.even:hover td,
+                            .table-striped.datatable tbody tr:hover th {
+                              background-color: #f5f5f5; }
+
+.table-striped tbody tr.status_unknown:nth-child(odd) td {
+  background-color: #ffffb5; }
+
+  .table-striped tbody tr.status_unknown:nth-child(even) td {
+    background-color: #ffffc6; }
+
+    .nowrap-col {
+      white-space: nowrap; }
+
+      .overview {
+        font-size: 24px; }
+
+        #monitoring {
+          background: #fff;
+          font-size: 14px;
+          height: 20px;
+          margin: -18px 0 25px;
+          padding: 10px;
+          border: 1px solid #dddddd; }
+
+          #monitoring h3 {
+            font-size: 14px;
+            font-weight: normal;
+            float: left;
+            line-height: 18px; }
+
+            #external_links, #external_links li {
+              float: left; }
+
+              #external_links li {
+                margin: 0 0 0 15px; }
+
+                .datatable th.narrow {
+                  width: 1em; }
+                  .datatable input {
+                    padding: 2px 5px;
+                    margin: 0;
+                    height: 32px; }
+                    .datatable th span.required:after {
+                      content: "*";
+                      font-weight: bold;
+                      line-height: 0;
+                      padding-left: 4px;
+                      color: #0074cd; }
+                      .datatable .normal_column ul {
+                        padding-left: 0; }
+
+.datepicker {
+  z-index: 1060 !important; }
+
+  .form-control[readonly], .view-credentials input, .datepicker input[readonly] {
+    cursor: text; }
+
+    form label {
+      text-align: left;
+      color: #555;
+      font-weight: bold;
+      display: inline-block; }
+
+      .login.modal .modal-dialog {
+        width: 390px; }
+
+        .modal.fullscreen .modal-dialog {
+          width: 90%;
+          margin: auto;
+          left: 5%; }
+
+          .modal.loading .modal-dialog {
+            width: 170px; }
+            .modal.loading .modal-dialog .modal-body {
+              height: 170px; }
+
+.modal.loading p {
+  text-align: center;
+  position: absolute;
+  bottom: 0;
+  width: 150px; }
+
+  .modal-body {
+    overflow-y: visible;
+    max-height: none; }
+
+    .modal-body table {
+      margin-bottom: 30px; }
+
+      .modal-body ~ hr {
+        margin-bottom: 0; }
+
+        .static_page {
+          float: left;
+          background-color: #fff; }
+          .static_page > form {
+            margin-bottom: 0; }
+
+.clear {
+  clear: both;
+  width: 0;
+  height: 0;
+  padding: 0;
+  margin: 0; }
+
+  .modal {
+    top: 0 !important; }
+
+    .modal-footer input {
+      width: auto; }
+      .modal-footer .footer-row {
+        margin-right: 0px;
+        margin-left: 0px; }
+        .modal-footer a.close {
+          margin-top: 0;
+          margin-right: 5px;
+          font-size: 13px;
+          line-height: 1.42857;
+          color: #666;
+          font-weight: normal;
+          filter: alpha(opacity=100);
+          -khtml-opacity: 1;
+          -moz-opacity: 1;
+          opacity: 1; }
+          .modal-footer a.close:hover {
+            color: #333;
+            text-decoration: underline; }
+
+.modal-body .modal-footer {
+  width: 670px;
+  margin-left: -25px;
+  margin-right: -15px;
+  background-color: #f5f5f5; }
+
+  .modal-body .help-block {
+    text-align: left;
+    float: left;
+    width: 100%;
+    margin-bottom: 10px; }
+
+    #create_keypair_modal .clearfix {
+      margin-bottom: 115px; }
+
+      #actions {
+        width: 90px; }
+
+        #actions .btn {
+          margin-bottom: 5px; }
+
+          #actions a.btn {
+            width: 70px; }
+
+            #actions input.btn {
+              text-align: left; }
+
+              #images #actions {
+                width: 100px; }
+
+                .details-modal .modal-body {
+                  padding-bottom: 20px; }
+
+                  td.select {
+                    width: 10px; }
+
+                    .actions_column {
+                      white-space: nowrap;
+                      padding: 10px;
+                      position: relative;
+                      width: 1em;
+                      background-clip: padding-box; }
+
+                      form.actions_column {
+                        width: auto;
+                        font-family: Arial, "Helvetica Neue", Helvetica, sans-serif; }
+
+                        .actions_column .btn-group {
+                          display: inline-flex;
+                          display: -ms-inline-flexbox;
+                          -ms-flex-direction: row;
+                          display: -webkit-inline-flex;
+                          display: -moz-inline-flex; }
+
+                          .actions_column .row_actions a, .actions_column .row_actions input,
+                          .actions_column .row_actions button, div.table_actions_menu .dropdown-menu a,
+                          div.table_actions_menu .dropdown-menu input,
+                          div.table_actions_menu .dropdown-menu button {
+                            background: none;
+                            float: none;
+                            display: block;
+                            padding: 0px 10px;
+                            line-height: 28px;
+                            color: #000;
+                            text-align: left;
+                            border-radius: 0;
+                            border: 0 none;
+                            -webkit-box-shadow: none;
+                            box-shadow: none; }
+
+                            .actions_column .row_actions .hide {
+                              display: none; }
+
+                              .actions_column .btn-action-required {
+                                font-weight: bold; }
+
+                                .tab-content {
+                                  overflow: visible; }
+
+                                  .btn.hide, .btn-group .hide {
+                                    display: none; }
+
+                                    .btn-group .dropdown-toggle:focus {
+                                      outline: none; }
+
+                                      .dropdown-menu button {
+                                        line-height: 18px;
+                                        width: 100%; }
+
+                                        .btn-group .dropdown-menu .btn {
+                                          border-radius: 0; }
+
+                                          .dropdown-menu .btn.btn-danger, .dropdown-menu .btn.btn-danger:hover,
+                                          .dropdown-menu .btn.btn-success, .dropdown-menu .btn.btn-success:hover,
+                                          .dropdown-menu .btn.btn-info, .dropdown-menu .btn.btn-info:hover {
+                                            text-shadow: none; }
+
+                                            .dropdown-menu li:hover {
+                                              background: none; }
+
+                                              .actions_column .dropdown-menu a:hover,
+                                              .actions_column .dropdown-menu button:hover,
+                                              div.table_actions_menu .dropdown-menu a:hover,
+                                              div.table_actions_menu .dropdown-menu button:hover {
+                                                background-color: #eee; }
+
+                                                .dropdown-menu .btn.btn-danger {
+                                                  color: #C71C22; }
+
+                                                  .dropdown-menu .btn.btn-danger:hover {
+                                                    background-color: #eee; }
+
+                                                    tr .actions_column ul.row_actions.single,
+                                                    tr:hover .actions_column ul.row_actions.single,
+                                                    .actions_column ul.row_actions.single, .actions_column ul.row_actions.single:hover {
+                                                      border: none; }
+
+                                                      .actions_column ul.row_actions.single li.action {
+                                                        display: block; }
+
+                                                        .actions_column ul.row_actions.single li.action:hover {
+                                                          background-color: transparent; }
+
+                                                          .actions_column ul.row_actions.single a,
+                                                          .actions_column ul.row_actions.single input,
+                                                          .actions_column ul.row_actions.single button {
+                                                            color: #033C73; }
+
+                                                            .actions_column ul.row_actions.single a:hover,
+                                                            .actions_column ul.row_actions.single input:hover,
+                                                            .actions_column ul.row_actions.single button:hover {
+                                                              color: #000; }
+
+                                                              th.multi_select_column, td.multi_select_column {
+                                                                width: 41px;
+                                                                text-align: center; }
+
+                                                                .table-fixed {
+                                                                  table-layout: fixed; }
+
+                                                                  .table input[type="checkbox"] {
+                                                                    display: inline;
+                                                                    vertical-align: middle; }
+
+                                                                    div.input input[type="checkbox"] {
+                                                                      float: left;
+                                                                      width: 25px; }
+
+                                                                      .table_title a {
+                                                                        font-size: 11px;
+                                                                        float: right;
+                                                                        margin-left: 10px;
+                                                                        margin-top: 10px; }
+
+                                                                        tr.terminated {
+                                                                          color: #999999; }
+
+                                                                          #instance_tabs {
+                                                                            float: left;
+                                                                            width: 100%;
+                                                                            border-bottom: 1px solid #e1e1e1; }
+
+                                                                            #instance_tabs li a {
+                                                                              background: #f2f2f2;
+                                                                              display: block;
+                                                                              font-size: 14px;
+                                                                              float: left;
+                                                                              padding: 5px 10px;
+                                                                              margin-right: 10px;
+                                                                              border: 1px solid #e1e1e1;
+                                                                              border-bottom: none; }
+
+                                                                              #instance_tabs li.active a {
+                                                                                background: #fff;
+                                                                                padding-bottom: 8px;
+                                                                                margin-bottom: -5px; }
+
+                                                                                #main_content .nav-tabs {
+                                                                                  border-bottom: 1px solid #d5dfe6;
+                                                                                  border-top: none; }
+                                                                                  #main_content .nav-tabs > li {
+                                                                                    height: 33px;
+                                                                                    margin-bottom: -1px;
+                                                                                    margin-top: 0; }
+                                                                                    #main_content .nav-tabs > li > a {
+                                                                                      margin-right: 0;
+                                                                                      border-radius: 0;
+                                                                                      line-height: 33px;
+                                                                                      padding: 0px 14px; }
+                                                                                      #main_content .nav-tabs > li > a:hover {
+                                                                                        border-color: #eee #eee #ddd; }
+                                                                                    #main_content .nav-tabs > li.active > a,
+                                                                                    #main_content .nav-tabs > li.active > a:hover,
+                                                                                    #main_content .nav-tabs > li.active > a:focus {
+                                                                                      border-color: #ddd #ddd #fff;
+                                                                                      background: url('/horizon/static/dashboard/img/content_tab_bkgd_selected.png?98c2981dc0ac') repeat-x;
+                                                                                      font-weight: bold;
+                                                                                      color: #005d9d;
+                                                                                      height: 33px;
+                                                                                      line-height: 33px; }
+                                                                                #main_content .tab-content {
+                                                                                  padding: 20px;
+                                                                                  border: 1px solid #d5dfe6;
+                                                                                  border-top: none; }
+                                                                                  #main_content .workflow .modal-body {
+                                                                                    padding-left: 0;
+                                                                                    padding-right: 0; }
+                                                                                    #main_content .workflow .modal-body .tab-content {
+                                                                                      border-left: 0 none;
+                                                                                      border-right: 0 none;
+                                                                                      border-bottom: 0 none;
+                                                                                      padding-top: 10px; }
+
+.javascript_disabled_alert {
+  border-bottom-style: solid;
+  border-bottom-width: 1px;
+  padding: 8px;
+  text-align: center; }
+
+  #content_body {
+    position: absolute;
+    left: 255px;
+    right: 20px; }
+
+    .tab_wrapper {
+      padding-top: 50px; }
+
+      .tooltip {
+        z-index: 12000; }
+
+        .volume_boot_disclosure {
+          font-weight: bold;
+          color: #555;
+          cursor: pointer;
+          background-image: url('/horizon/static/dashboard/img/right_droparrow.png?465e78b6ebf2');
+          background-repeat: no-repeat;
+          background-position: 130px center; }
+
+          .volume_boot_disclosure.on {
+            width: 334px;
+            margin-bottom: 10px;
+            border-bottom: solid 1px #dddddd;
+            background-image: url('/horizon/static/dashboard/img/drop_arrow.png?493996e1b30a'); }
+
+            .nav-tabs a {
+              cursor: pointer; }
+
+              .nav-tabs li.error a {
+                color: #C71C22; }
+
+                .nav-tabs li.error a:after {
+                  content: "*"; }
+
+                  .nav-tabs li.required a:after, form .form-group.required > label:after,
+                  form .form-field.required > label:after {
+                    content: "*";
+                    font-weight: bold;
+                    line-height: 0;
+                    padding-left: 4px; }
+
+                    #region_selector {
+                      position: absolute;
+                      z-index: 9999;
+                      right: 0;
+                      top: 24px; }
+
+                      #region_selector a {
+                        margin-left: 0; }
+
+                        #region_selector ul {
+                          float: left;
+                          margin-left: 5px;
+                          padding-right: 21px;
+                          width: 125px; }
+
+                          #region_selector ul:hover a {
+                            display: block; }
+
+                            #region_selector li a {
+                              padding: 3px 3px 3px 5px;
+                              display: none;
+                              background: #e1e1e1;
+                              margin-top: -10px; }
+
+                              #region_selector li:first-child p {
+                                background: #ededed url('/horizon/static/dashboard/img/drop_arrow.png?493996e1b30a') no-repeat 106px 9px !important;
+                                display: block;
+                                border: 1px solid #e1e1e1;
+                                padding: 5px; }
+
+                                iframe {
+                                  border: none; }
+
+                                  .item_detail ul li label {
+                                    color: #000;
+                                    font-weight: bold;
+                                    display: block;
+                                    margin-top: 5px; }
+
+                                    .progress_bar {
+                                      height: 100%;
+                                      width: 100%;
+                                      border: 1px solid #cccccc;
+                                      background-color: #cccccc; }
+
+                                      .progress_bar_fill, .progress_bar_selected {
+                                        height: 100%;
+                                        float: left; }
+
+                                        .progress_bar_fill {
+                                          background-color: #555; }
+
+                                          .progress_bar_selected {
+                                            background-color: #0074cd;
+                                            width: 0; }
+
+                                            .progress_bar_over {
+                                              background-color: #C71C22; }
+
+                                              .d3_quota_bar {
+                                                width: 20%;
+                                                margin-bottom: 8px;
+                                                margin-top: 10px;
+                                                float: left;
+                                                text-align: center; }
+
+                                                .quota-dynamic {
+                                                  overflow: hidden;
+                                                  margin-bottom: 8px; }
+
+                                                  .quota_title {
+                                                    color: #cccccc;
+                                                    padding-bottom: 0;
+                                                    margin-bottom: 8px; }
+
+                                                    .quota_title strong {
+                                                      color: #000; }
+
+                                                      .quota_title strong span {
+                                                        font-weight: normal; }
+
+                                                        .quota_title p {
+                                                          float: right;
+                                                          margin-bottom: 0; }
+
+                                                          .quota_bar {
+                                                            margin: -8px 0 8px; }
+
+                                                            div .flavor_table {
+                                                              border: 1px solid #dddddd;
+                                                              width: 100%;
+                                                              margin-bottom: 14px; }
+
+                                                              .flavor_table .flavor_name {
+                                                                white-space: nowrap;
+                                                                font-weight: bold;
+                                                                text-align: left;
+                                                                padding: 7px 12px 7px 7px;
+                                                                width: 160px; }
+
+                                                                .version_label {
+                                                                  position: relative;
+                                                                  text-align: right; }
+
+                                                                  .header_rule {
+                                                                    margin: 0 0 10px; }
+
+                                                                    .item_detail .detail_section {
+                                                                      margin-bottom: 25px;
+                                                                      float: left;
+                                                                      margin-right: 50px; }
+
+                                                                      .has-error .help-block, .dynamic-error {
+                                                                        padding: 10px; }
+
+                                                                        .dynamic-error {
+                                                                          background: #fff;
+                                                                          border: 1px solid #dddddd;
+                                                                          color: #C71C22;
+                                                                          margin-bottom: 0.5em; }
+
+                                                                          label.log-length {
+                                                                            line-height: 28px;
+                                                                            margin-right: 10px; }
+
+                                                                            .progress-success.bar {
+                                                                              background-color: #5eb95e;
+                                                                              background-image: -moz-linear-gradient(top, #62c462, #57a957);
+                                                                              background-image: -ms-linear-gradient(top, #62c462, #57a957);
+                                                                              background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
+                                                                              background-image: -webkit-linear-gradient(top, #62c462, #57a957);
+                                                                              background-image: -o-linear-gradient(top, #62c462, #57a957);
+                                                                              background-image: linear-gradient(top, #62c462, #57a957);
+                                                                              background-repeat: repeat-x;
+                                                                              filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462',
+                                                                                                                                                            endColorstr='#57a957', GradientType=0); }
+
+                                                                              .progress_bar_fill.progress-warning.bar {
+                                                                                background-color: #898989;
+                                                                                background-image: -moz-linear-gradient(top, #999999, #333333);
+                                                                                background-image: -ms-linear-gradient(top, #999999, #333333);
+                                                                                background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#999999), to(#333333));
+                                                                                background-image: -webkit-linear-gradient(top, #999999, #333333);
+                                                                                background-image: -o-linear-gradient(top, #999999, #333333);
+                                                                                background-image: linear-gradient(top, #999999, #333333);
+                                                                                background-repeat: repeat-x;
+                                                                                filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#999999',
+                                                                                                                                                                endColorstr='#333333', GradientType=0); }
+
+                                                                                .progress_bar_over.bar {
+                                                                                  background-color: #dd514c;
+                                                                                  background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
+                                                                                  background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
+                                                                                  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
+                                                                                  background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
+                                                                                  background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
+                                                                                  background-image: linear-gradient(top, #ee5f5b, #c43c35);
+                                                                                  background-repeat: repeat-x;
+                                                                                  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b',
+                                                                                                                                                                    endColorstr='#c43c35', GradientType=0); }
+
+                                                                                  .split_five div.form-group input[type="text"], .split_five div.form-group select {
+                                                                                    width: 120px; }
+
+                                                                                    .warning {
+                                                                                      background-color: #fff;
+                                                                                      border-bottom: 1px solid #C71C22;
+                                                                                      padding: 5px 10px; }
+                                                                                      .warning .warning-text {
+                                                                                        text-align: center; }
+                                                                                        .warning .warning-text h3, .warning .warning-text a {
+                                                                                          display: inline-block; }
+                                                                                          .warning .warning-text h3 {
+                                                                                            vertical-align: bottom; }
+
+#admin_warning_detail ul {
+  list-style: circle;
+  padding-left: 20px;
+  margin-bottom: 10px; }
+
+.no_split {
+  margin-top: -60px; }
+
+  .membership {
+    min-height: 200px; }
+    .membership .help_text {
+      margin-bottom: 15px; }
+      .membership .fake_table_header {
+        padding: 8px;
+        border: 1px solid #dddddd;
+        border-bottom: none;
+        overflow: hidden; }
+        .membership .members_title {
+          color: #555;
+          font-weight: bold;
+          float: left;
+          padding: 6px 0; }
+          .membership input.filter {
+            width: 120px;
+            float: right; }
+            .membership input.filter[type="text"]:disabled {
+              background-color: #eee; }
+              .membership input.filter[type="text"]:disabled + span.search-icon {
+                color: #cccccc; }
+    .membership .form-control-feedback {
+      top: 0; }
+      .membership .no_results {
+        border: 1px solid #dddddd;
+        padding: 9px 10px 8px 10px;
+        opacity: 0.5; }
+        .membership li.scope input {
+          background: none;
+          margin-top: 10px;
+          margin-bottom: 10px;
+          width: 120px;
+          margin-left: 10px; }
+          .membership li.select_resource {
+            margin-left: 5px;
+            margin-top: 15px; }
+            .membership li.display_name {
+              width: 130px;
+              margin: 15px 7px 15px 10px; }
+              .membership .update_members_filterable {
+                overflow-y: auto;
+                height: 500px; }
+                .membership .members, .membership .available_members {
+                  padding: 0; }
+                  .membership .members ul.nav-pills, .membership .available_members ul.nav-pills {
+                    display: block; }
+                    .membership .members ul.btn-group, .membership .available_members ul.btn-group {
+                      margin-left: 0px;
+                      padding: 3px;
+                      margin-bottom: 0px;
+                      border: 1px solid #cccccc;
+                      border-bottom: none; }
+                      .membership .members ul.btn-group.last_stripe,
+                      .membership .available_members ul.btn-group.last_stripe {
+                        border-bottom: 1px solid #dddddd; }
+                        .membership .members ul.btn-group.light_stripe,
+                        .membership .available_members ul.btn-group.light_stripe {
+                          background-color: white; }
+                          .membership .members ul.btn-group.dark_stripe,
+                          .membership .available_members ul.btn-group.dark_stripe {
+                            background-color: #fff; }
+                            .membership .members ul.btn-group:hover,
+                            .membership .available_members ul.btn-group:hover {
+                              background-color: #dddddd; }
+                              .membership .members ul.btn-group li.member,
+                              .membership .available_members ul.btn-group li.member {
+                                padding: 6px 10px 5px 10px; }
+                                .membership .members ul.btn-group li.active,
+                                .membership .available_members ul.btn-group li.active {
+                                  float: right; }
+                                  .membership .members ul.btn-group li.active a:hover,
+                                  .membership .available_members ul.btn-group li.active a:hover {
+                                    background-color: #145c9e; }
+    .membership .role_dropdown li {
+      cursor: pointer;
+      background: none;
+      float: none;
+      display: block;
+      padding: 5px 10px;
+      color: #000;
+      text-align: left;
+      border-radius: 0;
+      border: 0 none;
+      -webkit-box-shadow: none;
+      box-shadow: none;
+      z-index: 99999; }
+      .membership .role_dropdown li:hover {
+        background-color: #cdcdcd; }
+        .membership .role_dropdown li i {
+          opacity: 0; }
+          .membership .role_dropdown li.selected i {
+            opacity: 1; }
+    .membership .dropdown-menu.role_dropdown {
+      right: 0;
+      left: auto; }
+      .membership .nav .role_options {
+        float: right; }
+
+.add_member_btn {
+  display: inline; }
+
+  #add_member {
+    clear: both; }
+
+    .add_member {
+      float: right;
+      margin-top: 10px;
+      margin-right: 15px; }
+
+      .resource-types .membership li .scope {
+        background: none;
+        margin-top: 10px;
+        margin-bottom: 10px; }
+        .resource-types .membership li .select_resource {
+          margin-left: 5px;
+          margin-top: 15px; }
+          .resource-types .membership li .display_name {
+            width: 130px;
+            margin-left: 10px;
+            margin-top: 15px;
+            margin-bottom: 15px; }
+
+.dropdown_fix {
+  overflow: visible; }
+
+  .loading_gif {
+    margin-right: 0.5em;
+    float: left; }
+
+    .btn-inline {
+      margin-bottom: 9px; }
+
+      .modal-body fieldset .form-field select[data-add-item-url] {
+        width: 275px;
+        margin-right: 2px; }
+
+        #networkListSortContainer {
+          display: none; }
+
+          .networklist {
+            padding: 6px;
+            background: #eee;
+            border: 1px solid #dddddd;
+            min-height: 2em;
+            width: auto !important;
+            -webkit-box-sizing: border-box;
+            -moz-box-sizing: border-box;
+            box-sizing: border-box; }
+            .networklist li {
+              width: 80%;
+              list-style-type: none;
+              margin: 6px auto;
+              background: #fff;
+              border: 1px solid #aaa;
+              line-height: 18px;
+              border-radius: 3px;
+              cursor: move;
+              padding-left: 23px;
+              background: #fff url('/horizon/static/dashboard/img/drag.png?2df67399e8d6') no-repeat 11px 50%; }
+              .networklist li em {
+                font-size: 0.5em;
+                line-height: 1em;
+                color: #999;
+                font-style: normal;
+                margin-left: 0.8em; }
+                .networklist li i {
+                  margin-right: 5px;
+                  vertical-align: middle; }
+                  .networklist li a.btn {
+                    -webkit-box-sizing: border-box;
+                    -moz-box-sizing: border-box;
+                    box-sizing: border-box;
+                    font-size: 11px;
+                    line-height: 12px;
+                    padding: 2px 5px 3px;
+                    margin-right: 1px;
+                    width: 18px;
+                    text-align: center;
+                    right: 5px;
+                    vertical-align: middle;
+                    float: right; }
+                    .networklist li a.btn:before {
+                      content: "+"; }
+            .networklist li.ui-sortable-helper {
+              background-color: #def; }
+              .networklist li.ui-state-highlight {
+                border: 1px dotted #cccccc;
+                background: #efefef;
+                height: 0.5em; }
+                .networklist li:after {
+                  visibility: hidden;
+                  display: block;
+                  font-size: 0;
+                  content: " ";
+                  clear: both;
+                  height: 0; }
+
+#selected_network {
+  margin-bottom: 1.5em;
+  counter-reset: v1 0;
+  background: #edf9ff;
+  border: 1px solid #c0d9e4; }
+  #selected_network li {
+    position: relative; }
+    #selected_network li a.btn:before {
+      content: "-"; }
+  #selected_network li:before {
+    content: "NIC:" counter(v1);
+    counter-increment: v1;
+    display: inline-block;
+    margin-right: 5px;
+    background: #555;
+    color: #fff;
+    font-size: 90%;
+    padding: 0px 4px;
+    vertical-align: middle;
+    border-radius: 2px;
+    position: absolute;
+    left: -2em; }
+    #selected_network.dragging li:before {
+      content: "NIC:";
+      background-color: rgba(102, 102, 102, 0.5);
+      padding-right: 10px; }
+      #selected_network.dragging li.ui-state-highlight:before {
+        content: "";
+        background: transparent; }
+
+.link {
+  stroke: #999;
+  stroke-width: 1.5px; }
+
+  .node {
+    cursor: pointer; }
+
+    .node text {
+      font: 12px sans-serif; }
+
+      #resource_container {
+        position: relative; }
+
+        #stack_box {
+          position: absolute;
+          width: 300px;
+          top: 10px;
+          left: 10px; }
+
+          #stack_box h3 {
+            font-size: 11pt;
+            line-height: 20px; }
+
+            #stack_box p {
+              margin: 0;
+              font-size: 9pt;
+              line-height: 14px; }
+
+              #stack_box a {
+                margin: 0;
+                font-size: 9pt;
+                line-height: 14px; }
+
+                #stack_box img {
+                  float: left; }
+
+                  #stack_box #stack_info {
+                    float: left;
+                    white-space: normal;
+                    width: 200px; }
+
+                    #info_box {
+                      position: absolute;
+                      width: 300px;
+                      top: 100px;
+                      left: 10px; }
+
+                      #info_box h3 {
+                        font-size: 9pt;
+                        line-height: 20px; }
+
+                        #info_box p {
+                          margin: 0;
+                          font-size: 9pt;
+                          line-height: 14px; }
+
+                          #info_box a {
+                            margin: 0;
+                            font-size: 9pt;
+                            line-height: 14px; }
+
+                            #info_box .error {
+                              color: #6e0f13; }
+
+                              #ruleListSortContainer {
+                                display: none; }
+
+                                .rulelist {
+                                  padding: 6px;
+                                  background: #eee;
+                                  border: 1px solid #dddddd;
+                                  min-height: 2em;
+                                  width: auto !important;
+                                  -webkit-box-sizing: border-box;
+                                  -moz-box-sizing: border-box;
+                                  box-sizing: border-box; }
+                                  .rulelist li {
+                                    width: 226px;
+                                    list-style-type: none;
+                                    margin: 6px auto;
+                                    padding: 3px;
+                                    background: #fff;
+                                    border: 1px solid #dddddd;
+                                    line-height: 18px;
+                                    border-radius: 3px;
+                                    cursor: move;
+                                    padding-left: 23px;
+                                    background: #fff url('/horizon/static/dashboard/img/drag.png?2df67399e8d6') no-repeat 11px 50%; }
+                                    .rulelist li em {
+                                      font-size: 0.5em;
+                                      line-height: 1em;
+                                      color: #999;
+                                      font-style: normal;
+                                      margin-left: 0.8em; }
+                                      .rulelist li i {
+                                        margin-right: 5px;
+                                        vertical-align: middle; }
+                                        .rulelist li a.btn {
+                                          -webkit-box-sizing: border-box;
+                                          -moz-box-sizing: border-box;
+                                          box-sizing: border-box;
+                                          font-size: 11px;
+                                          line-height: 12px;
+                                          padding: 2px 5px 3px;
+                                          margin-right: 1px;
+                                          width: 18px;
+                                          text-align: center;
+                                          right: 5px;
+                                          vertical-align: middle;
+                                          float: right; }
+                                          .rulelist li a.btn:before {
+                                            content: "+"; }
+                                  .rulelist li.ui-sortable-helper {
+                                    background-color: #def; }
+                                    .rulelist li.ui-state-highlight {
+                                      border: 1px dotted #dddddd;
+                                      background: #efefef;
+                                      height: 0.5em; }
+                                      .rulelist li:after {
+                                        visibility: hidden;
+                                        display: block;
+                                        font-size: 0;
+                                        content: " ";
+                                        clear: both;
+                                        height: 0; }
+
+#selected_rule {
+  margin-bottom: 1.5em;
+  counter-reset: v1 0;
+  background: #edf9ff;
+  border: 1px solid #dddddd; }
+  #selected_rule li {
+    position: relative; }
+    #selected_rule li a.btn:before {
+      content: "-"; }
+  #selected_rule li:before {
+    content: "rule:" counter(v1);
+    counter-increment: v1;
+    display: inline-block;
+    margin-right: 5px;
+    background: #555;
+    color: #fff;
+    font-size: 90%;
+    padding: 0px 4px;
+    vertical-align: middle;
+    border-radius: 2px;
+    position: absolute;
+    left: -2em; }
+    #selected_rule.dragging li:before {
+      content: "rule:";
+      background-color: rgba(102, 102, 102, 0.5);
+      padding-right: 10px; }
+      #selected_rule.dragging li.ui-state-highlight:before {
+        content: "";
+        background: transparent; }
+
+#routerListSortContainer {
+  display: none; }
+
+  .routerlist {
+    padding: 6px;
+    background: #eee;
+    border: 1px solid #dddddd;
+    min-height: 2em;
+    width: auto !important;
+    -webkit-box-sizing: border-box;
+    -moz-box-sizing: border-box;
+    box-sizing: border-box; }
+    .routerlist li {
+      width: 226px;
+      list-style-type: none;
+      margin: 6px auto;
+      padding: 3px;
+      background: #fff;
+      border: 1px solid #dddddd;
+      line-height: 18px;
+      border-radius: 3px;
+      cursor: move;
+      padding-left: 23px;
+      background: #fff url('/horizon/static/dashboard/img/drag.png?2df67399e8d6') no-repeat 11px 50%; }
+      .routerlist li em {
+        font-size: 0.5em;
+        line-height: 1em;
+        color: #999;
+        font-style: normal;
+        margin-left: 0.8em; }
+        .routerlist li i {
+          margin-right: 5px;
+          vertical-align: middle; }
+          .routerlist li a.btn {
+            -webkit-box-sizing: border-box;
+            -moz-box-sizing: border-box;
+            box-sizing: border-box;
+            font-size: 11px;
+            line-height: 12px;
+            padding: 2px 5px 3px;
+            margin-right: 1px;
+            width: 18px;
+            text-align: center;
+            right: 5px;
+            vertical-align: middle;
+            float: right; }
+            .routerlist li a.btn:before {
+              content: "+"; }
+    .routerlist li.ui-sortable-helper {
+      background-color: #def; }
+      .routerlist li.ui-state-highlight {
+        border: 1px dotted #dddddd;
+        background: #efefef;
+        height: 0.5em; }
+        .routerlist li:after {
+          visibility: hidden;
+          display: block;
+          font-size: 0;
+          content: " ";
+          clear: both;
+          height: 0; }
+
+#selected_router {
+  margin-bottom: 1.5em;
+  counter-reset: v1 0;
+  background: #edf9ff;
+  border: 1px solid #dddddd; }
+  #selected_router li {
+    position: relative; }
+    #selected_router li a.btn:before {
+      content: "-"; }
+  #selected_router li:before {
+    content: "router:" counter(v1);
+    counter-increment: v1;
+    display: inline-block;
+    margin-right: 5px;
+    background: #555;
+    color: #fff;
+    font-size: 90%;
+    padding: 0px 4px;
+    vertical-align: middle;
+    border-radius: 2px;
+    position: absolute;
+    left: -2em; }
+    #selected_router.dragging li:before {
+      content: "router:";
+      background-color: rgba(102, 102, 102, 0.5);
+      padding-right: 10px; }
+      #selected_router.dragging li.ui-state-highlight:before {
+        content: "";
+        background: transparent; }
+
+.tablesorter thead tr th.tablesorter-header {
+  cursor: pointer;
+  background-repeat: no-repeat;
+  background-position: 99% center;
+  background-position: right 5px center; }
+  .tablesorter thead tr th.tablesorter-headerAsc {
+    background-image: url('/horizon/static/dashboard/img/up_arrow.png?049fea208e16'); }
+    .tablesorter thead tr th.tablesorter-headerDesc {
+      background-image: url('/horizon/static/dashboard/img/drop_arrow.png?493996e1b30a'); }
+
+a.link-popover {
+  cursor: default; }
+
+  a:hover.link-popover {
+    text-decoration: none; }
+
+    .form-group span.form-control-feedback.fa {
+      line-height: 32px; }
+
+      .has-feedback .form-control-feedback {
+        top: 0; }
+
+        .detail ul {
+          padding-left: 0; }
+
+          .detail dt {
+            text-align: left; }
+
+            input::-ms-clear, input::-ms-reveal {
+              display: none; }
+
+              textarea.key_text {
+                width: 55em;
+                height: 11em;
+                resize: none;
+                border: none; }
+
+                .form-horizontal .form-group {
+                  margin-right: 0px !important; }
+                  .form-horizontal .form-control-feedback {
+                    right: 0px !important; }
+.breadcrumb {
+  padding: 8px 15px;
+  margin-bottom: 20px;
+  list-style: none;
+  background-color: #f5f5f5;
+  border-radius: 4px; }
+  .breadcrumb > li {
+    display: inline-block; }
+    .breadcrumb > li + li:before {
+      content: "/\00a0";
+      padding: 0 5px;
+      color: #ccc; }
+  .breadcrumb > .active {
+    color: #999; }
+.pagination {
+  display: inline-block;
+  padding-left: 0;
+  margin: 20px 0;
+  border-radius: 4px; }
+  .pagination > li {
+    display: inline; }
+    .pagination > li > a, .pagination > li > span {
+      position: relative;
+      float: left;
+      padding: 8px 12px;
+      line-height: 1.42857;
+      text-decoration: none;
+      color: #145c9e;
+      background-color: #fff;
+      border: 1px solid #ddd;
+      margin-left: -1px; }
+      .pagination > li:first-child > a, .pagination > li:first-child > span {
+        margin-left: 0;
+        border-bottom-left-radius: 4px;
+        border-top-left-radius: 4px; }
+    .pagination > li:last-child > a, .pagination > li:last-child > span {
+      border-bottom-right-radius: 4px;
+      border-top-right-radius: 4px; }
+  .pagination > li > a:hover, .pagination > li > a:focus,
+  .pagination > li > span:hover, .pagination > li > span:focus {
+    color: #145c9e;
+    background-color: #eee;
+    border-color: #ddd; }
+  .pagination > .active > a, .pagination > .active > a:hover,
+  .pagination > .active > a:focus, .pagination > .active > span,
+  .pagination > .active > span:hover, .pagination > .active > span:focus {
+    z-index: 2;
+    color: #999;
+    background-color: #f5f5f5;
+    border-color: #ddd;
+    cursor: default; }
+  .pagination > .disabled > span, .pagination > .disabled > span:hover,
+  .pagination > .disabled > span:focus, .pagination > .disabled > a,
+  .pagination > .disabled > a:hover, .pagination > .disabled > a:focus {
+    color: #999;
+    background-color: #fff;
+    border-color: #ddd;
+    cursor: not-allowed; }
+.pagination-lg > li > a, .pagination-lg > li > span {
+  padding: 14px 16px;
+  font-size: 18px; }
+  .pagination-lg > li:first-child > a, .pagination-lg > li:first-child > span {
+    border-bottom-left-radius: 6px;
+    border-top-left-radius: 6px; }
+.pagination-lg > li:last-child > a, .pagination-lg > li:last-child > span {
+  border-bottom-right-radius: 6px;
+  border-top-right-radius: 6px; }
+.pagination-sm > li > a, .pagination-sm > li > span {
+  padding: 5px 10px;
+  font-size: 12px; }
+  .pagination-sm > li:first-child > a, .pagination-sm > li:first-child > span {
+    border-bottom-left-radius: 3px;
+    border-top-left-radius: 3px; }
+.pagination-sm > li:last-child > a, .pagination-sm > li:last-child > span {
+  border-bottom-right-radius: 3px;
+  border-top-right-radius: 3px; }
+.pager {
+  padding-left: 0;
+  margin: 20px 0;
+  list-style: none;
+  text-align: center; }
+  .pager li {
+    display: inline; }
+    .pager li > a, .pager li > span {
+      display: inline-block;
+      padding: 5px 14px;
+      background-color: #fff;
+      border: 1px solid #ddd;
+      border-radius: 15px; }
+      .pager li > a:hover, .pager li > a:focus {
+        text-decoration: none;
+        background-color: #eee; }
+  .pager .next > a, .pager .next > span {
+    float: right; }
+  .pager .previous > a, .pager .previous > span {
+    float: left; }
+  .pager .disabled > a, .pager .disabled > a:hover, .pager .disabled > a:focus,
+  .pager .disabled > span {
+    color: #999;
+    background-color: #fff;
+    cursor: not-allowed; }
+.label {
+  display: inline;
+  padding: 0.2em 0.6em 0.3em;
+  font-size: 75%;
+  font-weight: bold;
+  line-height: 1;
+  color: #fff;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: baseline;
+  border-radius: 0.25em; }
+  .label:empty {
+    display: none; }
+    .btn .label {
+      position: relative;
+      top: -1px; }
+
+a.label:hover, a.label:focus {
+  color: #fff;
+  text-decoration: none;
+  cursor: pointer; }
+
+.label-default {
+  background-color: #999; }
+
+  .label-primary {
+    background-color: #0074cd; }
+
+    .label-success {
+      background-color: #dde7ee; }
+
+      .label-info {
+        background-color: #033C73; }
+
+        .label-warning {
+          background-color: #DD5600; }
+
+          .label-danger {
+            background-color: #C71C22; }
+.label-default[href]:hover, .label-default[href]:focus {
+  background-color: gray; }
+.label-primary[href]:hover, .label-primary[href]:focus {
+  background-color: #00579a; }
+.label-success[href]:hover, .label-success[href]:focus {
+  background-color: #bbcfdd; }
+.label-info[href]:hover, .label-info[href]:focus {
+  background-color: #022241; }
+.label-warning[href]:hover, .label-warning[href]:focus {
+  background-color: #aa4200; }
+.label-danger[href]:hover, .label-danger[href]:focus {
+  background-color: #9a161a; }
+.jumbotron {
+  padding: 30px;
+  margin-bottom: 30px;
+  color: inherit;
+  background-color: #eee; }
+  .jumbotron h1, .jumbotron .h1 {
+    color: inherit; }
+    .jumbotron p {
+      margin-bottom: 15px;
+      font-size: 21px;
+      font-weight: 200; }
+      .jumbotron > hr {
+        border-top-color: #d5d5d5; }
+        .container .jumbotron {
+          border-radius: 6px; }
+          .jumbotron .container {
+            max-width: 100%; }
+            @media screen and (min-width: 768px) {
+              .jumbotron {
+                padding-top: 48px;
+                padding-bottom: 48px;   }
+                .container .jumbotron {
+                  padding-left: 60px;
+                  padding-right: 60px;   }
+                  .jumbotron h1, .jumbotron .h1 {
+                    font-size: 58.5px;   }
+}
+.thumbnail {
+  display: block;
+  padding: 4px;
+  margin-bottom: 20px;
+  line-height: 1.42857;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-radius: 4px;
+  -webkit-transition: all 0.2s ease-in-out;
+  -o-transition: all 0.2s ease-in-out;
+  transition: all 0.2s ease-in-out; }
+  .thumbnail > img, .thumbnail a > img {
+    display: block;
+    width: 100% \9;
+    max-width: 100%;
+    height: auto;
+    margin-left: auto;
+    margin-right: auto; }
+    .thumbnail .caption {
+      padding: 9px;
+      color: #000; }
+
+a.thumbnail:hover, a.thumbnail:focus, a.thumbnail.active {
+  border-color: #145c9e; }
+.alert {
+  padding: 15px;
+  margin-bottom: 20px;
+  border: 1px solid transparent;
+  border-radius: 4px; }
+  .alert h4 {
+    margin-top: 0;
+    color: inherit; }
+    .alert .alert-link {
+      font-weight: bold; }
+      .alert > p, .alert > ul {
+        margin-bottom: 0; }
+        .alert > p + p {
+          margin-top: 5px; }
+
+.alert-dismissable, .alert-dismissible {
+  padding-right: 35px; }
+  .alert-dismissable .close, .alert-dismissible .close {
+    position: relative;
+    top: -2px;
+    right: -21px;
+    color: inherit; }
+
+.alert-success {
+  background-color: #dff0d8;
+  border-color: #d6e9c6;
+  color: #468847; }
+
+  .alert-info {
+    background-color: #d9edf7;
+    border-color: #bce8f1;
+    color: #3a87ad; }
+
+    .alert-warning {
+      background-color: #fcf8e3;
+      border-color: #fbeed5;
+      color: #c09853; }
+
+      .alert-danger, .javascript_disabled_alert {
+        background-color: #f2dede;
+        border-color: #eed3d7;
+        color: #b94a48; }
+.alert-success hr {
+  border-top-color: #c9e2b3; }
+  .alert-success .alert-link {
+    color: #356635; }
+    .alert-info hr {
+      border-top-color: #a6e1ec; }
+      .alert-info .alert-link {
+        color: #2d6987; }
+        .alert-warning hr {
+          border-top-color: #f8e5be; }
+          .alert-warning .alert-link {
+            color: #a47e3c; }
+            .alert-danger hr, .javascript_disabled_alert hr {
+              border-top-color: #e6c1c7; }
+              .alert-danger .alert-link, .javascript_disabled_alert .alert-link {
+                color: #953b39; }
+@-webkit-keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;   }
+    to {
+      background-position: 0 0;   }
+}
+
+@keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;   }
+    to {
+      background-position: 0 0;   }
+}
+
+.progress {
+  overflow: hidden;
+  height: 20px;
+  margin-bottom: 20px;
+  background-color: #f5f5f5;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); }
+
+  .progress-bar {
+    float: left;
+    width: 0%;
+    height: 100%;
+    font-size: 12px;
+    line-height: 20px;
+    color: #fff;
+    text-align: center;
+    background-color: #0074cd;
+    -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+    box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+    -webkit-transition: width 0.6s ease;
+    -o-transition: width 0.6s ease;
+    transition: width 0.6s ease; }
+
+    .progress-striped .progress-bar, .progress-bar-striped {
+      background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
+            transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
+            transparent 75%, transparent);
+      background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
+            transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
+            transparent 75%, transparent);
+      background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
+            transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
+            transparent 75%, transparent);
+      background-size: 40px 40px; }
+
+      .progress.active .progress-bar, .progress-bar.active {
+        -webkit-animation: progress-bar-stripes 2s linear infinite;
+        -o-animation: progress-bar-stripes 2s linear infinite;
+        animation: progress-bar-stripes 2s linear infinite; }
+
+        .progress-bar[aria-valuenow="1"], .progress-bar[aria-valuenow="2"] {
+          min-width: 30px; }
+          .progress-bar[aria-valuenow="0"] {
+            color: #cccccc;
+            min-width: 30px;
+            background-color: transparent;
+            background-image: none;
+            box-shadow: none; }
+
+.progress-bar-success {
+  background-color: #dde7ee; }
+
+  .progress-bar-info {
+    background-color: #033C73; }
+
+    .progress-bar-warning {
+      background-color: #DD5600; }
+
+      .progress-bar-danger {
+        background-color: #C71C22; }
+.progress-striped .progress-bar-success {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
+    transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
+    transparent 75%, transparent);
+  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
+    transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
+    transparent 75%, transparent);
+  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
+    transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
+    transparent 75%, transparent); }
+  .progress-striped .progress-bar-info {
+    background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
+        transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
+        transparent 75%, transparent);
+    background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
+        transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
+        transparent 75%, transparent);
+    background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
+        transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
+        transparent 75%, transparent); }
+    .progress-striped .progress-bar-warning {
+      background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
+            transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
+            transparent 75%, transparent);
+      background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
+            transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
+            transparent 75%, transparent);
+      background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
+            transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
+            transparent 75%, transparent); }
+      .progress-striped .progress-bar-danger {
+        background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
+                transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
+                transparent 75%, transparent);
+        background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
+                transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
+                transparent 75%, transparent);
+        background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%,
+                transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%,
+                transparent 75%, transparent); }
+.media, .media-body {
+  overflow: hidden;
+  zoom: 1; }
+
+  .media, .media .media {
+    margin-top: 15px; }
+
+    .media:first-child {
+      margin-top: 0; }
+
+      .media-object {
+        display: block; }
+
+        .media-heading {
+          margin: 0 0 5px; }
+
+          .media > .pull-left {
+            margin-right: 10px; }
+            .media > .pull-right {
+              margin-left: 10px; }
+
+.media-list {
+  padding-left: 0;
+  list-style: none; }
+.list-group {
+  margin-bottom: 20px;
+  padding-left: 0; }
+
+  .list-group-item {
+    position: relative;
+    display: block;
+    padding: 10px 15px;
+    margin-bottom: -1px;
+    background-color: #fff;
+    border: 1px solid #ddd; }
+    .list-group-item:first-child {
+      border-top-right-radius: 4px;
+      border-top-left-radius: 4px; }
+      .list-group-item:last-child {
+        margin-bottom: 0;
+        border-bottom-right-radius: 4px;
+        border-bottom-left-radius: 4px; }
+        .list-group-item > .badge {
+          float: right; }
+          .list-group-item > .badge + .badge {
+            margin-right: 5px; }
+
+a.list-group-item {
+  color: #555; }
+  a.list-group-item .list-group-item-heading {
+    color: #333; }
+    a.list-group-item:hover, a.list-group-item:focus {
+      text-decoration: none;
+      color: #555;
+      background-color: #f5f5f5; }
+
+.list-group-item.disabled, .list-group-item.disabled:hover,
+.list-group-item.disabled:focus {
+  background-color: #eee;
+  color: #999; }
+  .list-group-item.disabled .list-group-item-heading,
+  .list-group-item.disabled:hover .list-group-item-heading,
+  .list-group-item.disabled:focus .list-group-item-heading {
+    color: inherit; }
+    .list-group-item.disabled .list-group-item-text,
+    .list-group-item.disabled:hover .list-group-item-text,
+    .list-group-item.disabled:focus .list-group-item-text {
+      color: #999; }
+.list-group-item.active, .list-group-item.active:hover,
+.list-group-item.active:focus {
+  z-index: 2;
+  color: #fff;
+  background-color: #0074cd;
+  border-color: #0074cd; }
+  .list-group-item.active .list-group-item-heading,
+  .list-group-item.active .list-group-item-heading > small,
+  .list-group-item.active .list-group-item-heading > .small,
+  .list-group-item.active:hover .list-group-item-heading,
+  .list-group-item.active:hover .list-group-item-heading > small,
+  .list-group-item.active:hover .list-group-item-heading > .small,
+  .list-group-item.active:focus .list-group-item-heading,
+  .list-group-item.active:focus .list-group-item-heading > small,
+  .list-group-item.active:focus .list-group-item-heading > .small {
+    color: inherit; }
+    .list-group-item.active .list-group-item-text,
+    .list-group-item.active:hover .list-group-item-text,
+    .list-group-item.active:focus .list-group-item-text {
+      color: #9ad3ff; }
+
+.list-group-item-heading {
+  margin-top: 0;
+  margin-bottom: 5px; }
+
+  .list-group-item-text {
+    margin-bottom: 0;
+    line-height: 1.3; }
+.list-group-item-success {
+  color: #468847;
+  background-color: #dff0d8; }
+
+  a.list-group-item-success {
+    color: #468847; }
+    a.list-group-item-success .list-group-item-heading {
+      color: inherit; }
+      a.list-group-item-success:hover, a.list-group-item-success:focus {
+        color: #468847;
+        background-color: #d0e9c6; }
+        a.list-group-item-success.active, a.list-group-item-success.active:hover,
+        a.list-group-item-success.active:focus {
+          color: #fff;
+          background-color: #468847;
+          border-color: #468847; }
+
+.list-group-item-info {
+  color: #3a87ad;
+  background-color: #d9edf7; }
+
+  a.list-group-item-info {
+    color: #3a87ad; }
+    a.list-group-item-info .list-group-item-heading {
+      color: inherit; }
+      a.list-group-item-info:hover, a.list-group-item-info:focus {
+        color: #3a87ad;
+        background-color: #c4e3f3; }
+        a.list-group-item-info.active, a.list-group-item-info.active:hover,
+        a.list-group-item-info.active:focus {
+          color: #fff;
+          background-color: #3a87ad;
+          border-color: #3a87ad; }
+
+.list-group-item-warning {
+  color: #c09853;
+  background-color: #fcf8e3; }
+
+  a.list-group-item-warning {
+    color: #c09853; }
+    a.list-group-item-warning .list-group-item-heading {
+      color: inherit; }
+      a.list-group-item-warning:hover, a.list-group-item-warning:focus {
+        color: #c09853;
+        background-color: #faf2cc; }
+        a.list-group-item-warning.active, a.list-group-item-warning.active:hover,
+        a.list-group-item-warning.active:focus {
+          color: #fff;
+          background-color: #c09853;
+          border-color: #c09853; }
+
+.list-group-item-danger {
+  color: #b94a48;
+  background-color: #f2dede; }
+
+  a.list-group-item-danger {
+    color: #b94a48; }
+    a.list-group-item-danger .list-group-item-heading {
+      color: inherit; }
+      a.list-group-item-danger:hover, a.list-group-item-danger:focus {
+        color: #b94a48;
+        background-color: #ebcccc; }
+        a.list-group-item-danger.active, a.list-group-item-danger.active:hover,
+        a.list-group-item-danger.active:focus {
+          color: #fff;
+          background-color: #b94a48;
+          border-color: #b94a48; }
+.panel {
+  margin-bottom: 20px;
+  background-color: #fff;
+  border: 1px solid transparent;
+  border-radius: 4px;
+  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
+  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); }
+
+  .panel-body {
+    padding: 15px; }
+
+    .panel-heading {
+      padding: 10px 15px;
+      border-bottom: 1px solid transparent;
+      border-top-right-radius: 3px;
+      border-top-left-radius: 3px; }
+      .panel-heading > .dropdown .dropdown-toggle {
+        color: inherit; }
+
+.panel-title {
+  margin-top: 0;
+  margin-bottom: 0;
+  font-size: 15px;
+  color: inherit; }
+  .panel-title > a {
+    color: inherit; }
+
+.panel-footer {
+  padding: 10px 15px;
+  background-color: #f5f5f5;
+  border-top: 1px solid #ddd;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px; }
+
+  .panel > .list-group {
+    margin-bottom: 0; }
+    .panel > .list-group .list-group-item {
+      border-width: 1px 0;
+      border-radius: 0; }
+      .panel > .list-group:first-child .list-group-item:first-child {
+        border-top: 0;
+        border-top-right-radius: 3px;
+        border-top-left-radius: 3px; }
+    .panel > .list-group:last-child .list-group-item:last-child {
+      border-bottom: 0;
+      border-bottom-right-radius: 3px;
+      border-bottom-left-radius: 3px; }
+
+.panel-heading + .list-group .list-group-item:first-child {
+  border-top-width: 0; }
+
+.list-group + .panel-footer {
+  border-top-width: 0; }
+
+  .panel > .table, .panel > .table-responsive > .table,
+  .panel > .panel-collapse > .table {
+    margin-bottom: 0; }
+    .panel > .table:first-child,
+    .panel > .table-responsive:first-child > .table:first-child {
+      border-top-right-radius: 3px;
+      border-top-left-radius: 3px; }
+      .panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
+      .panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
+      .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+      .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
+      .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
+      .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
+      .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+      .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
+        border-top-left-radius: 3px; }
+        .panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
+        .panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
+        .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+        .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
+        .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
+        .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
+        .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+        .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
+          border-top-right-radius: 3px; }
+  .panel > .table:last-child,
+  .panel > .table-responsive:last-child > .table:last-child {
+    border-bottom-right-radius: 3px;
+    border-bottom-left-radius: 3px; }
+    .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+    .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+    .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+    .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
+    .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+    .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+    .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+    .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
+      border-bottom-left-radius: 3px; }
+      .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+      .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+      .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+      .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
+      .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+      .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+      .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+      .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
+        border-bottom-right-radius: 3px; }
+  .panel > .panel-body + .table, .panel > .panel-body + .table-responsive {
+    border-top: 1px solid #dddddd; }
+    .panel > .table > tbody:first-child > tr:first-child th,
+    .panel > .table > tbody:first-child > tr:first-child td {
+      border-top: 0; }
+      .panel > .table-bordered, .panel > .table-responsive > .table-bordered {
+        border: 0; }
+        .panel > .table-bordered > thead > tr > th:first-child,
+        .panel > .table-bordered > thead > tr > td:first-child,
+        .panel > .table-bordered > tbody > tr > th:first-child,
+        .panel > .table-bordered > tbody > tr > td:first-child,
+        .panel > .table-bordered > tfoot > tr > th:first-child,
+        .panel > .table-bordered > tfoot > tr > td:first-child,
+        .panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
+        .panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
+        .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
+        .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
+        .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+        .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+          border-left: 0; }
+          .panel > .table-bordered > thead > tr > th:last-child,
+          .panel > .table-bordered > thead > tr > td:last-child,
+          .panel > .table-bordered > tbody > tr > th:last-child,
+          .panel > .table-bordered > tbody > tr > td:last-child,
+          .panel > .table-bordered > tfoot > tr > th:last-child,
+          .panel > .table-bordered > tfoot > tr > td:last-child,
+          .panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
+          .panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
+          .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
+          .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
+          .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+          .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+            border-right: 0; }
+        .panel > .table-bordered > thead > tr:first-child > td,
+        .panel > .table-bordered > thead > tr:first-child > th,
+        .panel > .table-bordered > tbody > tr:first-child > td,
+        .panel > .table-bordered > tbody > tr:first-child > th,
+        .panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
+        .panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
+        .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
+        .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
+          border-bottom: 0; }
+        .panel > .table-bordered > tbody > tr:last-child > td,
+        .panel > .table-bordered > tbody > tr:last-child > th,
+        .panel > .table-bordered > tfoot > tr:last-child > td,
+        .panel > .table-bordered > tfoot > tr:last-child > th,
+        .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
+        .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
+        .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
+        .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
+          border-bottom: 0; }
+  .panel > .table-responsive {
+    border: 0;
+    margin-bottom: 0; }
+
+.panel-group {
+  margin-bottom: 20px; }
+  .panel-group .panel {
+    margin-bottom: 0;
+    border-radius: 4px; }
+    .panel-group .panel + .panel {
+      margin-top: 5px; }
+  .panel-group .panel-heading {
+    border-bottom: 0; }
+    .panel-group .panel-heading + .panel-collapse > .panel-body {
+      border-top: 1px solid #ddd; }
+  .panel-group .panel-footer {
+    border-top: 0; }
+    .panel-group .panel-footer + .panel-collapse .panel-body {
+      border-bottom: 1px solid #ddd; }
+
+.panel-default {
+  border-color: #ddd; }
+
+  .panel-primary {
+    border-color: #ddd; }
+
+    .panel-success {
+      border-color: #ddd; }
+
+      .panel-info {
+        border-color: #ddd; }
+
+        .panel-warning {
+          border-color: #ddd; }
+
+          .panel-danger {
+            border-color: #ddd; }
+.panel-default > .panel-heading {
+  color: #000;
+  background-color: #f5f5f5;
+  border-color: #ddd; }
+  .panel-default > .panel-heading + .panel-collapse > .panel-body {
+    border-top-color: #ddd; }
+    .panel-default > .panel-heading .badge {
+      color: #f5f5f5;
+      background-color: #000; }
+.panel-default > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #ddd; }
+.panel-primary > .panel-heading {
+  color: #fff;
+  background-color: #0074cd;
+  border-color: #ddd; }
+  .panel-primary > .panel-heading + .panel-collapse > .panel-body {
+    border-top-color: #ddd; }
+    .panel-primary > .panel-heading .badge {
+      color: #0074cd;
+      background-color: #fff; }
+.panel-primary > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #ddd; }
+.panel-success > .panel-heading {
+  color: #468847;
+  background-color: #dde7ee;
+  border-color: #ddd; }
+  .panel-success > .panel-heading + .panel-collapse > .panel-body {
+    border-top-color: #ddd; }
+    .panel-success > .panel-heading .badge {
+      color: #dde7ee;
+      background-color: #468847; }
+.panel-success > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #ddd; }
+.panel-info > .panel-heading {
+  color: #3a87ad;
+  background-color: #033C73;
+  border-color: #ddd; }
+  .panel-info > .panel-heading + .panel-collapse > .panel-body {
+    border-top-color: #ddd; }
+    .panel-info > .panel-heading .badge {
+      color: #033C73;
+      background-color: #3a87ad; }
+.panel-info > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #ddd; }
+.panel-warning > .panel-heading {
+  color: #c09853;
+  background-color: #DD5600;
+  border-color: #ddd; }
+  .panel-warning > .panel-heading + .panel-collapse > .panel-body {
+    border-top-color: #ddd; }
+    .panel-warning > .panel-heading .badge {
+      color: #DD5600;
+      background-color: #c09853; }
+.panel-warning > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #ddd; }
+.panel-danger > .panel-heading {
+  color: #b94a48;
+  background-color: #C71C22;
+  border-color: #ddd; }
+  .panel-danger > .panel-heading + .panel-collapse > .panel-body {
+    border-top-color: #ddd; }
+    .panel-danger > .panel-heading .badge {
+      color: #C71C22;
+      background-color: #b94a48; }
+.panel-danger > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #ddd; }
+.embed-responsive {
+  position: relative;
+  display: block;
+  height: 0;
+  padding: 0;
+  overflow: hidden; }
+  .embed-responsive .embed-responsive-item, .embed-responsive iframe,
+  .embed-responsive embed, .embed-responsive object {
+    position: absolute;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    height: 100%;
+    width: 100%;
+    border: 0; }
+    .embed-responsive.embed-responsive-16by9 {
+      padding-bottom: 56.25%; }
+      .embed-responsive.embed-responsive-4by3 {
+        padding-bottom: 75%; }
+.well {
+  min-height: 20px;
+  padding: 19px;
+  margin-bottom: 20px;
+  background-color: #f5f5f5;
+  border: 1px solid #e3e3e3;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); }
+  .well blockquote {
+    border-color: #ddd;
+    border-color: rgba(0, 0, 0, 0.15); }
+
+.well-lg {
+  padding: 24px;
+  border-radius: 6px; }
+
+  .well-sm {
+    padding: 9px;
+    border-radius: 3px; }
+.close {
+  float: right;
+  font-size: 19.5px;
+  font-weight: bold;
+  line-height: 1;
+  color: #000;
+  text-shadow: 0 1px 0 #fff;
+  opacity: 0.2;
+  filter: alpha(opacity=20); }
+  .close:hover, .close:focus {
+    color: #000;
+    text-decoration: none;
+    cursor: pointer;
+    opacity: 0.5;
+    filter: alpha(opacity=50); }
+
+button.close {
+  padding: 0;
+  cursor: pointer;
+  background: transparent;
+  border: 0;
+  -webkit-appearance: none; }
+.modal-open {
+  overflow: hidden; }
+
+  .modal {
+    display: none;
+    overflow: hidden;
+    position: fixed;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    z-index: 1050;
+    -webkit-overflow-scrolling: touch;
+    outline: 0; }
+    .modal.fade .modal-dialog {
+      -webkit-transform: translate3d(0, -25%, 0);
+      transform: translate3d(0, -25%, 0);
+      -webkit-transition: -webkit-transform 0.3s ease-out;
+      -moz-transition: -moz-transform 0.3s ease-out;
+      -o-transition: -o-transform 0.3s ease-out;
+      transition: transform 0.3s ease-out; }
+      .modal.in .modal-dialog {
+        -webkit-transform: translate3d(0, 0, 0);
+        transform: translate3d(0, 0, 0); }
+
+.modal-open .modal {
+  overflow-x: hidden;
+  overflow-y: auto; }
+
+  .modal-dialog {
+    position: relative;
+    width: auto;
+    margin: 10px; }
+
+    .modal-content {
+      position: relative;
+      background-color: #fff;
+      border: 1px solid #999;
+      border: 1px solid rgba(0, 0, 0, 0.2);
+      border-radius: 6px;
+      -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+      box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+      background-clip: padding-box;
+      outline: 0; }
+
+      .modal-backdrop {
+        position: fixed;
+        top: 0;
+        right: 0;
+        bottom: 0;
+        left: 0;
+        z-index: 1040;
+        background-color: #000; }
+        .modal-backdrop.fade {
+          opacity: 0;
+          filter: alpha(opacity=0); }
+          .modal-backdrop.in {
+            opacity: 0.5;
+            filter: alpha(opacity=50); }
+
+.modal-header {
+  padding: 20px;
+  min-height: 16.42857px; }
+
+  .modal-header .close {
+    margin-top: -2px; }
+
+    .modal-title {
+      margin: 0;
+      line-height: 1.42857; }
+
+      .modal-body {
+        position: relative;
+        padding: 15px 20px 30px 20px; }
+
+        .modal-footer {
+          padding: 20px;
+          text-align: right;
+          border-top: 1px solid #e5e5e5;
+          background: #f5f5f5; }
+          .modal-footer .btn + .btn {
+            margin-left: 5px;
+            margin-bottom: 0; }
+            .modal-footer .btn-group .btn + .btn {
+              margin-left: -1px; }
+              .modal-footer .btn-block + .btn-block {
+                margin-left: 0; }
+                .modal-footer a.close {
+                  color: #000;
+                  line-height: 24px; }
+                  .modal-footer a.close:hover, .modal-footer a.close:focus {
+                    text-decoration: none; }
+
+.modal-scrollbar-measure {
+  position: absolute;
+  top: -9999px;
+  width: 50px;
+  height: 50px;
+  overflow: scroll; }
+
+  @media (min-width: 768px) {
+    .modal-dialog {
+      width: 732px;
+      margin: 30px auto;   }
+      .modal-content {
+        -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
+        box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);   }
+        .modal-sm {
+          width: 300px;   }
+}
+
+@media (min-width: 992px) {
+  .modal-lg {
+    width: 900px;   }
+}
+.tooltip {
+  position: absolute;
+  z-index: 1070;
+  display: block;
+  visibility: visible;
+  font-size: 12px;
+  line-height: 1.4;
+  opacity: 0;
+  filter: alpha(opacity=0); }
+  .tooltip.in {
+    opacity: 0.9;
+    filter: alpha(opacity=90); }
+    .tooltip.top {
+      margin-top: -3px;
+      padding: 5px 0; }
+      .tooltip.right {
+        margin-left: 3px;
+        padding: 0 5px; }
+        .tooltip.bottom {
+          margin-top: 3px;
+          padding: 5px 0; }
+          .tooltip.left {
+            margin-left: -3px;
+            padding: 0 5px; }
+
+.tooltip-inner {
+  max-width: 200px;
+  padding: 3px 8px;
+  color: #fff;
+  text-align: center;
+  text-decoration: none;
+  background-color: #000;
+  border-radius: 4px; }
+
+  .tooltip-arrow {
+    position: absolute;
+    width: 0;
+    height: 0;
+    border-color: transparent;
+    border-style: solid; }
+
+    .tooltip.top .tooltip-arrow {
+      bottom: 0;
+      left: 50%;
+      margin-left: -5px;
+      border-width: 5px 5px 0;
+      border-top-color: #000; }
+      .tooltip.top-left .tooltip-arrow {
+        bottom: 0;
+        left: 5px;
+        border-width: 5px 5px 0;
+        border-top-color: #000; }
+        .tooltip.top-right .tooltip-arrow {
+          bottom: 0;
+          right: 5px;
+          border-width: 5px 5px 0;
+          border-top-color: #000; }
+          .tooltip.right .tooltip-arrow {
+            top: 50%;
+            left: 0;
+            margin-top: -5px;
+            border-width: 5px 5px 5px 0;
+            border-right-color: #000; }
+            .tooltip.left .tooltip-arrow {
+              top: 50%;
+              right: 0;
+              margin-top: -5px;
+              border-width: 5px 0 5px 5px;
+              border-left-color: #000; }
+              .tooltip.bottom .tooltip-arrow {
+                top: 0;
+                left: 50%;
+                margin-left: -5px;
+                border-width: 0 5px 5px;
+                border-bottom-color: #000; }
+                .tooltip.bottom-left .tooltip-arrow {
+                  top: 0;
+                  left: 5px;
+                  border-width: 0 5px 5px;
+                  border-bottom-color: #000; }
+                  .tooltip.bottom-right .tooltip-arrow {
+                    top: 0;
+                    right: 5px;
+                    border-width: 0 5px 5px;
+                    border-bottom-color: #000; }
+.popover {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1060;
+  display: none;
+  max-width: 276px;
+  padding: 1px;
+  text-align: left;
+  background-color: #fff;
+  background-clip: padding-box;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  border-radius: 3px;
+  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  white-space: normal; }
+  .popover.top {
+    margin-top: -10px; }
+    .popover.right {
+      margin-left: 10px; }
+      .popover.bottom {
+        margin-top: 10px; }
+        .popover.left {
+          margin-left: -10px; }
+
+.popover-title {
+  margin: 0;
+  padding: 8px 14px;
+  font-size: 13px;
+  font-weight: normal;
+  line-height: 18px;
+  background-color: #f7f7f7;
+  border-bottom: 1px solid #d5dfe6; }
+
+  .popover-content {
+    padding: 9px 14px; }
+
+    .popover > .arrow, .popover > .arrow:after {
+      position: absolute;
+      display: block;
+      width: 0;
+      height: 0;
+      border-color: transparent;
+      border-style: solid; }
+
+.popover > .arrow {
+  border-width: 11px; }
+
+  .popover > .arrow:after {
+    border-width: 10px;
+    content: ""; }
+
+    .popover.top > .arrow {
+      left: 50%;
+      margin-left: -11px;
+      border-bottom-width: 0;
+      border-top-color: #999;
+      border-top-color: black;
+      bottom: -11px; }
+      .popover.top > .arrow:after {
+        content: " ";
+        bottom: 1px;
+        margin-left: -10px;
+        border-bottom-width: 0;
+        border-top-color: #fff; }
+    .popover.right > .arrow {
+      top: 50%;
+      left: -11px;
+      margin-top: -11px;
+      border-left-width: 0;
+      border-right-color: #999;
+      border-right-color: black; }
+      .popover.right > .arrow:after {
+        content: " ";
+        left: 1px;
+        bottom: -10px;
+        border-left-width: 0;
+        border-right-color: #fff; }
+    .popover.bottom > .arrow {
+      left: 50%;
+      margin-left: -11px;
+      border-top-width: 0;
+      border-bottom-color: #999;
+      border-bottom-color: black;
+      top: -11px; }
+      .popover.bottom > .arrow:after {
+        content: " ";
+        top: 1px;
+        margin-left: -10px;
+        border-top-width: 0;
+        border-bottom-color: #fff; }
+    .popover.left > .arrow {
+      top: 50%;
+      right: -11px;
+      margin-top: -11px;
+      border-right-width: 0;
+      border-left-color: #999;
+      border-left-color: black; }
+      .popover.left > .arrow:after {
+        content: " ";
+        right: 1px;
+        border-right-width: 0;
+        border-left-color: #fff;
+        bottom: -10px; }
+.carousel {
+  position: relative; }
+
+  .carousel-inner {
+    position: relative;
+    overflow: hidden;
+    width: 100%; }
+    .carousel-inner > .item {
+      display: none;
+      position: relative;
+      -webkit-transition: 0.6s ease-in-out left;
+      -o-transition: 0.6s ease-in-out left;
+      transition: 0.6s ease-in-out left; }
+      .carousel-inner > .item > img, .carousel-inner > .item > a > img {
+        display: block;
+        width: 100% \9;
+        max-width: 100%;
+        height: auto;
+        line-height: 1; }
+    .carousel-inner > .active, .carousel-inner > .next, .carousel-inner > .prev {
+      display: block; }
+      .carousel-inner > .active {
+        left: 0; }
+        .carousel-inner > .next, .carousel-inner > .prev {
+          position: absolute;
+          top: 0;
+          width: 100%; }
+          .carousel-inner > .next {
+            left: 100%; }
+            .carousel-inner > .prev {
+              left: -100%; }
+              .carousel-inner > .next.left, .carousel-inner > .prev.right {
+                left: 0; }
+                .carousel-inner > .active.left {
+                  left: -100%; }
+                  .carousel-inner > .active.right {
+                    left: 100%; }
+
+.carousel-control {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  width: 15%;
+  opacity: 0.5;
+  filter: alpha(opacity=50);
+  font-size: 20px;
+  color: #fff;
+  text-align: center;
+  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); }
+  .carousel-control.left {
+    background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+    background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+    background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.0001));
+    background-repeat: repeat-x;
+    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',
+        endColorstr='#00000000', GradientType=1); }
+    .carousel-control.right {
+      left: auto;
+      right: 0;
+      background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+      background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+      background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001), rgba(0, 0, 0, 0.5));
+      background-repeat: repeat-x;
+      filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',
+            endColorstr='#80000000', GradientType=1); }
+      .carousel-control:hover, .carousel-control:focus {
+        outline: 0;
+        color: #fff;
+        text-decoration: none;
+        opacity: 0.9;
+        filter: alpha(opacity=90); }
+        .carousel-control .icon-prev, .carousel-control .icon-next,
+        .carousel-control .glyphicon-chevron-left,
+        .carousel-control .glyphicon-chevron-right {
+          position: absolute;
+          top: 50%;
+          z-index: 5;
+          display: inline-block; }
+          .carousel-control .icon-prev, .carousel-control .glyphicon-chevron-left {
+            left: 50%;
+            margin-left: -10px; }
+            .carousel-control .icon-next, .carousel-control .glyphicon-chevron-right {
+              right: 50%;
+              margin-right: -10px; }
+              .carousel-control .icon-prev, .carousel-control .icon-next {
+                width: 20px;
+                height: 20px;
+                margin-top: -10px;
+                font-family: serif; }
+                .carousel-control .icon-prev:before {
+                  content: '\2039'; }
+  .carousel-control .icon-next:before {
+    content: '\203a'; }
+
+.carousel-indicators {
+  position: absolute;
+  bottom: 10px;
+  left: 50%;
+  z-index: 15;
+  width: 60%;
+  margin-left: -30%;
+  padding-left: 0;
+  list-style: none;
+  text-align: center; }
+  .carousel-indicators li {
+    display: inline-block;
+    width: 10px;
+    height: 10px;
+    margin: 1px;
+    text-indent: -999px;
+    border: 1px solid #fff;
+    border-radius: 10px;
+    cursor: pointer;
+    background-color: #000 \9;
+    background-color: transparent; }
+    .carousel-indicators .active {
+      margin: 0;
+      width: 12px;
+      height: 12px;
+      background-color: #fff; }
+
+.carousel-caption {
+  position: absolute;
+  left: 15%;
+  right: 15%;
+  bottom: 20px;
+  z-index: 10;
+  padding-top: 20px;
+  padding-bottom: 20px;
+  color: #fff;
+  text-align: center;
+  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); }
+  .carousel-caption .btn {
+    text-shadow: none; }
+
+@media screen and (min-width: 768px) {
+  .carousel-control .glyphicon-chevron-left,
+  .carousel-control .glyphicon-chevron-right, .carousel-control .icon-prev,
+  .carousel-control .icon-next {
+    width: 30px;
+    height: 30px;
+    margin-top: -15px;
+    font-size: 30px;   }
+    .carousel-control .glyphicon-chevron-left, .carousel-control .icon-prev {
+      margin-left: -15px;   }
+      .carousel-control .glyphicon-chevron-right, .carousel-control .icon-next {
+        margin-right: -15px;   }
+  .carousel-caption {
+    left: 20%;
+    right: 20%;
+    padding-bottom: 30px;   }
+    .carousel-indicators {
+      bottom: 20px;   }
+}
+.center-block {
+  display: block;
+  margin-left: auto;
+  margin-right: auto; }
+
+  .pull-right {
+    float: right !important; }
+
+    .pull-left {
+      float: left !important; }
+
+      .hide {
+        display: none !important; }
+
+        .show {
+          display: block !important; }
+
+          .invisible {
+            visibility: hidden; }
+
+            .text-hide {
+              font: 0 / 0 a;
+              color: transparent;
+              text-shadow: none;
+              background-color: transparent;
+              border: 0; }
+
+              .hidden {
+                display: none !important;
+                visibility: hidden !important; }
+
+                .affix {
+                  position: fixed;
+                  -webkit-transform: translate3d(0, 0, 0);
+                  transform: translate3d(0, 0, 0); }
+@-ms-viewport {
+  width: device-width; }
+
+  .visible-xs-block, .visible-xs-inline, .visible-xs-inline-block, .visible-sm-block,
+  .visible-sm-inline, .visible-sm-inline-block, .visible-md-block,
+  .visible-md-inline, .visible-md-inline-block, .visible-lg-block,
+  .visible-lg-inline, .visible-lg-inline-block {
+    display: none !important; }
+
+    @media (max-width: 767px) {
+      .visible-xs-block {
+        display: block !important;   }
+}
+
+@media (max-width: 767px) {
+  .visible-xs-inline {
+    display: inline !important;   }
+}
+
+@media (max-width: 767px) {
+  .visible-xs-inline-block {
+    display: inline-block !important;   }
+}
+
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm-block {
+    display: block !important;   }
+}
+
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm-inline {
+    display: inline !important;   }
+}
+
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm-inline-block {
+    display: inline-block !important;   }
+}
+
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md-block {
+    display: block !important;   }
+}
+
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md-inline {
+    display: inline !important;   }
+}
+
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md-inline-block {
+    display: inline-block !important;   }
+}
+
+@media (min-width: 1200px) {
+  .visible-lg-block {
+    display: block !important;   }
+}
+
+@media (min-width: 1200px) {
+  .visible-lg-inline {
+    display: inline !important;   }
+}
+
+@media (min-width: 1200px) {
+  .visible-lg-inline-block {
+    display: inline-block !important;   }
+}
+
+.visible-print-block {
+  display: none !important; }
+  @media print {
+    .visible-print-block {
+      display: block !important;   }
+}
+
+.visible-print-inline {
+  display: none !important; }
+  @media print {
+    .visible-print-inline {
+      display: inline !important;   }
+}
+
+.visible-print-inline-block {
+  display: none !important; }
+  @media print {
+    .visible-print-inline-block {
+      display: inline-block !important;   }
+}
+.visible-xs, .visible-sm, .visible-md, .visible-lg {
+  display: none !important; }
+  @media (max-width: 767px) {
+    .visible-xs {
+      display: block !important;   }
+      table.visible-xs {
+        display: table;   }
+        tr.visible-xs {
+          display: table-row !important;   }
+          th.visible-xs, td.visible-xs {
+            display: table-cell !important;   }
+}
+          @media (min-width: 768px) and (max-width: 991px) {
+            .visible-sm {
+              display: block !important;   }
+              table.visible-sm {
+                display: table;   }
+                tr.visible-sm {
+                  display: table-row !important;   }
+                  th.visible-sm, td.visible-sm {
+                    display: table-cell !important;   }
+}
+                  @media (min-width: 992px) and (max-width: 1199px) {
+                    .visible-md {
+                      display: block !important;   }
+                      table.visible-md {
+                        display: table;   }
+                        tr.visible-md {
+                          display: table-row !important;   }
+                          th.visible-md, td.visible-md {
+                            display: table-cell !important;   }
+}
+                          @media (min-width: 1200px) {
+                            .visible-lg {
+                              display: block !important;   }
+                              table.visible-lg {
+                                display: table;   }
+                                tr.visible-lg {
+                                  display: table-row !important;   }
+                                  th.visible-lg, td.visible-lg {
+                                    display: table-cell !important;   }
+}
+                                  @media (max-width: 767px) {
+                                    .hidden-xs {
+                                      display: none !important;   }
+}
+                                    @media (min-width: 768px) and (max-width: 991px) {
+                                      .hidden-sm {
+                                        display: none !important;   }
+}
+                                      @media (min-width: 992px) and (max-width: 1199px) {
+                                        .hidden-md {
+                                          display: none !important;   }
+}
+                                        @media (min-width: 1200px) {
+                                          .hidden-lg {
+                                            display: none !important;   }
+}
+
+.visible-print {
+  display: none !important; }
+  @media print {
+    .visible-print {
+      display: block !important;   }
+      table.visible-print {
+        display: table;   }
+        tr.visible-print {
+          display: table-row !important;   }
+          th.visible-print, td.visible-print {
+            display: table-cell !important;   }
+}
+          @media print {
+            .hidden-print {
+              display: none !important;   }
+}
+@font-face {
+  font-family: 'FontAwesome';
+  src: url('/horizon/static/horizon/lib/font-awesome/fonts/fontawesome-webfont.eot?v=4.3.0&f7c2b4b747b1');
+  src: url('/horizon/static/horizon/lib/font-awesome/fonts/fontawesome-webfont.eot?&f7c2b4b747b1#iefix&v=4.3.0') format('embedded-opentype'),
+    url('/horizon/static/horizon/lib/font-awesome/fonts/fontawesome-webfont.woff2?v=4.3.0&97493d3f11c0') format('woff2'),
+    url('/horizon/static/horizon/lib/font-awesome/fonts/fontawesome-webfont.woff?v=4.3.0&d9ee23d59d0e') format('woff'),
+    url('/horizon/static/horizon/lib/font-awesome/fonts/fontawesome-webfont.ttf?v=4.3.0&706450d7bba6') format('truetype'),
+    url('/horizon/static/horizon/lib/font-awesome/fonts/fontawesome-webfont.svg?v=4.3.0&2980083682e9#fontawesomeregular') format('svg');
+  font-weight: normal;
+  font-style: normal; }
+.fa {
+  display: inline-block;
+  font: normal normal normal 14px / 1 FontAwesome;
+  font-size: inherit;
+  text-rendering: auto;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  transform: translate(0, 0); }
+.fa-lg {
+  font-size: 1.33333em;
+  line-height: 0.75em;
+  vertical-align: -15%; }
+
+  .fa-2x {
+    font-size: 2em; }
+
+    .fa-3x {
+      font-size: 3em; }
+
+      .fa-4x {
+        font-size: 4em; }
+
+        .fa-5x {
+          font-size: 5em; }
+.fa-fw {
+  width: 1.28571em;
+  text-align: center; }
+.fa-ul {
+  padding-left: 0;
+  margin-left: 2.14286em;
+  list-style-type: none; }
+  .fa-ul > li {
+    position: relative; }
+
+.fa-li {
+  position: absolute;
+  left: -2.14286em;
+  width: 2.14286em;
+  top: 0.14286em;
+  text-align: center; }
+  .fa-li.fa-lg {
+    left: -1.85714em; }
+.fa-border {
+  padding: 0.2em 0.25em 0.15em;
+  border: solid 0.08em #eee;
+  border-radius: 0.1em; }
+
+  .pull-right {
+    float: right; }
+
+    .pull-left {
+      float: left; }
+
+      .fa.pull-left {
+        margin-right: 0.3em; }
+        .fa.pull-right {
+          margin-left: 0.3em; }
+.fa-spin {
+  -webkit-animation: fa-spin 2s infinite linear;
+  animation: fa-spin 2s infinite linear; }
+
+  .fa-pulse {
+    -webkit-animation: fa-spin 1s infinite steps(8);
+    animation: fa-spin 1s infinite steps(8); }
+
+    @-webkit-keyframes fa-spin {
+      0% {
+        -webkit-transform: rotate(0deg);
+        transform: rotate(0deg);   }
+        100% {
+          -webkit-transform: rotate(359deg);
+          transform: rotate(359deg);   }
+}
+
+@keyframes fa-spin {
+  0% {
+    -webkit-transform: rotate(0deg);
+    transform: rotate(0deg);   }
+    100% {
+      -webkit-transform: rotate(359deg);
+      transform: rotate(359deg);   }
+}
+.fa-rotate-90 {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+  -webkit-transform: rotate(90deg);
+  -ms-transform: rotate(90deg);
+  transform: rotate(90deg); }
+
+  .fa-rotate-180 {
+    filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
+    -webkit-transform: rotate(180deg);
+    -ms-transform: rotate(180deg);
+    transform: rotate(180deg); }
+
+    .fa-rotate-270 {
+      filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+      -webkit-transform: rotate(270deg);
+      -ms-transform: rotate(270deg);
+      transform: rotate(270deg); }
+
+      .fa-flip-horizontal {
+        filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0);
+        -webkit-transform: scale(-1, 1);
+        -ms-transform: scale(-1, 1);
+        transform: scale(-1, 1); }
+
+        .fa-flip-vertical {
+          filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
+          -webkit-transform: scale(1, -1);
+          -ms-transform: scale(1, -1);
+          transform: scale(1, -1); }
+
+          :root .fa-rotate-90, :root .fa-rotate-180, :root .fa-rotate-270,
+          :root .fa-flip-horizontal, :root .fa-flip-vertical {
+            filter: none; }
+.fa-stack {
+  position: relative;
+  display: inline-block;
+  width: 2em;
+  height: 2em;
+  line-height: 2em;
+  vertical-align: middle; }
+
+  .fa-stack-1x, .fa-stack-2x {
+    position: absolute;
+    left: 0;
+    width: 100%;
+    text-align: center; }
+
+    .fa-stack-1x {
+      line-height: inherit; }
+
+      .fa-stack-2x {
+        font-size: 2em; }
+
+        .fa-inverse {
+          color: #fff; }
+.fa-glass:before {
+  content: "\f000"; }
+
+  .fa-music:before {
+    content: "\f001"; }
+
+    .fa-search:before {
+      content: "\f002"; }
+
+      .fa-envelope-o:before {
+        content: "\f003"; }
+
+        .fa-heart:before {
+          content: "\f004"; }
+
+          .fa-star:before {
+            content: "\f005"; }
+
+            .fa-star-o:before {
+              content: "\f006"; }
+
+              .fa-user:before {
+                content: "\f007"; }
+
+                .fa-film:before {
+                  content: "\f008"; }
+
+                  .fa-th-large:before {
+                    content: "\f009"; }
+
+                    .fa-th:before {
+                      content: "\f00a"; }
+
+                      .fa-th-list:before {
+                        content: "\f00b"; }
+
+                        .fa-check:before {
+                          content: "\f00c"; }
+
+                          .fa-remove:before, .fa-close:before, .fa-times:before {
+                            content: "\f00d"; }
+
+                            .fa-search-plus:before {
+                              content: "\f00e"; }
+
+                              .fa-search-minus:before {
+                                content: "\f010"; }
+
+                                .fa-power-off:before {
+                                  content: "\f011"; }
+
+                                  .fa-signal:before {
+                                    content: "\f012"; }
+
+                                    .fa-gear:before, .fa-cog:before {
+                                      content: "\f013"; }
+
+                                      .fa-trash-o:before {
+                                        content: "\f014"; }
+
+                                        .fa-home:before {
+                                          content: "\f015"; }
+
+                                          .fa-file-o:before {
+                                            content: "\f016"; }
+
+                                            .fa-clock-o:before {
+                                              content: "\f017"; }
+
+                                              .fa-road:before {
+                                                content: "\f018"; }
+
+                                                .fa-download:before {
+                                                  content: "\f019"; }
+
+                                                  .fa-arrow-circle-o-down:before {
+                                                    content: "\f01a"; }
+
+                                                    .fa-arrow-circle-o-up:before {
+                                                      content: "\f01b"; }
+
+                                                      .fa-inbox:before {
+                                                        content: "\f01c"; }
+
+                                                        .fa-play-circle-o:before {
+                                                          content: "\f01d"; }
+
+                                                          .fa-rotate-right:before, .fa-repeat:before {
+                                                            content: "\f01e"; }
+
+                                                            .fa-refresh:before {
+                                                              content: "\f021"; }
+
+                                                              .fa-list-alt:before {
+                                                                content: "\f022"; }
+
+                                                                .fa-lock:before {
+                                                                  content: "\f023"; }
+
+                                                                  .fa-flag:before {
+                                                                    content: "\f024"; }
+
+                                                                    .fa-headphones:before {
+                                                                      content: "\f025"; }
+
+                                                                      .fa-volume-off:before {
+                                                                        content: "\f026"; }
+
+                                                                        .fa-volume-down:before {
+                                                                          content: "\f027"; }
+
+                                                                          .fa-volume-up:before {
+                                                                            content: "\f028"; }
+
+                                                                            .fa-qrcode:before {
+                                                                              content: "\f029"; }
+
+                                                                              .fa-barcode:before {
+                                                                                content: "\f02a"; }
+
+                                                                                .fa-tag:before {
+                                                                                  content: "\f02b"; }
+
+                                                                                  .fa-tags:before {
+                                                                                    content: "\f02c"; }
+
+                                                                                    .fa-book:before {
+                                                                                      content: "\f02d"; }
+
+                                                                                      .fa-bookmark:before {
+                                                                                        content: "\f02e"; }
+
+                                                                                        .fa-print:before {
+                                                                                          content: "\f02f"; }
+
+                                                                                          .fa-camera:before {
+                                                                                            content: "\f030"; }
+
+                                                                                            .fa-font:before {
+                                                                                              content: "\f031"; }
+
+                                                                                              .fa-bold:before {
+                                                                                                content: "\f032"; }
+
+                                                                                                .fa-italic:before {
+                                                                                                  content: "\f033"; }
+
+                                                                                                  .fa-text-height:before {
+                                                                                                    content: "\f034"; }
+
+                                                                                                    .fa-text-width:before {
+                                                                                                      content: "\f035"; }
+
+                                                                                                      .fa-align-left:before {
+                                                                                                        content: "\f036"; }
+
+                                                                                                        .fa-align-center:before {
+                                                                                                          content: "\f037"; }
+
+                                                                                                          .fa-align-right:before {
+                                                                                                            content: "\f038"; }
+
+                                                                                                            .fa-align-justify:before {
+                                                                                                              content: "\f039"; }
+
+                                                                                                              .fa-list:before {
+                                                                                                                content: "\f03a"; }
+
+                                                                                                                .fa-dedent:before, .fa-outdent:before {
+                                                                                                                  content: "\f03b"; }
+
+                                                                                                                  .fa-indent:before {
+                                                                                                                    content: "\f03c"; }
+
+                                                                                                                    .fa-video-camera:before {
+                                                                                                                      content: "\f03d"; }
+
+                                                                                                                      .fa-photo:before, .fa-image:before, .fa-picture-o:before {
+                                                                                                                        content: "\f03e"; }
+
+                                                                                                                        .fa-pencil:before {
+                                                                                                                          content: "\f040"; }
+
+                                                                                                                          .fa-map-marker:before {
+                                                                                                                            content: "\f041"; }
+
+                                                                                                                            .fa-adjust:before {
+                                                                                                                              content: "\f042"; }
+
+                                                                                                                              .fa-tint:before {
+                                                                                                                                content: "\f043"; }
+
+                                                                                                                                .fa-edit:before, .fa-pencil-square-o:before {
+                                                                                                                                  content: "\f044"; }
+
+                                                                                                                                  .fa-share-square-o:before {
+                                                                                                                                    content: "\f045"; }
+
+                                                                                                                                    .fa-check-square-o:before {
+                                                                                                                                      content: "\f046"; }
+
+                                                                                                                                      .fa-arrows:before {
+                                                                                                                                        content: "\f047"; }
+
+                                                                                                                                        .fa-step-backward:before {
+                                                                                                                                          content: "\f048"; }
+
+                                                                                                                                          .fa-fast-backward:before {
+                                                                                                                                            content: "\f049"; }
+
+                                                                                                                                            .fa-backward:before {
+                                                                                                                                              content: "\f04a"; }
+
+                                                                                                                                              .fa-play:before {
+                                                                                                                                                content: "\f04b"; }
+
+                                                                                                                                                .fa-pause:before {
+                                                                                                                                                  content: "\f04c"; }
+
+                                                                                                                                                  .fa-stop:before {
+                                                                                                                                                    content: "\f04d"; }
+
+                                                                                                                                                    .fa-forward:before {
+                                                                                                                                                      content: "\f04e"; }
+
+                                                                                                                                                      .fa-fast-forward:before {
+                                                                                                                                                        content: "\f050"; }
+
+                                                                                                                                                        .fa-step-forward:before {
+                                                                                                                                                          content: "\f051"; }
+
+                                                                                                                                                          .fa-eject:before {
+                                                                                                                                                            content: "\f052"; }
+
+                                                                                                                                                            .fa-chevron-left:before {
+                                                                                                                                                              content: "\f053"; }
+
+                                                                                                                                                              .fa-chevron-right:before {
+                                                                                                                                                                content: "\f054"; }
+
+                                                                                                                                                                .fa-plus-circle:before {
+                                                                                                                                                                  content: "\f055"; }
+
+                                                                                                                                                                  .fa-minus-circle:before {
+                                                                                                                                                                    content: "\f056"; }
+
+                                                                                                                                                                    .fa-times-circle:before {
+                                                                                                                                                                      content: "\f057"; }
+
+                                                                                                                                                                      .fa-check-circle:before {
+                                                                                                                                                                        content: "\f058"; }
+
+                                                                                                                                                                        .fa-question-circle:before {
+                                                                                                                                                                          content: "\f059"; }
+
+                                                                                                                                                                          .fa-info-circle:before {
+                                                                                                                                                                            content: "\f05a"; }
+
+                                                                                                                                                                            .fa-crosshairs:before {
+                                                                                                                                                                              content: "\f05b"; }
+
+                                                                                                                                                                              .fa-times-circle-o:before {
+                                                                                                                                                                                content: "\f05c"; }
+
+                                                                                                                                                                                .fa-check-circle-o:before {
+                                                                                                                                                                                  content: "\f05d"; }
+
+                                                                                                                                                                                  .fa-ban:before {
+                                                                                                                                                                                    content: "\f05e"; }
+
+                                                                                                                                                                                    .fa-arrow-left:before {
+                                                                                                                                                                                      content: "\f060"; }
+
+                                                                                                                                                                                      .fa-arrow-right:before {
+                                                                                                                                                                                        content: "\f061"; }
+
+                                                                                                                                                                                        .fa-arrow-up:before {
+                                                                                                                                                                                          content: "\f062"; }
+
+                                                                                                                                                                                          .fa-arrow-down:before {
+                                                                                                                                                                                            content: "\f063"; }
+
+                                                                                                                                                                                            .fa-mail-forward:before, .fa-share:before {
+                                                                                                                                                                                              content: "\f064"; }
+
+                                                                                                                                                                                              .fa-expand:before {
+                                                                                                                                                                                                content: "\f065"; }
+
+                                                                                                                                                                                                .fa-compress:before {
+                                                                                                                                                                                                  content: "\f066"; }
+
+                                                                                                                                                                                                  .fa-plus:before {
+                                                                                                                                                                                                    content: "\f067"; }
+
+                                                                                                                                                                                                    .fa-minus:before {
+                                                                                                                                                                                                      content: "\f068"; }
+
+                                                                                                                                                                                                      .fa-asterisk:before {
+                                                                                                                                                                                                        content: "\f069"; }
+
+                                                                                                                                                                                                        .fa-exclamation-circle:before {
+                                                                                                                                                                                                          content: "\f06a"; }
+
+                                                                                                                                                                                                          .fa-gift:before {
+                                                                                                                                                                                                            content: "\f06b"; }
+
+                                                                                                                                                                                                            .fa-leaf:before {
+                                                                                                                                                                                                              content: "\f06c"; }
+
+                                                                                                                                                                                                              .fa-fire:before {
+                                                                                                                                                                                                                content: "\f06d"; }
+
+                                                                                                                                                                                                                .fa-eye:before {
+                                                                                                                                                                                                                  content: "\f06e"; }
+
+                                                                                                                                                                                                                  .fa-eye-slash:before {
+                                                                                                                                                                                                                    content: "\f070"; }
+
+                                                                                                                                                                                                                    .fa-warning:before, .fa-exclamation-triangle:before {
+                                                                                                                                                                                                                      content: "\f071"; }
+
+                                                                                                                                                                                                                      .fa-plane:before {
+                                                                                                                                                                                                                        content: "\f072"; }
+
+                                                                                                                                                                                                                        .fa-calendar:before {
+                                                                                                                                                                                                                          content: "\f073"; }
+
+                                                                                                                                                                                                                          .fa-random:before {
+                                                                                                                                                                                                                            content: "\f074"; }
+
+                                                                                                                                                                                                                            .fa-comment:before {
+                                                                                                                                                                                                                              content: "\f075"; }
+
+                                                                                                                                                                                                                              .fa-magnet:before {
+                                                                                                                                                                                                                                content: "\f076"; }
+
+                                                                                                                                                                                                                                .fa-chevron-up:before {
+                                                                                                                                                                                                                                  content: "\f077"; }
+
+                                                                                                                                                                                                                                  .fa-chevron-down:before {
+                                                                                                                                                                                                                                    content: "\f078"; }
+
+                                                                                                                                                                                                                                    .fa-retweet:before {
+                                                                                                                                                                                                                                      content: "\f079"; }
+
+                                                                                                                                                                                                                                      .fa-shopping-cart:before {
+                                                                                                                                                                                                                                        content: "\f07a"; }
+
+                                                                                                                                                                                                                                        .fa-folder:before {
+                                                                                                                                                                                                                                          content: "\f07b"; }
+
+                                                                                                                                                                                                                                          .fa-folder-open:before {
+                                                                                                                                                                                                                                            content: "\f07c"; }
+
+                                                                                                                                                                                                                                            .fa-arrows-v:before {
+                                                                                                                                                                                                                                              content: "\f07d"; }
+
+                                                                                                                                                                                                                                              .fa-arrows-h:before {
+                                                                                                                                                                                                                                                content: "\f07e"; }
+
+                                                                                                                                                                                                                                                .fa-bar-chart-o:before, .fa-bar-chart:before {
+                                                                                                                                                                                                                                                  content: "\f080"; }
+
+                                                                                                                                                                                                                                                  .fa-twitter-square:before {
+                                                                                                                                                                                                                                                    content: "\f081"; }
+
+                                                                                                                                                                                                                                                    .fa-facebook-square:before {
+                                                                                                                                                                                                                                                      content: "\f082"; }
+
+                                                                                                                                                                                                                                                      .fa-camera-retro:before {
+                                                                                                                                                                                                                                                        content: "\f083"; }
+
+                                                                                                                                                                                                                                                        .fa-key:before {
+                                                                                                                                                                                                                                                          content: "\f084"; }
+
+                                                                                                                                                                                                                                                          .fa-gears:before, .fa-cogs:before {
+                                                                                                                                                                                                                                                            content: "\f085"; }
+
+                                                                                                                                                                                                                                                            .fa-comments:before {
+                                                                                                                                                                                                                                                              content: "\f086"; }
+
+                                                                                                                                                                                                                                                              .fa-thumbs-o-up:before {
+                                                                                                                                                                                                                                                                content: "\f087"; }
+
+                                                                                                                                                                                                                                                                .fa-thumbs-o-down:before {
+                                                                                                                                                                                                                                                                  content: "\f088"; }
+
+                                                                                                                                                                                                                                                                  .fa-star-half:before {
+                                                                                                                                                                                                                                                                    content: "\f089"; }
+
+                                                                                                                                                                                                                                                                    .fa-heart-o:before {
+                                                                                                                                                                                                                                                                      content: "\f08a"; }
+
+                                                                                                                                                                                                                                                                      .fa-sign-out:before {
+                                                                                                                                                                                                                                                                        content: "\f08b"; }
+
+                                                                                                                                                                                                                                                                        .fa-linkedin-square:before {
+                                                                                                                                                                                                                                                                          content: "\f08c"; }
+
+                                                                                                                                                                                                                                                                          .fa-thumb-tack:before {
+                                                                                                                                                                                                                                                                            content: "\f08d"; }
+
+                                                                                                                                                                                                                                                                            .fa-external-link:before {
+                                                                                                                                                                                                                                                                              content: "\f08e"; }
+
+                                                                                                                                                                                                                                                                              .fa-sign-in:before {
+                                                                                                                                                                                                                                                                                content: "\f090"; }
+
+                                                                                                                                                                                                                                                                                .fa-trophy:before {
+                                                                                                                                                                                                                                                                                  content: "\f091"; }
+
+                                                                                                                                                                                                                                                                                  .fa-github-square:before {
+                                                                                                                                                                                                                                                                                    content: "\f092"; }
+
+                                                                                                                                                                                                                                                                                    .fa-upload:before {
+                                                                                                                                                                                                                                                                                      content: "\f093"; }
+
+                                                                                                                                                                                                                                                                                      .fa-lemon-o:before {
+                                                                                                                                                                                                                                                                                        content: "\f094"; }
+
+                                                                                                                                                                                                                                                                                        .fa-phone:before {
+                                                                                                                                                                                                                                                                                          content: "\f095"; }
+
+                                                                                                                                                                                                                                                                                          .fa-square-o:before {
+                                                                                                                                                                                                                                                                                            content: "\f096"; }
+
+                                                                                                                                                                                                                                                                                            .fa-bookmark-o:before {
+                                                                                                                                                                                                                                                                                              content: "\f097"; }
+
+                                                                                                                                                                                                                                                                                              .fa-phone-square:before {
+                                                                                                                                                                                                                                                                                                content: "\f098"; }
+
+                                                                                                                                                                                                                                                                                                .fa-twitter:before {
+                                                                                                                                                                                                                                                                                                  content: "\f099"; }
+
+                                                                                                                                                                                                                                                                                                  .fa-facebook-f:before, .fa-facebook:before {
+                                                                                                                                                                                                                                                                                                    content: "\f09a"; }
+
+                                                                                                                                                                                                                                                                                                    .fa-github:before {
+                                                                                                                                                                                                                                                                                                      content: "\f09b"; }
+
+                                                                                                                                                                                                                                                                                                      .fa-unlock:before {
+                                                                                                                                                                                                                                                                                                        content: "\f09c"; }
+
+                                                                                                                                                                                                                                                                                                        .fa-credit-card:before {
+                                                                                                                                                                                                                                                                                                          content: "\f09d"; }
+
+                                                                                                                                                                                                                                                                                                          .fa-rss:before {
+                                                                                                                                                                                                                                                                                                            content: "\f09e"; }
+
+                                                                                                                                                                                                                                                                                                            .fa-hdd-o:before {
+                                                                                                                                                                                                                                                                                                              content: "\f0a0"; }
+
+                                                                                                                                                                                                                                                                                                              .fa-bullhorn:before {
+                                                                                                                                                                                                                                                                                                                content: "\f0a1"; }
+
+                                                                                                                                                                                                                                                                                                                .fa-bell:before {
+                                                                                                                                                                                                                                                                                                                  content: "\f0f3"; }
+
+                                                                                                                                                                                                                                                                                                                  .fa-certificate:before {
+                                                                                                                                                                                                                                                                                                                    content: "\f0a3"; }
+
+                                                                                                                                                                                                                                                                                                                    .fa-hand-o-right:before {
+                                                                                                                                                                                                                                                                                                                      content: "\f0a4"; }
+
+                                                                                                                                                                                                                                                                                                                      .fa-hand-o-left:before {
+                                                                                                                                                                                                                                                                                                                        content: "\f0a5"; }
+
+                                                                                                                                                                                                                                                                                                                        .fa-hand-o-up:before {
+                                                                                                                                                                                                                                                                                                                          content: "\f0a6"; }
+
+                                                                                                                                                                                                                                                                                                                          .fa-hand-o-down:before {
+                                                                                                                                                                                                                                                                                                                            content: "\f0a7"; }
+
+                                                                                                                                                                                                                                                                                                                            .fa-arrow-circle-left:before {
+                                                                                                                                                                                                                                                                                                                              content: "\f0a8"; }
+
+                                                                                                                                                                                                                                                                                                                              .fa-arrow-circle-right:before {
+                                                                                                                                                                                                                                                                                                                                content: "\f0a9"; }
+
+                                                                                                                                                                                                                                                                                                                                .fa-arrow-circle-up:before {
+                                                                                                                                                                                                                                                                                                                                  content: "\f0aa"; }
+
+                                                                                                                                                                                                                                                                                                                                  .fa-arrow-circle-down:before {
+                                                                                                                                                                                                                                                                                                                                    content: "\f0ab"; }
+
+                                                                                                                                                                                                                                                                                                                                    .fa-globe:before {
+                                                                                                                                                                                                                                                                                                                                      content: "\f0ac"; }
+
+                                                                                                                                                                                                                                                                                                                                      .fa-wrench:before {
+                                                                                                                                                                                                                                                                                                                                        content: "\f0ad"; }
+
+                                                                                                                                                                                                                                                                                                                                        .fa-tasks:before {
+                                                                                                                                                                                                                                                                                                                                          content: "\f0ae"; }
+
+                                                                                                                                                                                                                                                                                                                                          .fa-filter:before {
+                                                                                                                                                                                                                                                                                                                                            content: "\f0b0"; }
+
+                                                                                                                                                                                                                                                                                                                                            .fa-briefcase:before {
+                                                                                                                                                                                                                                                                                                                                              content: "\f0b1"; }
+
+                                                                                                                                                                                                                                                                                                                                              .fa-arrows-alt:before {
+                                                                                                                                                                                                                                                                                                                                                content: "\f0b2"; }
+
+                                                                                                                                                                                                                                                                                                                                                .fa-group:before, .fa-users:before {
+                                                                                                                                                                                                                                                                                                                                                  content: "\f0c0"; }
+
+                                                                                                                                                                                                                                                                                                                                                  .fa-chain:before, .fa-link:before {
+                                                                                                                                                                                                                                                                                                                                                    content: "\f0c1"; }
+
+                                                                                                                                                                                                                                                                                                                                                    .fa-cloud:before {
+                                                                                                                                                                                                                                                                                                                                                      content: "\f0c2"; }
+
+                                                                                                                                                                                                                                                                                                                                                      .fa-flask:before {
+                                                                                                                                                                                                                                                                                                                                                        content: "\f0c3"; }
+
+                                                                                                                                                                                                                                                                                                                                                        .fa-cut:before, .fa-scissors:before {
+                                                                                                                                                                                                                                                                                                                                                          content: "\f0c4"; }
+
+                                                                                                                                                                                                                                                                                                                                                          .fa-copy:before, .fa-files-o:before {
+                                                                                                                                                                                                                                                                                                                                                            content: "\f0c5"; }
+
+                                                                                                                                                                                                                                                                                                                                                            .fa-paperclip:before {
+                                                                                                                                                                                                                                                                                                                                                              content: "\f0c6"; }
+
+                                                                                                                                                                                                                                                                                                                                                              .fa-save:before, .fa-floppy-o:before {
+                                                                                                                                                                                                                                                                                                                                                                content: "\f0c7"; }
+
+                                                                                                                                                                                                                                                                                                                                                                .fa-square:before {
+                                                                                                                                                                                                                                                                                                                                                                  content: "\f0c8"; }
+
+                                                                                                                                                                                                                                                                                                                                                                  .fa-navicon:before, .fa-reorder:before, .fa-bars:before {
+                                                                                                                                                                                                                                                                                                                                                                    content: "\f0c9"; }
+
+                                                                                                                                                                                                                                                                                                                                                                    .fa-list-ul:before {
+                                                                                                                                                                                                                                                                                                                                                                      content: "\f0ca"; }
+
+                                                                                                                                                                                                                                                                                                                                                                      .fa-list-ol:before {
+                                                                                                                                                                                                                                                                                                                                                                        content: "\f0cb"; }
+
+                                                                                                                                                                                                                                                                                                                                                                        .fa-strikethrough:before {
+                                                                                                                                                                                                                                                                                                                                                                          content: "\f0cc"; }
+
+                                                                                                                                                                                                                                                                                                                                                                          .fa-underline:before {
+                                                                                                                                                                                                                                                                                                                                                                            content: "\f0cd"; }
+
+                                                                                                                                                                                                                                                                                                                                                                            .fa-table:before {
+                                                                                                                                                                                                                                                                                                                                                                              content: "\f0ce"; }
+
+                                                                                                                                                                                                                                                                                                                                                                              .fa-magic:before {
+                                                                                                                                                                                                                                                                                                                                                                                content: "\f0d0"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                .fa-truck:before {
+                                                                                                                                                                                                                                                                                                                                                                                  content: "\f0d1"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                  .fa-pinterest:before {
+                                                                                                                                                                                                                                                                                                                                                                                    content: "\f0d2"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                    .fa-pinterest-square:before {
+                                                                                                                                                                                                                                                                                                                                                                                      content: "\f0d3"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                      .fa-google-plus-square:before {
+                                                                                                                                                                                                                                                                                                                                                                                        content: "\f0d4"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                        .fa-google-plus:before {
+                                                                                                                                                                                                                                                                                                                                                                                          content: "\f0d5"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                          .fa-money:before {
+                                                                                                                                                                                                                                                                                                                                                                                            content: "\f0d6"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                            .fa-caret-down:before {
+                                                                                                                                                                                                                                                                                                                                                                                              content: "\f0d7"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                              .fa-caret-up:before {
+                                                                                                                                                                                                                                                                                                                                                                                                content: "\f0d8"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                .fa-caret-left:before {
+                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f0d9"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                  .fa-caret-right:before {
+                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f0da"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                    .fa-columns:before {
+                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f0db"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                      .fa-unsorted:before, .fa-sort:before {
+                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f0dc"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                        .fa-sort-down:before, .fa-sort-desc:before {
+                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f0dd"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                          .fa-sort-up:before, .fa-sort-asc:before {
+                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f0de"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                            .fa-envelope:before {
+                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f0e0"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                              .fa-linkedin:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f0e1"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                .fa-rotate-left:before, .fa-undo:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f0e2"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-legal:before, .fa-gavel:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f0e3"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-dashboard:before, .fa-tachometer:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f0e4"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-comment-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f0e5"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-comments-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f0e6"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-flash:before, .fa-bolt:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f0e7"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-sitemap:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f0e8"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-umbrella:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f0e9"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-paste:before, .fa-clipboard:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f0ea"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-lightbulb-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f0eb"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-exchange:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f0ec"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-cloud-download:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f0ed"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-cloud-upload:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f0ee"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-user-md:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f0f0"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-stethoscope:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f0f1"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-suitcase:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f0f2"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-bell-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f0a2"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-coffee:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f0f4"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-cutlery:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f0f5"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-file-text-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f0f6"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-building-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f0f7"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-hospital-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f0f8"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-ambulance:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f0f9"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-medkit:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f0fa"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-fighter-jet:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f0fb"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-beer:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f0fc"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-h-square:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f0fd"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-plus-square:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f0fe"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-angle-double-left:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f100"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-angle-double-right:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f101"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-angle-double-up:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f102"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-angle-double-down:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f103"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-angle-left:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f104"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-angle-right:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f105"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-angle-up:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f106"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-angle-down:before, .nav_accordion dt h4 span:before,
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .nav_accordion dd h4 span:before, .nav_accordion dt span:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f107"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-desktop:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f108"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-laptop:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f109"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-tablet:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f10a"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-mobile-phone:before, .fa-mobile:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f10b"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-circle-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f10c"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-quote-left:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f10d"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-quote-right:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f10e"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-spinner:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f110"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-circle:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f111"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-mail-reply:before, .fa-reply:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f112"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-github-alt:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f113"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-folder-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f114"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-folder-open-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f115"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-smile-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f118"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-frown-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f119"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-meh-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f11a"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-gamepad:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f11b"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-keyboard-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f11c"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-flag-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f11d"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-flag-checkered:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f11e"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-terminal:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f120"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-code:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f121"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-mail-reply-all:before, .fa-reply-all:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f122"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-star-half-empty:before, .fa-star-half-full:before, .fa-star-half-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f123"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-location-arrow:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f124"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-crop:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f125"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-code-fork:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f126"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-unlink:before, .fa-chain-broken:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f127"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-question:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f128"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-info:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f129"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-exclamation:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f12a"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-superscript:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f12b"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-subscript:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f12c"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-eraser:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f12d"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-puzzle-piece:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f12e"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-microphone:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f130"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-microphone-slash:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f131"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-shield:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f132"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-calendar-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f133"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-fire-extinguisher:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f134"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-rocket:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f135"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-maxcdn:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f136"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-chevron-circle-left:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f137"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-chevron-circle-right:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f138"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-chevron-circle-up:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f139"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-chevron-circle-down:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f13a"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-html5:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f13b"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-css3:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f13c"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-anchor:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f13d"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-unlock-alt:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f13e"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-bullseye:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f140"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-ellipsis-h:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f141"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-ellipsis-v:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f142"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-rss-square:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f143"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-play-circle:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f144"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-ticket:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f145"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-minus-square:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f146"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-minus-square-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f147"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-level-up:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f148"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-level-down:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f149"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-check-square:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f14a"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-pencil-square:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f14b"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-external-link-square:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f14c"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-share-square:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f14d"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-compass:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f14e"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-toggle-down:before, .fa-caret-square-o-down:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f150"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-toggle-up:before, .fa-caret-square-o-up:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f151"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-toggle-right:before, .fa-caret-square-o-right:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f152"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-euro:before, .fa-eur:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f153"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-gbp:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f154"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-dollar:before, .fa-usd:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f155"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-rupee:before, .fa-inr:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f156"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-cny:before, .fa-rmb:before, .fa-yen:before, .fa-jpy:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f157"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-ruble:before, .fa-rouble:before, .fa-rub:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f158"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-won:before, .fa-krw:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f159"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-bitcoin:before, .fa-btc:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f15a"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-file:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f15b"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-file-text:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f15c"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-sort-alpha-asc:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f15d"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-sort-alpha-desc:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f15e"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-sort-amount-asc:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f160"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-sort-amount-desc:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f161"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-sort-numeric-asc:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f162"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-sort-numeric-desc:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f163"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-thumbs-up:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f164"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-thumbs-down:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f165"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-youtube-square:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f166"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-youtube:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f167"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-xing:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f168"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-xing-square:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f169"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-youtube-play:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f16a"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-dropbox:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f16b"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-stack-overflow:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f16c"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-instagram:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f16d"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-flickr:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f16e"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-adn:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f170"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-bitbucket:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f171"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-bitbucket-square:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f172"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-tumblr:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f173"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-tumblr-square:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f174"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-long-arrow-down:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f175"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-long-arrow-up:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f176"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-long-arrow-left:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f177"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-long-arrow-right:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f178"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-apple:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f179"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-windows:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f17a"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-android:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f17b"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-linux:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f17c"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-dribbble:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f17d"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-skype:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f17e"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-foursquare:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f180"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-trello:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f181"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-female:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f182"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-male:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f183"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-gittip:before, .fa-gratipay:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f184"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-sun-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f185"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-moon-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f186"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-archive:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f187"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-bug:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f188"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-vk:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f189"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-weibo:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f18a"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-renren:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f18b"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-pagelines:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f18c"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-stack-exchange:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f18d"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-arrow-circle-o-right:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f18e"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-arrow-circle-o-left:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f190"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-toggle-left:before, .fa-caret-square-o-left:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f191"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-dot-circle-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f192"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-wheelchair:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f193"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-vimeo-square:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f194"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-turkish-lira:before, .fa-try:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f195"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-plus-square-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f196"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-space-shuttle:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f197"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-slack:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f198"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-envelope-square:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f199"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-wordpress:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f19a"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-openid:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f19b"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-institution:before, .fa-bank:before, .fa-university:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f19c"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-mortar-board:before, .fa-graduation-cap:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f19d"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-yahoo:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f19e"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-google:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f1a0"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-reddit:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f1a1"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-reddit-square:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f1a2"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-stumbleupon-circle:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f1a3"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-stumbleupon:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f1a4"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-delicious:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f1a5"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-digg:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f1a6"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-pied-piper:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f1a7"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-pied-piper-alt:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f1a8"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-drupal:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f1a9"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-joomla:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f1aa"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-language:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f1ab"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-fax:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f1ac"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-building:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f1ad"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-child:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f1ae"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-paw:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f1b0"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-spoon:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f1b1"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-cube:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f1b2"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-cubes:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f1b3"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-behance:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f1b4"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-behance-square:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f1b5"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-steam:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f1b6"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-steam-square:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f1b7"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-recycle:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f1b8"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-automobile:before, .fa-car:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f1b9"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-cab:before, .fa-taxi:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f1ba"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-tree:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f1bb"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-spotify:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f1bc"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-deviantart:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f1bd"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-soundcloud:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f1be"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-database:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f1c0"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-file-pdf-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f1c1"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-file-word-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f1c2"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-file-excel-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f1c3"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-file-powerpoint-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f1c4"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-file-photo-o:before, .fa-file-picture-o:before, .fa-file-image-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f1c5"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-file-zip-o:before, .fa-file-archive-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f1c6"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-file-sound-o:before, .fa-file-audio-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f1c7"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-file-movie-o:before, .fa-file-video-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f1c8"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-file-code-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f1c9"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-vine:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f1ca"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-codepen:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f1cb"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-jsfiddle:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f1cc"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-life-bouy:before, .fa-life-buoy:before, .fa-life-saver:before,
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-support:before, .fa-life-ring:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f1cd"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-circle-o-notch:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f1ce"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-ra:before, .fa-rebel:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f1d0"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-ge:before, .fa-empire:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f1d1"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-git-square:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f1d2"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-git:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f1d3"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-hacker-news:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f1d4"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-tencent-weibo:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f1d5"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-qq:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f1d6"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-wechat:before, .fa-weixin:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f1d7"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-send:before, .fa-paper-plane:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f1d8"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-send-o:before, .fa-paper-plane-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f1d9"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-history:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f1da"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-genderless:before, .fa-circle-thin:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f1db"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-header:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f1dc"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-paragraph:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f1dd"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-sliders:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f1de"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-share-alt:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f1e0"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-share-alt-square:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f1e1"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-bomb:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f1e2"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-soccer-ball-o:before, .fa-futbol-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f1e3"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-tty:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f1e4"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-binoculars:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f1e5"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-plug:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f1e6"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-slideshare:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f1e7"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-twitch:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f1e8"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-yelp:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f1e9"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-newspaper-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f1ea"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-wifi:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f1eb"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-calculator:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f1ec"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-paypal:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f1ed"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-google-wallet:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f1ee"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-cc-visa:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f1f0"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-cc-mastercard:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f1f1"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-cc-discover:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f1f2"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-cc-amex:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f1f3"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-cc-paypal:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f1f4"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-cc-stripe:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f1f5"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-bell-slash:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f1f6"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-bell-slash-o:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f1f7"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-trash:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f1f8"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-copyright:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f1f9"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-at:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f1fa"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-eyedropper:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f1fb"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-paint-brush:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f1fc"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-birthday-cake:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f1fd"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-area-chart:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f1fe"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-pie-chart:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f200"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-line-chart:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f201"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-lastfm:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f202"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-lastfm-square:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f203"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-toggle-off:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f204"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-toggle-on:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f205"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-bicycle:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f206"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-bus:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f207"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-ioxhost:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f208"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-angellist:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f209"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-cc:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f20a"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-shekel:before, .fa-sheqel:before, .fa-ils:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f20b"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-meanpath:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f20c"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-buysellads:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f20d"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-connectdevelop:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f20e"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-dashcube:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f210"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-forumbee:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f211"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-leanpub:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f212"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-sellsy:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f213"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-shirtsinbulk:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f214"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-simplybuilt:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f215"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-skyatlas:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f216"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-cart-plus:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f217"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-cart-arrow-down:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f218"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-diamond:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f219"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-ship:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f21a"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-user-secret:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f21b"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-motorcycle:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f21c"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-street-view:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f21d"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-heartbeat:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f21e"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-venus:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f221"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-mars:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f222"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-mercury:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f223"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-transgender:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f224"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-transgender-alt:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f225"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-venus-double:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f226"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-mars-double:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f227"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-venus-mars:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f228"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-mars-stroke:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f229"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-mars-stroke-v:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f22a"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-mars-stroke-h:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f22b"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-neuter:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f22c"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-facebook-official:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f230"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-pinterest-p:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f231"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-whatsapp:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f232"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .fa-server:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content: "\f233"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .fa-user-plus:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content: "\f234"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .fa-user-times:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content: "\f235"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .fa-hotel:before, .fa-bed:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      content: "\f236"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .fa-viacoin:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content: "\f237"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .fa-train:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          content: "\f238"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .fa-subway:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content: "\f239"; }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .fa-medium:before {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              content: "\f23a"; }
+#splash .login {
+  position: absolute;
+  top: 80px;
+  left: 50%;
+  margin: 0 0 0 -195px;
+  padding-top: 79px;
+  width: 390px;
+  border: 1px solid #e1e1e1;
+  max-height: none;
+  border-radius: 0px;
+  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  background-clip: padding-box; }
+  #splash .login p#help_text {
+    display: none;
+    padding: 1em 0.5em;
+    margin: 0; }
+#splash p.help-block {
+  display: none; }
+#browser_wrapper {
+  width: 100%;
+  min-width: 1000px;
+  border: 1px solid #d5dfe6; }
+  #browser_wrapper .tfoot {
+    clear: both;
+    padding: 8px;
+    border-top: 1px solid #eeeeee;
+    background-color: #f2f4f7;
+    font-size: 11px;
+    line-height: 14px; }
+    #browser_wrapper .tfoot span {
+      display: inline-block; }
+      #browser_wrapper .tfoot span.navigation_table_count {
+        width: 40%; }
+  #browser_wrapper form, #browser_wrapper table {
+    margin-bottom: 0; }
+    #browser_wrapper .navigation_wrapper, #browser_wrapper .content_wrapper {
+      position: relative;
+      float: left; }
+      #browser_wrapper div.navigation_wrapper {
+        z-index: 10;
+        width: 40%; }
+        #browser_wrapper div.navigation_wrapper div.table_wrapper,
+        #browser_wrapper div.navigation_wrapper thead th.table_header {
+          border-right: 0 none;
+          border-top-right-radius: 0; }
+          #browser_wrapper div.navigation_wrapper td {
+            border-bottom: 1px solid #d5dfe6; }
+            #browser_wrapper div.navigation_wrapper td:first-child {
+              border-left: 0 none; }
+              #browser_wrapper div.navigation_wrapper td.breadcrumb_td {
+                padding-right: 0;
+                max-width: 200px; }
+        #browser_wrapper div.navigation_wrapper tr.current_selected td {
+          background-color: #e9f5fa; }
+          #browser_wrapper div.navigation_wrapper tfoot td {
+            border-right: 0 none;
+            border-bottom-right-radius: 0; }
+            #browser_wrapper div.navigation_wrapper ul.breadcrumb {
+              padding-right: 0;
+              border-top-right-radius: 0;
+              border-bottom-right-radius: 0;
+              border-right: 0;
+              white-space: nowrap; }
+              #browser_wrapper div.navigation_wrapper tbody td {
+                border-right: 1px solid #dddddd;
+                background-color: #fff; }
+                #browser_wrapper div.navigation_wrapper tbody td.anchor {
+                  word-wrap: break-word;
+                  white-space: normal;
+                  max-width: 145px; }
+  #browser_wrapper div.content_wrapper {
+    width: 60%; }
+    #browser_wrapper div.content_wrapper div.table_wrapper,
+    #browser_wrapper div.content_wrapper thead th.table_header {
+      border-left: 0 none;
+      border-top-left-radius: 0; }
+      #browser_wrapper div.content_wrapper td {
+        border-bottom: 1px solid #dddddd; }
+        #browser_wrapper div.content_wrapper td:last-child {
+          border-right: 0 none; }
+          #browser_wrapper div.content_wrapper td.breadcrumb_td {
+            padding-left: 0; }
+    #browser_wrapper div.content_wrapper tfoot td {
+      border-left: 0 none;
+      border-bottom-left-radius: 0; }
+      #browser_wrapper div.content_wrapper ul.breadcrumb {
+        padding-left: 0;
+        border-top-left-radius: 0;
+        border-bottom-left-radius: 0;
+        border-left: 0; }
+        #browser_wrapper div.content_wrapper ul.breadcrumb li {
+          visibility: hidden; }
+  #browser_wrapper table {
+    border-collapse: collapse; }
+    #browser_wrapper table thead tr th {
+      background: #f2f4f7; }
+    #browser_wrapper table tbody tr:last-child td {
+      border-radius: 0; }
+      #browser_wrapper table tbody tr.empty td {
+        height: 28px;
+        padding: 10px; }
+    #browser_wrapper table tbody td.actions_column {
+      position: static; }
+  #browser_wrapper .breadcrumb {
+    padding: 6px;
+    margin: 0 0 1px; }
+.topbar {
+  height: 79px;
+  background: url('/horizon/static/dashboard/img/Openstack_banner.png?35927ebeff67') repeat; }
+  .topbar h1.brand {
+    display: inline-block;
+    width: 311px;
+    margin: 17px 12px 0px 20px;
+    background: url('/horizon/static/dashboard/img/OracleSolaris_Logo.png?861f9a19626d') top left no-repeat;
+    line-height: 1; }
+    .topbar h1.brand a {
+      background: url('/horizon/static/dashboard/img/logo.png?b7770eaa949e') left center no-repeat;
+      display: block;
+      text-indent: -9999px; }
+  .topbar .switcher_bar {
+    display: inline-block;
+    vertical-align: top;
+    font-size: 0px;
+    float: right;
+    margin-top: 23px;
+    margin-right: 14px; }
+    .topbar .switcher_bar .btn.btn-topnav {
+      padding: 0px 6px 0px 8px;
+      font-size: 12px;
+      border-radius: 2px;
+      line-height: 28px;
+      background: #f5f5f5;
+      border: none;
+      color: #000; }
+      .topbar .switcher_bar .btn.btn-topnav:hover,
+      .topbar .switcher_bar .btn.btn-topnav:active {
+        background: #0572ce;
+        color: #ffffff;
+        -webkit-box-shadow: none;
+        box-shadow: none; }
+    .topbar .switcher_bar .dropdown-menu.topbar-dropdown-menu {
+      border-radius: 0; }
+      .topbar .switcher_bar .dropdown-menu.topbar-dropdown-menu:before,
+      .topbar .switcher_bar .dropdown-menu.topbar-dropdown-menu:after {
+        position: absolute;
+        display: inline-block;
+        content: ''; }
+        .topbar .switcher_bar .dropdown-menu.topbar-dropdown-menu:before {
+          top: -7px;
+          right: 9px;
+          border-right: 7px solid transparent;
+          border-bottom: 7px solid #c4ced7;
+          border-left: 7px solid transparent;
+          border-bottom-color: rgba(0, 0, 0, 0.2); }
+          .topbar .switcher_bar .dropdown-menu.topbar-dropdown-menu:after {
+            top: -6px;
+            right: 10px;
+            border-right: 6px solid transparent;
+            border-bottom: 6px solid #ffffff;
+            border-left: 6px solid transparent; }
+            .topbar .switcher_bar .dropdown-menu.topbar-dropdown-menu.pull-right:before {
+              left: auto;
+              right: 9px; }
+              .topbar .switcher_bar .dropdown-menu.topbar-dropdown-menu.pull-right:after {
+                left: auto;
+                right: 10px; }
+    .topbar .switcher_bar .context-selection .dropdown-menu {
+      padding: 0; }
+      .topbar .switcher_bar .context-selection .context-lists {
+        display: table;
+        width: 100%; }
+        .topbar .switcher_bar .context-selection .context-lists ul {
+          display: table-cell;
+          padding: 0px; }
+          .topbar .switcher_bar .context-selection .context-lists ul:not(:last-child) {
+            border-right: 1px solid #c4ced7; }
+    .topbar .switcher_bar .context-selection .footer {
+      padding: 0px 20px;
+      background: #fff;
+      text-align: left;
+      height: 30px;
+      line-height: 30px;
+      margin: 3px 0px; }
+      .topbar .switcher_bar .context-selection .footer:hover {
+        background: #ebeced;
+        text-decoration: none; }
+        .topbar .switcher_bar .context-selection .footer a {
+          color: #000; }
+          .topbar .switcher_bar .context-selection .footer a:hover {
+            text-decoration: none; }
+    .topbar .switcher_bar .context-selection .disabled {
+      cursor: not-allowed;
+      color: #cccccc; }
+action-list.btn-group .dropdown-menu > li > a.text-danger,
+action-list.btn-group .topbar .switcher_bar .context-selection .context-lists ul li > a.text-danger,
+.topbar .switcher_bar .context-selection .context-lists ul li action-list.btn-group > a.text-danger {
+  color: #C71C22; }
+
+action-list.btn-group[button-tooltip] {
+  cursor: pointer; }
+  action-list.btn-group .dropdown-menu > li.disabled {
+    opacity: 0.65; }
+action-list.btn-group notifications {
+  bottom: -0.5em;
+  font-size: 1.1em;
+  opacity: 1;
+  position: absolute;
+  right: -0.35em;
+  z-index: 3; }
+  action-list.btn-group notifications + .btn:last-child:not(:first-child):not(.dropdown-toggle),
+  action-list.btn-group notifications + .btn:not(:last-child):not(:first-child):not(.dropdown-toggle),
+  action-list.btn-group notifications + .btn.single-button:not(:first-child),
+  action-list.btn-group notifications + .btn.split-button:not(:first-child):not(:last-child) {
+    border-top-left-radius: 4px;
+    border-bottom-left-radius: 4px; }
+action-list.btn-group.btn-group-sm notifications + .btn:last-child:not(:first-child):not(.dropdown-toggle),
+action-list.btn-group.btn-group-sm notifications + .btn:not(:last-child):not(:first-child):not(.dropdown-toggle),
+action-list.btn-group.btn-group-sm notifications + .btn.single-button:not(:first-child),
+action-list.btn-group.btn-group-sm notifications + .btn.split-button:not(:first-child):not(:last-child) {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px; }
+action-list.btn-group.btn-group-lg notifications + .btn:last-child:not(:first-child):not(.dropdown-toggle),
+action-list.btn-group.btn-group-lg notifications + .btn:not(:last-child):not(:first-child):not(.dropdown-toggle),
+action-list.btn-group.btn-group-lg notifications + .btn.single-button:not(:first-child),
+action-list.btn-group.btn-group-lg notifications + .btn.split-button:not(:first-child):not(:last-child) {
+  border-top-left-radius: 6px;
+  border-bottom-left-radius: 6px; }
+action-list.btn-group .invalid {
+  color: #f0ad4e; }
+  action-list.btn-group + .popover a {
+    cursor: pointer; }
+.nav_accordion {
+  color: #252525;
+  margin: 72px 0px 0px 0px; }
+  .nav_accordion dt, .nav_accordion dd {
+    line-height: 39px; }
+    .nav_accordion dt > span:before, .nav_accordion dd > span:before {
+      line-height: 39px !important; }
+      .nav_accordion dt h4, .nav_accordion dd h4 {
+        font-size: 13px;
+        line-height: 39px;
+        color: #252525;
+        font-weight: bold;
+        text-rendering: optimizelegibility;
+        cursor: pointer;
+        transition: all 0.3s ease 0s; }
+        .nav_accordion dt h4 > span, .nav_accordion dd h4 > span {
+          transition: all 0.3s ease 0s; }
+          .nav_accordion dt h4 > span:before, .nav_accordion dd h4 > span:before {
+            font-size: 1em;
+            line-height: 18px;
+            vertical-align: middle; }
+        .nav_accordion dt h4.active > span, .nav_accordion dd h4.active > span {
+          -ms-transform: rotate(180deg);
+          -webkit-transform: rotate(180deg);
+          transform: rotate(180deg); }
+          .nav_accordion dt h4 > span:before, .nav_accordion dd h4 > span:before {
+            line-height: 39px; }
+            .nav_accordion dt h4:hover, .nav_accordion dd h4:hover {
+              background: #dbdcdf; }
+    .nav_accordion dt ul, .nav_accordion dd ul {
+      list-style: none outside none;
+      margin: 0;
+      padding: 0; }
+      .nav_accordion dt li:first-child a.line-heightactive,
+      .nav_accordion dt li:first-child a.active,
+      .nav_accordion dd li:first-child a.line-heightactive,
+      .nav_accordion dd li:first-child a.active {
+        border-top: 1px solid #fff; }
+        .nav_accordion dt li:last-child, .nav_accordion dd li:last-child {
+          border-bottom: 1px solid #c4ced8; }
+          .nav_accordion dt li:last-child a.active, .nav_accordion dd li:last-child a.active {
+            border-bottom: 1px solid #fff; }
+            .nav_accordion dt li a, .nav_accordion dd li a {
+              color: #145c9e;
+              padding: 0px 0px 0px 44px;
+              outline: none;
+              font-size: 13px;
+              text-decoration: none;
+              line-height: 39px;
+              width: 236px;
+              display: block;
+              text-align: left;
+              transition: all 0.3s ease 0s; }
+              .nav_accordion dt li a:hover, .nav_accordion dd li a:hover {
+                background: #dbdcdf;
+                background-color: #dbdcdf;
+                width: 235px;
+                border-right: 1px solid #c4ced8; }
+                .nav_accordion dt li a.active, .nav_accordion dd li a.active {
+                  color: #2a6496;
+                  width: 235px;
+                  background: #fff;
+                  border: 1px solid #fff;
+                  border-top: 1px solid #c4ced8;
+                  border-bottom: 1px solid #c4ced8;
+                  font-weight: 600; }
+  .nav_accordion dd {
+    padding: 0; }
+  .nav_accordion dt {
+    border-bottom: 1px solid #c4ced8;
+    padding: 0px 13px;
+    max-width: 235px;
+    height: 39px;
+    line-height: 39px;
+    cursor: pointer;
+    transition: all 0.3s ease 0s; }
+    .nav_accordion dt > span {
+      transition: all 0.3s ease 0s; }
+      .nav_accordion dt > span:before {
+        font-size: 1em;
+        line-height: 18px;
+        vertical-align: middle; }
+    .nav_accordion dt.active > span {
+      -ms-transform: rotate(180deg);
+      -webkit-transform: rotate(180deg);
+      transform: rotate(180deg); }
+      .nav_accordion dt:hover {
+        background-color: #dbdcdf; }
+.chart {
+  height: inherit;
+  width: inherit;
+  min-height: inherit;
+  min-width: inherit; }
+  .chart .tooltip_detail {
+    position: absolute;
+    z-index: 2;
+    border-radius: 3px;
+    padding: 0.25em;
+    font-size: 12px;
+    font-family: Arial, sans-serif;
+    color: white;
+    border: 1px solid rgba(0, 0, 0, 0.4);
+    margin-left: 1em;
+    margin-top: -1em;
+    white-space: nowrap;
+    background: #fff; }
+    .chart .tooltip_detail:before {
+      content: "\25c2";
+      position: absolute;
+      left: -0.5em;
+      color: rgba(0, 0, 0, 0.7);
+      width: 0;
+      top: 12px; }
+
+.overview_chart {
+  width: 214px;
+  height: 81px; }
+  .overview_chart .chart_container {
+    width: 140px;
+    min-width: 140px; }
+    .overview_chart .chart_container .chart svg {
+      padding-right: 4px !important; }
+      .overview_chart .chart_container .chart .detail .dot.active {
+        box-sizing: content-box; }
+  .overview_chart .bar_chart_container {
+    position: relative;
+    width: 74px;
+    min-width: 74px; }
+    .overview_chart .bar_chart_container, .overview_chart .chart_container {
+      float: left;
+      min-height: 81px;
+      height: 81px; }
+      .overview_chart .bar_chart_container .chart,
+      .overview_chart .chart_container .chart {
+        height: inherit;
+        width: inherit;
+        min-height: inherit;
+        min-width: inherit; }
+        .overview_chart .bar_chart_container .chart .modal-backdrop,
+        .overview_chart .chart_container .chart .modal-backdrop {
+          min-height: inherit;
+          min-width: inherit; }
+  .overview_chart .tooltip_detail {
+    position: absolute;
+    z-index: 2;
+    border-radius: 3px;
+    padding: 0.25em;
+    font-size: 12px;
+    font-family: Arial, sans-serif;
+    color: white;
+    border: 1px solid rgba(0, 0, 0, 0.4);
+    margin-left: 1em;
+    margin-top: -1em;
+    white-space: nowrap;
+    background: rgba(0, 0, 0, 0.8); }
+    .overview_chart .tooltip_detail:before {
+      content: "\25c2";
+      position: absolute;
+      left: -0.5em;
+      color: rgba(0, 0, 0, 0.7);
+      width: 0;
+      top: 12px; }
+
+.chart_container {
+  position: relative;
+  min-height: 300px;
+  min-width: 400px; }
+  .chart_container .chart {
+    position: relative;
+    min-height: 300px;
+    min-width: 400px; }
+    .chart_container .chart .detail .x_label {
+      display: none; }
+      .chart_container .chart .detail .item {
+        line-height: 1.4;
+        padding: 0.5em; }
+        .chart_container .chart .detail .date {
+          color: #a0a0a0; }
+    .chart_container .chart .modal-backdrop {
+      position: absolute;
+      opacity: 0.5;
+      top: 0;
+      left: 0;
+      min-height: 300px;
+      min-width: 400px; }
+      .chart_container .chart svg {
+        padding: 0 0 5px 0; }
+  .chart_container .detail_swatch {
+    float: right;
+    display: inline-block;
+    width: 10px;
+    height: 10px;
+    margin: 0 4px 0 0; }
+
+.legend_container {
+  min-width: 90px;
+  margin-left: 20px; }
+  .legend_container .swatch {
+    float: right;
+    display: inline-block;
+    width: 10px;
+    height: 10px;
+    margin: 0 4px 0 0; }
+    .legend_container .modal-backdrop {
+      position: absolute;
+      opacity: 0.5;
+      top: 0;
+      left: 0;
+      min-width: 90px; }
+      .legend_container .rickshaw_legend.disabled {
+        padding: 0; }
+
+.spinner_wrapper {
+  position: absolute;
+  top: 40%;
+  left: 40%; }
+
+  .rickshaw_legend {
+    background: white;
+    color: #404040; }
+    .rickshaw_legend .action {
+      text-decoration: none;
+      color: black; }
+.workflow .tab-content {
+  border: 1px solid #d5dfe6;
+  border-top: none;
+  padding: 20px; }
+  .workflow td {
+    vertical-align: top; }
+    .workflow fieldset > table {
+      margin-bottom: 0; }
+      .workflow.wizard .row .btn {
+        float: none;
+        margin: 0; }
+        .workflow.wizard .row .next {
+          text-align: right; }
+      .workflow.wizard .nav-tabs.wizard-tabs {
+        border-bottom: 0;
+        background: #efefef;
+        padding: 0; }
+        .workflow.wizard .nav-tabs.wizard-tabs li {
+          margin-bottom: 0;
+          position: relative; }
+          .workflow.wizard .nav-tabs.wizard-tabs li:before {
+            position: absolute;
+            top: -4px;
+            right: -20px;
+            z-index: 2;
+            display: block;
+            border: 20px inset transparent;
+            border-right: 0;
+            border-left: 20px solid #dddddd;
+            content: ''; }
+            .workflow.wizard .nav-tabs.wizard-tabs li:after {
+              position: absolute;
+              top: -6px;
+              right: -22px;
+              z-index: 1;
+              display: block;
+              border: 22px inset transparent;
+              border-right: 0;
+              border-left: 22px solid #ffffff;
+              content: ''; }
+              .workflow.wizard .nav-tabs.wizard-tabs li.active:before,
+              .workflow.wizard .nav-tabs.wizard-tabs li.done:before {
+                border-left: 20px solid #007acc; }
+                .workflow.wizard .nav-tabs.wizard-tabs li a {
+                  border: 0;
+                  border-radius: 0;
+                  background: #dddddd;
+                  color: #222;
+                  padding: 0 15px;
+                  padding-left: 35px;
+                  line-height: 33px;
+                  position: relative;
+                  margin: 0; }
+                  .workflow.wizard .nav-tabs.wizard-tabs li:first-child a {
+                    padding-left: 15px; }
+                    .workflow.wizard .nav-tabs.wizard-tabs li.active a {
+                      background: #007acc;
+                      color: #ffffff; }
+                      .workflow.wizard .nav-tabs.wizard-tabs li.done a {
+                        background: #007acc; }
+      .workflow.wizard label.error {
+        color: #C71C22; }
+#topologyCanvasContainer {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  width: 100%;
+  height: auto;
+  padding: 25px;
+  padding-left: 50px;
+  background: #efefef;
+  min-height: 400px; }
+  #topologyCanvasContainer div.nodata {
+    font-size: 150%;
+    text-align: center;
+    padding-top: 150px;
+    display: none; }
+    #topologyCanvasContainer.noinfo div.nodata {
+      display: block; }
+      #topologyCanvasContainer.noinfo #topology_canvas {
+        display: none; }
+
+.topologyNavi {
+  overflow: hidden;
+  margin: 10px 0; }
+  .topologyNavi .toggleView {
+    float: left; }
+    .topologyNavi .toggleView span.glyphicon {
+      margin-right: 4px; }
+  .topologyNavi .launchButtons {
+    float: right;
+    text-align: right; }
+    .topologyNavi .launchButtons a.btn {
+      margin-left: 5px; }
+
+.topologyBalloon {
+  display: none;
+  background: #fff;
+  -webkit-box-shadow: 0px 1px 6px #777;
+  box-shadow: 0px 1px 6px #777;
+  position: absolute;
+  left: 100px;
+  top: 20px;
+  z-index: 600;
+  border-radius: 5px;
+  color: #333;
+  min-width: 200px;
+  line-height: 1.2;
+  font-size: 11px; }
+  .topologyBalloon.on {
+    display: block; }
+    .topologyBalloon .vnc_window {
+      margin-left: 10px; }
+      .topologyBalloon .closeTopologyBalloon {
+        font-size: 16px;
+        line-height: 1;
+        display: block;
+        position: absolute;
+        font-weight: bold;
+        right: 6px;
+        top: 0px;
+        cursor: pointer;
+        padding: 3px;
+        color: #aaa; }
+        .topologyBalloon .closeTopologyBalloon:hover {
+          color: #777;
+          text-decoration: none; }
+  .topologyBalloon .contentBody {
+    padding: 8px 8px 0; }
+    .topologyBalloon span.active:before, .topologyBalloon span.down:before {
+      content: "";
+      width: 9px;
+      height: 9px;
+      display: inline-block;
+      background: #dde7ee;
+      margin-right: 3px;
+      border-radius: 10px;
+      vertical-align: middle; }
+  .topologyBalloon span.down:before {
+    background: #C71C22; }
+  .topologyBalloon .footer {
+    background: #efefef;
+    border-top: 1px solid #dddddd;
+    padding: 8px;
+    border-radius: 0px 0px 7px 7px; }
+    .topologyBalloon .footer .footerInner {
+      display: table;
+      width: 100%; }
+      .topologyBalloon .footer .cell {
+        display: table-cell;
+        padding-right: 10px; }
+        .topologyBalloon .footer .link {
+          font-size: 12px; }
+          .topologyBalloon .footer .delete {
+            padding-right: 0;
+            text-align: right; }
+  .topologyBalloon .portTableHeader {
+    border-top: 1px solid #eee;
+    padding-top: 5px;
+    margin: 5px 0;
+    display: table;
+    width: 100%; }
+    .topologyBalloon .portTableHeader .title {
+      display: table-cell;
+      font-size: 13px;
+      font-weight: bold; }
+      .topologyBalloon .portTableHeader .action {
+        display: table-cell;
+        text-align: right; }
+  .topologyBalloon table.detailInfoTable {
+    margin-bottom: 5px; }
+    .topologyBalloon table.detailInfoTable caption {
+      text-align: left;
+      font-size: 13px;
+      font-weight: bold;
+      margin-bottom: 0px; }
+      .topologyBalloon table.detailInfoTable th,
+      .topologyBalloon table.detailInfoTable td {
+        text-align: left;
+        vertical-align: middle;
+        padding-bottom: 3px;
+        background: transparent; }
+        .topologyBalloon table.detailInfoTable th {
+          color: #cccccc;
+          padding-right: 8px;
+          width: 80px; }
+          .topologyBalloon table.detailInfoTable th span {
+            vertical-align: middle;
+            width: 80px;
+            white-space: nowrap;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            display: inline-block; }
+            .topologyBalloon table.detailInfoTable th.device {
+              text-align: right; }
+    .topologyBalloon table.detailInfoTable td {
+      padding-right: 5px;
+      white-space: nowrap; }
+      .topologyBalloon table.detailInfoTable td.delete {
+        padding-right: 0;
+        text-align: right; }
+        .topologyBalloon table.detailInfoTable .btn {
+          line-height: 1.4; }
+  .topologyBalloon:before {
+    border-top: 7px solid transparent;
+    border-bottom: 7px solid transparent;
+    border-right: 9px solid #dddddd;
+    display: block;
+    position: absolute;
+    top: 30px;
+    left: -9px;
+    width: 0;
+    height: 0;
+    content: ""; }
+    .topologyBalloon:after {
+      border-top: 6px solid transparent;
+      border-bottom: 6px solid transparent;
+      border-right: 8px solid #fff;
+      display: block;
+      position: absolute;
+      top: 31px;
+      left: -8px;
+      width: 0;
+      height: 0;
+      content: ""; }
+      .topologyBalloon.leftPosition:before {
+        border-right: none;
+        border-left: 9px solid #dddddd;
+        right: -9px;
+        top: 30px;
+        left: auto; }
+        .topologyBalloon.leftPosition:after {
+          border-right: none;
+          border-left: 8px solid #fff;
+          right: -8px;
+          top: 31px;
+          left: auto; }
+
+#topologyMessages {
+  width: 1px;
+  height: 1px;
+  visibility: hidden;
+  position: absolute;
+  top: -100px; }
+
+  .quota-heading {
+    font-weight: normal;
+    font-size: 24px;
+    margin-bottom: 10px; }
+.help-panel {
+  position: absolute;
+  width: 300px;
+  right: -300px;
+  top: 0;
+  bottom: 0;
+  color: #333;
+  background: #fff;
+  -webkit-transition: right linear 0.1s;
+  transition: right linear 0.1s;
+  z-index: 10; }
+  .help-panel .content {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    padding: 10px 20px;
+    overflow-y: auto; }
+    .help-panel .content h1 {
+      font-size: 20px;
+      line-height: 1.8;
+      margin: 0; }
+      .help-panel .content li {
+        list-style-position: inside; }
+        .help-panel .content p {
+          line-height: 1.4;
+          margin: 1em 0; }
+  .help-panel.open {
+    right: 0;
+    border: 1px solid #888;
+    border-right: none;
+    margin-top: -1px;
+    margin-bottom: -1px; }
+    .help-panel.open > button.open {
+      display: none; }
+      .help-panel.open > button.close {
+        display: block;
+        opacity: 1;
+        font-size: 14px; }
+  .help-panel > button {
+    position: absolute;
+    top: 0;
+    left: -40px;
+    width: 40px;
+    height: 40px;
+    line-height: 40px;
+    padding: 0;
+    border: none;
+    text-align: center;
+    vertical-align: middle;
+    background: #eee;
+    border: 1px solid #888;
+    border-right: none;
+    margin-top: -1px; }
+    .help-panel > button > * {
+      display: inline-block;
+      vertical-align: middle;
+      background: transparent;
+      color: #333;
+      font-size: 28px; }
+      .help-panel > button.close {
+        display: none; }
+.ng-wizard {
+  display: block;
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  overflow: hidden;
+  font-weight: normal; }
+  .ng-wizard .title {
+    height: 70px;
+    line-height: 64px;
+    vertical-align: bottom;
+    padding: 6px 35px 0 35px;
+    color: #555;
+    border-bottom: 1px solid #ddd;
+    font-size: 22px;
+    font-weight: normal; }
+    .ng-wizard .fa.invalid {
+      color: #f0ad4e;
+      cursor: pointer; }
+      .ng-wizard > .nav {
+        display: inline-block;
+        top: 40px;
+        left: 0px;
+        bottom: 40px;
+        width: 290px;
+        padding: 10px 10px 10px 35px; }
+        .ng-wizard > .nav .nav-item {
+          position: relative;
+          display: block;
+          height: 46px;
+          width: 190px;
+          text-align: left;
+          padding-left: 10px;
+          background: transparent;
+          border: none;
+          border-bottom: 1px solid #bbb;
+          margin-top: -1px;
+          color: #333;
+          font-size: 12px;
+          border-radius: 0; }
+          .ng-wizard > .nav .nav-item::after {
+            content: " ";
+            position: absolute;
+            top: 0;
+            right: -10px;
+            display: block;
+            height: inherit;
+            width: 0;
+            border-left: none;
+            border-top: 23px solid transparent;
+            border-bottom: 23px solid transparent; }
+            .ng-wizard > .nav .nav-item[disabled] {
+              color: #444;
+              background: transparent; }
+              .ng-wizard > .nav .nav-item.current {
+                width: 190px;
+                background: #0084d1;
+                color: #fff;
+                border-color: #0084d1; }
+                .ng-wizard > .nav .nav-item.current::after {
+                  border-left: #0084d1 10px solid; }
+                  .ng-wizard > .nav .nav-item.current:focus {
+                    outline: none; }
+                    .ng-wizard > .nav .nav-item.current .status-indicator {
+                      color: inherit; }
+          .ng-wizard > .nav .nav-item .status-indicator {
+            position: absolute;
+            right: 0;
+            top: 18px;
+            width: 24px;
+            height: 24px;
+            color: orange; }
+  .ng-wizard .step {
+    position: absolute;
+    top: 70px;
+    left: 290px;
+    right: 0;
+    bottom: 65px;
+    color: #888; }
+    .ng-wizard .step h1 {
+      position: absolute;
+      top: 0;
+      height: 45px;
+      left: 10px;
+      right: 65px;
+      margin: 0;
+      padding-top: 20px; }
+      .ng-wizard .step h2.section-title {
+        margin-bottom: 5px;
+        padding-bottom: 5px; }
+        .ng-wizard .step h1, .ng-wizard .step h2.section-title {
+          font-size: 18px;
+          font-weight: normal;
+          color: #555;
+          border-bottom: 1px solid #ddd; }
+          .ng-wizard .step .content {
+            position: absolute;
+            top: 45px;
+            left: 10px;
+            right: 0;
+            bottom: 0;
+            padding: 5px 65px 24px 0;
+            overflow: auto; }
+            .ng-wizard .step .content .subtitle {
+              margin-bottom: 30px; }
+              .ng-wizard .step .content label {
+                font-weight: normal;
+                color: #555; }
+  .ng-wizard .toolbar {
+    position: absolute;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    height: 65px;
+    line-height: 65px;
+    vertical-align: middle;
+    background: #f5f5f5;
+    border-top: 1px solid #ccc; }
+    .ng-wizard .toolbar .secondary-btn-grp {
+      position: absolute;
+      left: 35px; }
+      .ng-wizard .toolbar .primary-btn-grp {
+        position: absolute;
+        right: 35px; }
+        .ng-wizard .toolbar .secondary-btn-grp button {
+          margin-right: 2px; }
+          .ng-wizard .toolbar .primary-btn-grp button {
+            margin-left: 2px; }
+            .ng-wizard .toolbar .btn-wrap {
+              display: inline-block; }
+              .ng-wizard .toolbar .btn-wrap.finish {
+                padding-left: 15px;
+                margin-left: 20px;
+                border-left: 2px solid #ddd; }
+                .ng-wizard .toolbar .separator {
+                  display: inline-block;
+                  width: 0;
+                  margin-left: 20px;
+                  margin-right: 15px;
+                  border-left: 1px solid #e3e3e3;
+                  height: 65px;
+                  vertical-align: top; }
+                  .ng-wizard .toolbar button {
+                    height: 28px;
+                    line-height: 26px;
+                    vertical-align: baseline;
+                    padding: 0 25px 2px 25px;
+                    font-size: 14px;
+                    color: #333;
+                    border: 1px solid #ccc;
+                    background: #fff; }
+                    .ng-wizard .toolbar button[disabled] {
+                      color: #ccc;
+                      border-color: #ddd;
+                      background: #fff; }
+                      .ng-wizard .toolbar button.next {
+                        color: #fff;
+                        border-color: #0084d1;
+                        background: #0084d1; }
+                        .ng-wizard .toolbar button.next[disabled] {
+                          color: #fff;
+                          border-color: #ccc;
+                          background: #ccc; }
+                    .ng-wizard .toolbar button.finish {
+                      color: #fff;
+                      border-color: #51b848;
+                      background: #51b848; }
+                      .ng-wizard .toolbar button.finish[disabled] {
+                        color: #fff;
+                        border-color: #ccc;
+                        background: #ccc; }
+  .ng-wizard .help-panel {
+    top: 70px;
+    bottom: 65px; }
+    .ng-wizard .error-message {
+      display: none !important; }
+
+.modal-dialog-wizard .modal-dialog {
+  position: relative;
+  margin: 0 auto;
+  height: 100%;
+  width: 100%;
+  max-height: 980px;
+  max-width: 1520px;
+  min-height: 540px;
+  min-width: 1104px;
+  overflow-x: auto; }
+  .modal-dialog-wizard .modal-dialog .modal-content {
+    position: absolute;
+    top: 40px;
+    left: 40px;
+    right: 40px;
+    bottom: 40px;
+    border-radius: 0; }
+    @media (max-width: 1000px) {
+      .modal-dialog-wizard .modal-dialog .modal-content {
+        left: 0;
+        right: 0;   }
+}
+      @media (max-height: 600px) {
+        .modal-dialog-wizard .modal-dialog .modal-content {
+          top: 0;
+          bottom: 0;   }
+}
+
+.checkbox input[type="checkbox"] {
+  margin-top: 3px; }
+
+.form-group .required label:after {
+  content: " *";
+  color: red; }
+
+  .btn-toggle {
+    color: #333;
+    background-color: #fff;
+    border-color: #adadad; }
+    .btn-toggle:hover, .btn-toggle:focus, .btn-toggle:active {
+      background-color: #ebebeb; }
+      .btn-toggle.active {
+        background-color: #0077b3;
+        border-color: #006699;
+        color: #fff !important; }
+        .btn-toggle.disabled.active, .btn-toggle[disabled].active {
+          background-color: rgba(0, 119, 179, 0.65);
+          border-color: rgba(0, 102, 153, 0.65);
+          color: #fff; }
+          .btn-toggle.disabled, .btn-toggle.disabled:hover, .btn-toggle.disabled:focus,
+          .btn-toggle.disabled:active, .btn-toggle[disabled]:hover,
+          .btn-toggle[disabled]:focus, .btn-toggle[disabled]:active,
+          fieldset[disabled] .btn-toggle:hover, fieldset[disabled] .btn-toggle:focus,
+          fieldset[disabled] .btn-toggle:active, fieldset[disabled] .btn-toggle.active {
+            background-color: #fafafa;
+            border-color: #ccc;
+            color: #999; }
+.form-control::-webkit-input-placeholder,
+.datepicker input::-webkit-input-placeholder {
+  font-weight: normal;
+  color: #b8b8b8; }
+  .form-control:-moz-placeholder, .datepicker input:-moz-placeholder {
+    font-weight: normal;
+    color: #b8b8b8; }
+    .form-control::-moz-placeholder, .datepicker input::-moz-placeholder {
+      font-weight: normal;
+      color: #b8b8b8; }
+      .form-control:-ms-input-placeholder, .datepicker input:-ms-input-placeholder {
+        font-weight: normal;
+        color: #b8b8b8; }
+        [hz-table] .search-header .basic-search-bar input[type="text"]::-webkit-input-placeholder {
+          font-weight: normal;
+          color: #b8b8b8; }
+          [hz-table] .search-header .basic-search-bar input[type="text"]:-moz-placeholder {
+            font-weight: normal;
+            color: #b8b8b8; }
+            [hz-table] .search-header .basic-search-bar input[type="text"]::-moz-placeholder {
+              font-weight: normal;
+              color: #b8b8b8; }
+              [hz-table] .search-header .basic-search-bar input[type="text"]:-ms-input-placeholder {
+                font-weight: normal;
+                color: #b8b8b8; }
+[hz-table] td.action-col .popover {
+  min-width: 15em; }
+[hz-table] .detail-row td {
+  display: none; }
+  [hz-table] .detail-row td.detail .detail-expanded {
+    display: none; }
+[hz-table] .expanded + tr td {
+  display: table-cell; }
+  [hz-table] .fa {
+    cursor: pointer; }
+    [hz-table] .invalid {
+      color: #f0ad4e; }
+      [hz-table] .no-rows-help {
+        font-style: italic;
+        font-weight: normal;
+        text-align: center; }
+        [hz-table] .reorder {
+          min-width: 4em;
+          max-width: 4em;
+          width: 4em; }
+          [hz-table] .search-header {
+            padding: 0; }
+            [hz-table] .search-header .btn-addon {
+              display: table-cell;
+              padding-left: 0.3em;
+              vertical-align: top;
+              width: 1%; }
+              [hz-table] .search-header .basic-search-bar {
+                margin-bottom: 0.2em;
+                width: 100%; }
+                [hz-table] .search-header .basic-search-bar .input-group-sm .form-control:not(:first-child):not(:last-child),
+                [hz-table] .search-header .basic-search-bar .input-group-sm .datepicker input:not(:first-child):not(:last-child),
+                .datepicker [hz-table] .search-header .basic-search-bar .input-group-sm input:not(:first-child):not(:last-child) {
+                  border-top-right-radius: 3px;
+                  border-bottom-right-radius: 3px; }
+            [hz-table] .search-header .search-help {
+              color: #999999;
+              font-size: 0.9em;
+              font-style: italic;
+              font-weight: 400;
+              margin: 0.2em 0.3em 0;
+              visibility: hidden; }
+              [hz-table] .search-header .search-help.searching {
+                visibility: visible; }
+
+.table-rsp {
+  border-collapse: separate;
+  border-spacing: 0 0.5em;
+  width: 100%; }
+  .table-rsp thead tr th, .table-rsp tfoot tr td {
+    background: none;
+    border: none;
+    padding: 0.5em; }
+    .table-rsp tbody tr[lr-drag-src] td:not(.expander) {
+      cursor: move; }
+      .table-rsp tbody tr.lr-drop-target-before td {
+        border-top: 2px solid #1f83c6 !important; }
+        .table-rsp tbody tr.lr-drop-target-after td {
+          border-bottom: 2px solid #1f83c6 !important; }
+          .table-rsp tbody tr td {
+            background-color: #ffffff;
+            border-top: 1px solid #dddddd;
+            border-bottom: 1px solid #dddddd;
+            padding: 0.5em;
+            position: relative;
+            white-space: nowrap; }
+            .table-rsp tbody tr td:first-child, .table-rsp tbody tr td.action-col {
+              border-left: 1px solid #dddddd; }
+              .table-rsp tbody tr td:last-child, .table-rsp tbody tr td.select-col {
+                border-right: 1px solid #dddddd; }
+  .table-rsp .select-col {
+    max-width: 2.5em;
+    text-align: center;
+    width: 2.5em; }
+    .table-rsp .action-col {
+      position: relative;
+      text-align: right;
+      vertical-align: top;
+      min-width: 10em;
+      width: 10em; }
+      .table-rsp .numeric {
+        text-align: right; }
+        .table-rsp [st-sort] {
+          cursor: pointer; }
+          .table-rsp [st-sort]:after {
+            color: #d4d4d4;
+            content: '\f0dc';
+            font-family: 'FontAwesome';
+            margin-left: 0.5em;
+            opacity: 0; }
+            .table-rsp [st-sort]:not(.st-sort-ascent):hover:after,
+            .table-rsp [st-sort]:not(.st-sort-descent):hover:after {
+              opacity: 1; }
+  .table-rsp .st-sort-ascent:after {
+    color: #000000;
+    content: '\f0dd';
+    font-family: 'FontAwesome';
+    margin-left: 0.5em;
+    opacity: 1; }
+    .table-rsp .st-sort-descent:after {
+      color: #000000;
+      content: '\f0de';
+      font-family: 'FontAwesome';
+      margin-left: 0.5em;
+      opacity: 1; }
+      .table-rsp.modern {
+        border-spacing: 0; }
+        .table-rsp.modern tbody tr td {
+          border: none;
+          border-top: 1px solid #dddddd; }
+          .table-rsp.modern tbody tr:last-child td {
+            border-bottom: 1px solid #dddddd; }
+  .table-rsp.table-detail {
+    border-spacing: 0; }
+    .table-rsp.table-detail tbody tr td {
+      border-bottom: none; }
+      .table-rsp.table-detail tbody tr:last-child:not(.spacer-row) td {
+        border-bottom: 1px solid #dddddd; }
+        .table-rsp.table-detail tbody tr.expanded td {
+          border-bottom: 1px solid #dddddd; }
+          .table-rsp.table-detail tbody tr.expanded td[rowspan='2'].action-col {
+            border-bottom: none; }
+    .table-rsp.table-detail tbody tr.expanded:nth-last-child(-n+3) [rowspan='2'].action-col {
+      border-bottom: 1px solid #dddddd; }
+      .table-rsp.table-detail tbody tr:nth-last-child(2):not(.expanded) td {
+        border-bottom: 1px solid #dddddd; }
+        .table-rsp.table-detail tbody tr:nth-last-child(3).expanded + .detail-row + tr.spacer-row td {
+          border-top: none; }
+          .table-rsp.table-detail tbody tr + .detail-row + tr.spacer-row td {
+            border-top: 1px solid #dddddd; }
+    .table-rsp.table-detail .detail-row td {
+      padding: 0; }
+      .table-rsp.table-detail .detail-row td.detail .detail-expanded {
+        border-top: none;
+        padding: 1em 0.5em;
+        white-space: normal; }
+    .table-rsp.table-detail .expanded + tr td {
+      border-top: none; }
+      .table-rsp.table-detail .expander {
+        cursor: pointer;
+        max-width: 1.5em;
+        width: 1.5em; }
+        .table-rsp.table-detail .spacer-row td {
+          background-color: inherit;
+          border: none;
+          height: 0.5em;
+          padding: 0;
+          position: relative; }
+          .table-rsp.table-detail.table-striped tbody tr:nth-child(2n+1) > td,
+          .table-rsp.table-detail.table-striped tbody tr:nth-child(2n+1) + .detail-row > td {
+            background-color: #fff; }
+            .table-rsp.table-detail.table-striped tbody tr.spacer-row > td,
+            .table-rsp.table-detail.table-striped tbody tr.spacer-row:nth-child(6n+3) + tr + tr.detail-row td,
+            .table-rsp.table-detail.table-striped tbody tr.detail-row:nth-child(4n+2) + tr:not(.spacer-row) td,
+            .table-rsp.table-detail.table-striped tbody tr.detail-row:nth-child(4n+2) + tr:not(.spacer-row) + tr.detail-row td {
+              background-color: transparent; }
+    .table-rsp.table-detail.modern .expanded + tr td {
+      border-top: 1px solid #dddddd; }
+      .table-rsp.table-detail.modern .expanded td:not(.action-col),
+      .table-rsp.table-detail.modern .expanded td.action-col:not([rowspan='2']) {
+        border-bottom: none; }
+  @media only all {
+    .table-rsp .rsp-p1, .table-rsp .rsp-p2, .table-rsp .rsp-p3, .table-rsp .rsp-p4 {
+      display: none;   }
+      .table-rsp .rsp-alt-p1, .table-rsp .rsp-alt-p2, .table-rsp .rsp-alt-p3,
+      .table-rsp .rsp-alt-p4 {
+        display: inline-block;   }
+}
+  @media (min-width: 0em) {
+    .table-rsp .rsp-p1 {
+      display: table-cell;   }
+      .table-rsp .rsp-alt-p1 {
+        display: none;   }
+}
+  @media (min-width: 38em) {
+    .table-rsp .rsp-p1 {
+      display: table-cell;   }
+      .table-rsp .rsp-alt-p1 {
+        display: none;   }
+}
+  @media (min-width: 71em) {
+    .table-rsp .rsp-p2 {
+      display: table-cell;   }
+      .table-rsp .rsp-alt-p2 {
+        display: none;   }
+}
+  @media (min-width: 104em) {
+    .table-rsp .rsp-p3 {
+      display: table-cell;   }
+      .table-rsp .rsp-alt-p3 {
+        display: none;   }
+}
+  @media (min-width: 137em) {
+    .table-rsp .rsp-p4 {
+      display: table-cell;   }
+      .table-rsp .rsp-alt-p4 {
+        display: none;   }
+}
+.transfer-table .collapsed-help {
+  color: #999999;
+  font-style: italic;
+  font-weight: 400;
+  margin-bottom: 3em; }
+  .transfer-table .fa[title] {
+    cursor: pointer;
+    width: 20px; }
+    .transfer-table .transfer-heading {
+      border-bottom: 1px solid #eeeeee;
+      font-size: 1.2em;
+      margin-top: 1em;
+      padding-bottom: 0.5em; }
+      .transfer-table .transfer-heading .badge-info {
+        background-color: #0084d1; }
+        .transfer-table .transfer-heading .help-text {
+          font-size: 0.9em;
+          font-weight: 400; }
+.transfer-table .transfer-available, .transfer-table .transfer-allocated {
+  margin-bottom: 3em; }
+  .transfer-table .transfer-available table .action-col,
+  .transfer-table .transfer-allocated table .action-col {
+    min-width: 3em;
+    width: 3em; }
+    .transfer-table .transfer-available table .action-col .btn,
+    .transfer-table .transfer-allocated table .action-col .btn {
+      border-color: #666666;
+      padding: 2px 7px; }
+      .transfer-table .transfer-available table .action-col .btn.disabled,
+      .transfer-table .transfer-allocated table .action-col .btn.disabled {
+        border-color: #cecece;
+        color: #cccccc; }
+.chart-tooltip {
+  background-color: #fefefe;
+  border: solid 1px #bcbcbc;
+  box-shadow: 1px 1px 8px -3px #cccccc;
+  display: none;
+  padding: 0.3em 0.8em;
+  position: absolute;
+  white-space: nowrap;
+  z-index: 12000; }
+  .chart-tooltip.tooltip-enabled {
+    display: inline-block; }
+    .chart-tooltip .tooltip-key {
+      color: #000000;
+      font-weight: 600;
+      padding: 0 0.2em; }
+      .chart-tooltip i.fa {
+        background-color: inherit;
+        fill: none; }
+.pie-chart {
+  display: inline-block;
+  position: relative; }
+  .pie-chart .svg-pie-chart {
+    float: left; }
+    .pie-chart .svg-pie-chart .slice {
+      cursor: pointer; }
+  .pie-chart .pie-chart-title {
+    font-size: 1.1em;
+    font-weight: 600;
+    padding: 0.5em 0; }
+    .pie-chart .pie-chart-label {
+      font-size: 1.2em;
+      text-anchor: middle; }
+      .pie-chart .pie-chart-legend {
+        float: left;
+        font-size: 1em;
+        line-height: 1em;
+        padding: 0.2em 1.5em; }
+        .pie-chart .pie-chart-legend .slice-legend {
+          padding: 0.1em 0; }
+          .pie-chart .pie-chart-legend .slice-legend .slice-key {
+            color: transparent;
+            display: inline-block;
+            height: 1em;
+            line-height: 1em;
+            position: relative;
+            top: 0.12em;
+            width: 0.5em; }
+.modal-wait-spinner.modal.fade .modal-dialog, .modal.in .modal-dialog {
+  transform: translate(0, 0); }
+.metadata-tree {
+  min-height: 200px; }
+  .metadata-tree .metadata-list-group {
+    height: 400px;
+    overflow: auto; }
+    .metadata-tree .panel-heading .v-align {
+      display: table;
+      min-height: 2.5em; }
+      .metadata-tree .panel-heading .v-align > * {
+        display: table-cell;
+        vertical-align: middle; }
+  .metadata-tree :not(.active).dark-stripe {
+    background-color: #fff; }
+    .metadata-tree :not(.active).light-stripe {
+      background-color: white; }
+  .metadata-tree .list-group-item.level-0 > * {
+    padding-left: 0; }
+    .metadata-tree .list-group-item.level-1 > * {
+      padding-left: 15px; }
+      .metadata-tree .list-group-item.level-2 > * {
+        padding-left: 30px; }
+        .metadata-tree .list-group-item .leaf {
+          padding-left: 10px; }
+  .metadata-tree .metadata-tree-item {
+    display: block; }
+    .metadata-tree .metadata-tree-item .input-group-addon {
+      overflow: hidden;
+      text-overflow: ellipsis;
+      white-space: nowrap;
+      width: 50%;
+      max-width: 140px;
+      text-align: right; }
+      .metadata-tree .metadata-tree-item .multiselect {
+        margin: 0;
+        color: #000; }
+        .metadata-tree .metadata-tree-item .multiselect .panel-heading {
+          padding: 4px; }
+          .metadata-tree .metadata-tree-item .multiselect .panel-heading > * {
+            display: table;
+            width: 100%; }
+            .metadata-tree .metadata-tree-item .multiselect .panel-heading > * > * {
+              display: table-cell;
+              vertical-align: middle; }
+        .metadata-tree .metadata-tree-item .multiselect .panel-body {
+          padding: 3px 5px 5px; }
+          .metadata-tree .metadata-tree-item .multiselect .panel-footer {
+            padding: 4px; }
+            .metadata-tree .metadata-tree-item .multiselect .values .label {
+              display: inline-block;
+              text-transform: uppercase; }
+              .metadata-tree .metadata-tree-item .multiselect .name {
+                vertical-align: text-top; }
+                .metadata-tree .metadata-tree-item .multiselect .options {
+                  max-height: 180px;
+                  overflow-y: auto; }
+                  .metadata-tree .metadata-tree-item .multiselect .options > *:last-child {
+                    border-bottom: none; }
+        .metadata-tree .metadata-tree-item .multiselect .disabled {
+          cursor: not-allowed;
+          background-color: #eee; }
+    .metadata-tree .metadata-tree-item .label-info {
+      display: none;
+      position: absolute;
+      z-index: 10;
+      top: 1px;
+      left: 25px;
+      max-width: 80%;
+      overflow: hidden;
+      text-overflow: ellipsis; }
+      .metadata-tree .metadata-tree-item .bool {
+        width: 40%; }
+  .metadata-tree .label-danger {
+    display: inline-block;
+    position: absolute;
+    z-index: 10;
+    bottom: 1px;
+    left: 25px; }
+    .metadata-tree .list-group-item:hover .label-info {
+      display: inline-block; }
+.metadata-display .selector .selector-item {
+  border-top: 1px solid #ccc;
+  padding: 10px;
+  color: #145c9e;
+  cursor: pointer; }
+  .metadata-display .selector .selector-item:first-child {
+    border-top: none; }
+    .metadata-display .selector .selector-item:hover {
+      color: #145c9e; }
+      .metadata-display .selector .selector-item.active {
+        color: #666; }
+.metadata-display .selected-details {
+  padding-top: 9px; }
+  .metadata-display .description {
+    margin-top: 20px; }
+    .metadata-display .auto-width {
+      width: auto; }
+.search-bar .search-entry {
+  height: 24px;
+  position: relative; }
+  .search-bar .search-entry .search-input {
+    padding: 1px 0px;
+    font: normal normal normal 12.6px / normal;
+    outline: none;
+    height: 24px;
+    width: 500px; }
+.search-bar .fa-filter {
+  padding-left: 5px;
+  font-size: larger; }
+  .search-bar .fa-times {
+    font-size: larger;
+    cursor: pointer; }
+    .search-bar .label {
+      font-size: 100%;
+      font-weight: normal; }
+
+.search-main-area {
+  padding-left: 10px; }
+@-moz-document url-prefix() {
+  .item-list .item {
+    top: -0.4rem;   }
+  .search-selected {
+    top: -0.4rem;   }
+}
+
+.search-bar {
+  position: relative;
+  border: 1px solid #ccc;
+  background-color: white;
+  margin-bottom: 0.5rem;
+  padding: 0.25rem;
+  height: auto; }
+  .search-bar i.fi-filter {
+    color: #6a737b;
+    position: absolute;
+    top: 0.35rem;
+    left: 0.65rem; }
+    .search-bar .search-main-area {
+      position: relative;
+      margin-left: 1.65rem;
+      margin-right: 1.65rem;
+      cursor: text; }
+      .search-bar .item-list {
+        position: relative; }
+        .search-bar .item-list .item {
+          color: #333;
+          background-color: #e6e7e8;
+          height: 1.3rem;
+          margin-right: 0.5rem; }
+          .search-bar .item-list .item a {
+            color: white; }
+  .search-bar .search-selected {
+    position: relative;
+    padding-left: 0;
+    padding-right: 0;
+    background-color: white;
+    color: #444; }
+    .search-bar .search-entry {
+      position: relative;
+      display: inline-block;
+      height: 1.5rem;
+      height: 1.5rem; }
+      .search-bar .search-input {
+        width: 17.5rem;
+        border: 0;
+        box-shadow: none;
+        height: 1.5rem;
+        padding: 0.25rem;
+        margin-bottom: 0;
+        background-color: white; }
+        .search-bar .search-input:focus {
+          box-shadow: none;
+          background-color: white; }
+  .search-bar .match {
+    font-weight: bold; }
+    .search-bar i.cancel {
+      color: #6a737b;
+      position: absolute;
+      top: 0.35rem;
+      right: 0.65rem; }
+      .search-bar i.cancel:hover {
+        color: darkred; }
+  .search-bar .f-dropdown.open {
+    left: 0 !important; }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/horizon/files/branding/css/solaris2.css	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,119 @@
+/*
+ *  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 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.
+ */
+[ng-controller="LaunchInstanceSourceCtrl"] td.hi-light {
+  color: #0084d1; }
+  [ng-controller="LaunchInstanceSourceCtrl"] th.number,
+  [ng-controller="LaunchInstanceSourceCtrl"] td.number {
+    text-align: right;
+    padding-right: 30px; }
+    [ng-controller="LaunchInstanceSourceCtrl"] .selected-source {
+      background: #eee;
+      padding: 12px 18px;
+      margin-top: 20px;
+      margin-bottom: 20px; }
+      [ng-controller="LaunchInstanceSourceCtrl"] .selected-source .chart {
+        width: 99%;
+        margin-bottom: 0;
+        padding: 10px; }
+        @media (min-width: 768px) {
+          [ng-controller="LaunchInstanceSourceCtrl"] .selected-source .chart {
+            border-left: 1px solid #ccc;
+            padding-left: 20px;   }
+}
+[ng-controller="LaunchInstanceSourceCtrl"] .instance-source {
+  margin-top: 18px;
+  margin-bottom: 40px; }
+  [ng-controller="LaunchInstanceSourceCtrl"] .instance-source .image select {
+    width: 99%; }
+    [ng-controller="LaunchInstanceSourceCtrl"] .instance-source .volume-size input[type="number"] {
+      width: 90%; }
+[ng-controller="LaunchInstanceKeypairCtrl as ctrl"] dl.key-pair-details dt {
+  width: 15%; }
+  [ng-controller="LaunchInstanceKeypairCtrl as ctrl"] dl.key-pair-details dd {
+    width: 85%;
+    margin-left: 15%;
+    padding-right: 25px; }
+    [ng-controller="LaunchInstanceKeypairCtrl as ctrl"] dl.key-pair-details dd pre {
+      background: none; }
+[ng-controller="LaunchInstanceKeypairCtrl as ctrl"] textarea {
+  font-family: Menlo, Monaco, Consolas, 'Courier New'; }
+
+.no-navigation .step {
+  left: 25px; }
+  .no-navigation .form-field {
+    margin-bottom: 1em; }
+[ng-controller="LaunchInstanceSecurityGroupsCtrl as ctrl"] .table-rsp.security-group-details {
+  background: none; }
+  [ng-controller="LaunchInstanceSecurityGroupsCtrl as ctrl"] .table-rsp.security-group-details td {
+    background: none !important;
+    padding: 15px !important; }
+[ng-controller="LaunchInstanceConfigurationCtrl as config"] select {
+  width: 250px; }
+  [ng-controller="LaunchInstanceConfigurationCtrl as config"] textarea {
+    width: 100%;
+    height: 20em;
+    font-family: Menlo, Monaco, Consolas, 'Courier New'; }
+    [ng-controller="LaunchInstanceConfigurationCtrl as config"] .btn-file {
+      position: relative;
+      overflow: hidden; }
+      [ng-controller="LaunchInstanceConfigurationCtrl as config"] .btn-file input[type=file] {
+        position: absolute;
+        top: 0;
+        right: 0;
+        min-width: 100%;
+        min-height: 100%;
+        font-size: 100px;
+        text-align: right;
+        filter: alpha(opacity=0);
+        opacity: 0;
+        outline: none;
+        background: white;
+        cursor: inherit;
+        display: block; }
+[ng-controller="LaunchInstanceConfigurationCtrl as config"] .script-modified {
+  font-width: normal;
+  font-style: italic;
+  color: #888; }
+  [ng-controller="LaunchInstanceConfigurationCtrl as config"] .fa.invalid {
+    display: none; }
+    [ng-controller="LaunchInstanceConfigurationCtrl as config"] .size-indicator.warning {
+      color: #d43f3a;
+      border: none;
+      padding: 0;
+      margin: 0;
+      border: none; }
+      [ng-controller="LaunchInstanceConfigurationCtrl as config"] .size-indicator.warning .fa.invalid {
+        display: inline;
+        color: #f0ad4e;
+        cursor: pointer; }
+[ng-controller="LaunchInstanceConfigurationCtrl as config"] .script-file:after,
+[ng-controller="LaunchInstanceConfigurationCtrl as config"] .disk-partition:after {
+  content: ' ';
+  display: block;
+  clear: both;
+  margin-bottom: 2.5em; }
+#splash .login {
+  background: url('/horizon/static/dashboard/img/OracleSolaris_login_banner.png?6fe43aa9c462') no-repeat; }
+
+  .topbar {
+    height: 79px; }
+    .topbar h1.brand a {
+      display: block;
+      text-indent: -9999px;
+      background: url('/horizon/static/dashboard/img/OpenStack_Dashboard_txt.png?1b4faf81ec9f') center right no-repeat; }
+
+form#user_settings_modal, form#change_password_modal {
+  border: 1px solid #d5dfe6; }
Binary file components/openstack/horizon/files/branding/img/OpenStack_banner.png has changed
Binary file components/openstack/horizon/files/branding/img/Openstack_banner.png has changed
Binary file components/openstack/horizon/files/branding/img/dropdown_dwn.png has changed
Binary file components/openstack/horizon/files/branding/img/dropdown_ena.png has changed
--- a/components/openstack/horizon/files/branding/theme/_stylesheets.html	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/horizon/files/branding/theme/_stylesheets.html	Fri Feb 05 17:54:17 2016 -0500
@@ -1,2 +1,21 @@
-<link href='{{ STATIC_URL }}dashboard/css/solaris.css' type='text/css' media='screen' rel='stylesheet' />
+<!--
+  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 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.
+-->
+
+<link href='{{ STATIC_URL }}dashboard/css/solaris1.css' type='text/css' media='screen' rel='stylesheet' />
+
+<link href='{{ STATIC_URL }}dashboard/css/solaris2.css' type='text/css' media='screen' rel='stylesheet' />
+
 <link rel="shortcut icon" href="{{ STATIC_URL }}dashboard/img/favicon.ico"/>
--- a/components/openstack/horizon/files/local_settings.py	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/horizon/files/local_settings.py	Fri Feb 05 17:54:17 2016 -0500
@@ -7,6 +7,11 @@
 DEBUG = False
 TEMPLATE_DEBUG = DEBUG
 
+# WEBROOT is the location relative to Webserver root and should end with a
+# slash.
+WEBROOT = '/horizon/'
+STATIC_ROOT = '/usr/lib/python2.7/vendor-packages/openstack_dashboard/static'
+
 # Required for Django 1.5.
 # If horizon is running in production (DEBUG is False), set this
 # with the list of host/domain names that the application can serve.
@@ -26,14 +31,6 @@
 CSRF_COOKIE_SECURE = True
 SESSION_COOKIE_SECURE = True
 
-# Default configuration uses /horizon as the application root.  Configure auth
-# redirects here accordingly.
-LOGIN_URL = '/horizon/auth/login/'
-LOGOUT_URL = '/horizon/auth/logout/'
-LOGIN_REDIRECT_URL = '/horizon'
-
-STATIC_ROOT = '/usr/lib/python2.7/vendor-packages/openstack_dashboard/static'
-
 # Enable Solaris theme
 TEMPLATE_DIRS = (
     '/usr/lib/python2.7/vendor-packages/openstack_dashboard/templates/solaris',
@@ -44,32 +41,31 @@
 
 # Overrides for OpenStack API versions. Use this setting to force the
 # OpenStack dashboard to use a specific API version for a given service API.
+# Versions specified here should be integers or floats, not strings.
 # NOTE: The version should be formatted as it appears in the URL for the
 # service API. For example, The identity service APIs have inconsistent
-# use of the decimal point, so valid options would be "2.0" or "3".
-# OPENSTACK_API_VERSIONS = {
-#     "data_processing": 1.1,
-#     "identity": 3,
-#     "volume": 2
-# }
+# use of the decimal point, so valid options would be 2.0 or 3.
+#OPENSTACK_API_VERSIONS = {
+#    "data-processing": 1.1,
+#    "identity": 3,
+#    "volume": 2,
+#}
 
 # Set this to True if running on multi-domain model. When this is enabled, it
 # will require user to enter the Domain name in addition to username for login.
-# OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = False
+#OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = False
 
 # Overrides the default domain used when running on single-domain model
 # with Keystone V3. All entities will be created in the default domain.
-# OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'Default'
+#OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'Default'
 
 # Set Console type:
-# valid options would be "AUTO"(default), "VNC", "SPICE", "RDP" or None
+# valid options would be "AUTO"(default), "VNC", "SPICE", "RDP", "SERIAL" or None
 # Set to None explicitly if you want to deactivate the console.
-# CONSOLE_TYPE = "AUTO"
+#CONSOLE_TYPE = "AUTO"
 
 # Default OpenStack Dashboard configuration.
 HORIZON_CONFIG = {
-    'dashboards': ('project', 'admin', 'settings',),
-    'default_dashboard': 'project',
     'user_home': 'openstack_dashboard.views.get_user_home',
     'ajax_queue_limit': 10,
     'auto_fade_alerts': {
@@ -81,24 +77,26 @@
     'exceptions': {'recoverable': exceptions.RECOVERABLE,
                    'not_found': exceptions.NOT_FOUND,
                    'unauthorized': exceptions.UNAUTHORIZED},
-    'angular_modules': [],
-    'js_files': [],
     'customization_module': 'openstack_dashboard.overrides',
 }
 
 # Specify a regular expression to validate user passwords.
-# HORIZON_CONFIG["password_validator"] = {
-#     "regex": '.*',
-#     "help_text": _("Your password does not meet the requirements.")
-# }
+#HORIZON_CONFIG["password_validator"] = {
+#    "regex": '.*',
+#    "help_text": _("Your password does not meet the requirements."),
+#}
 
 # Disable simplified floating IP address management for deployments with
 # multiple floating IP pools or complex network requirements.
-# HORIZON_CONFIG["simple_ip_management"] = False
+#HORIZON_CONFIG["simple_ip_management"] = False
 
 # Turn off browser autocompletion for forms including the login form and
 # the database creation workflow if so desired.
-# HORIZON_CONFIG["password_autocomplete"] = "off"
+#HORIZON_CONFIG["password_autocomplete"] = "off"
+
+# Setting this to True will disable the reveal button for password fields,
+# including on the login form.
+#HORIZON_CONFIG["disable_password_reveal"] = False
 
 LOCAL_PATH = '/var/lib/openstack_dashboard'
 
@@ -118,7 +116,7 @@
 # We recommend you use memcached for development; otherwise after every reload
 # of the django development server, you will have to login again. To use
 # memcached set CACHES to something like
-# CACHES = {
+#CACHES = {
 #    'default': {
 #        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
 #        'LOCATION': '127.0.0.1:11211',
@@ -127,7 +125,7 @@
 
 CACHES = {
     'default': {
-        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'
+        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
     }
 }
 
@@ -137,26 +135,42 @@
 #EMAIL_BACKEND = 'django.core.mail.backends.dummy.EmailBackend'
 
 # Configure these for your outgoing email host
-# EMAIL_HOST = 'smtp.my-company.com'
-# EMAIL_PORT = 25
-# EMAIL_HOST_USER = 'djangomail'
-# EMAIL_HOST_PASSWORD = 'top-secret!'
+#EMAIL_HOST = 'smtp.my-company.com'
+#EMAIL_PORT = 25
+#EMAIL_HOST_USER = 'djangomail'
+#EMAIL_HOST_PASSWORD = 'top-secret!'
 
 # For multiple regions uncomment this configuration, and add (endpoint, title).
-# AVAILABLE_REGIONS = [
-#     ('http://cluster1.example.com:5000/v2.0', 'cluster1'),
-#     ('http://cluster2.example.com:5000/v2.0', 'cluster2'),
-# ]
+#AVAILABLE_REGIONS = [
+#    ('http://cluster1.example.com:5000/v2.0', 'cluster1'),
+#    ('http://cluster2.example.com:5000/v2.0', 'cluster2'),
+#]
 
 OPENSTACK_HOST = "127.0.0.1"
 OPENSTACK_KEYSTONE_URL = "http://%s:5000/v2.0" % OPENSTACK_HOST
 OPENSTACK_KEYSTONE_DEFAULT_ROLE = "_member_"
 
+# Enables keystone web single-sign-on if set to True.
+#WEBSSO_ENABLED = False
+
+# Determines which authentication choice to show as default.
+#WEBSSO_INITIAL_CHOICE = "credentials"
+
+# The list of authentication mechanisms
+# which include keystone federation protocols.
+# Current supported protocol IDs are 'saml2' and 'oidc'
+# which represent SAML 2.0, OpenID Connect respectively.
+# Do not remove the mandatory credentials mechanism.
+#WEBSSO_CHOICES = (
+#    ("credentials", _("Keystone Credentials")),
+#    ("oidc", _("OpenID Connect")),
+#    ("saml2", _("Security Assertion Markup Language")))
+
 # Disable SSL certificate checks (useful for self-signed certificates):
-# OPENSTACK_SSL_NO_VERIFY = True
+#OPENSTACK_SSL_NO_VERIFY = True
 
 # The CA certificate to use to verify SSL connections
-# OPENSTACK_SSL_CACERT = '/path/to/cacert.pem'
+#OPENSTACK_SSL_CACERT = '/path/to/cacert.pem'
 
 # The OPENSTACK_KEYSTONE_BACKEND settings can be used to identify the
 # capabilities of the auth backend for Keystone.
@@ -170,13 +184,27 @@
     'can_edit_group': True,
     'can_edit_project': True,
     'can_edit_domain': True,
-    'can_edit_role': True
+    'can_edit_role': True,
 }
 
 #Setting this to True, will add a new "Retrieve Password" action on instance,
 #allowing Admin session password retrieval/decryption.
 OPENSTACK_ENABLE_PASSWORD_RETRIEVE = True
 
+# The Launch Instance user experience has been significantly enhanced.
+# You can choose whether to enable the new launch instance experience,
+# the legacy experience, or both. The legacy experience will be removed
+# in a future release, but is available as a temporary backup setting to ensure
+# compatibility with existing deployments. Further development will not be
+# done on the legacy experience. Please report any problems with the new
+# experience via the Launchpad tracking system.
+#
+# Toggle LAUNCH_INSTANCE_LEGACY_ENABLED and LAUNCH_INSTANCE_NG_ENABLED to
+# determine the experience to enable.  Set them both to true to enable
+# both.
+#LAUNCH_INSTANCE_LEGACY_ENABLED = True
+#LAUNCH_INSTANCE_NG_ENABLED = False
+
 # The Xen Hypervisor has the ability to set the mount point for volumes
 # attached to instances (other Hypervisors currently do not). Setting
 # can_set_mount_point to True will add the option to set the mount point
@@ -189,7 +217,7 @@
 # The OPENSTACK_CINDER_FEATURES settings can be used to enable optional
 # services provided by cinder that is not exposed by its extension API.
 OPENSTACK_CINDER_FEATURES = {
-    'enable_backup': False,
+    'enable_backup': True,
 }
 
 # The OPENSTACK_NEUTRON_NETWORK settings can be used to enable optional
@@ -203,35 +231,44 @@
     'enable_ha_router': False,
     'enable_lb': False,
     'enable_firewall': False,
-    'enable_vpn': False,
+    'enable_vpn': True,
+
     # The profile_support option is used to detect if an external router can be
     # configured via the dashboard. When using specific plugins the
     # profile_support can be turned on if needed.
     'profile_support': None,
     #'profile_support': 'cisco',
+
     # Set which provider network types are supported. Only the network types
     # in this list will be available to choose from when creating a network.
     # Network types include local, flat, vlan, gre, and vxlan.
     'supported_provider_types': ['*'],
+
+    # Set which VNIC types are supported for port binding. Only the VNIC
+    # types in this list will be available to choose from when creating a
+    # port.
+    # VNIC types include 'normal', 'macvtap' and 'direct'.
+    'supported_vnic_types': ['*']
 }
 
 # The OPENSTACK_IMAGE_BACKEND settings can be used to customize features
 # in the OpenStack Dashboard related to the Image service, such as the list
 # of supported image formats.
-# OPENSTACK_IMAGE_BACKEND = {
-#     'image_formats': [
-#         ('', _('Select format')),
-#         ('aki', _('AKI - Amazon Kernel Image')),
-#         ('ami', _('AMI - Amazon Machine Image')),
-#         ('ari', _('ARI - Amazon Ramdisk Image')),
-#         ('iso', _('ISO - Optical Disk Image')),
-#         ('qcow2', _('QCOW2 - QEMU Emulator')),
-#         ('raw', _('Raw')),
-#         ('vdi', _('VDI')),
-#         ('vhd', _('VHD')),
-#         ('vmdk', _('VMDK'))
-#     ]
-# }
+#OPENSTACK_IMAGE_BACKEND = {
+#    'image_formats': [
+#        ('', _('Select format')),
+#        ('aki', _('AKI - Amazon Kernel Image')),
+#        ('ami', _('AMI - Amazon Machine Image')),
+#        ('ari', _('ARI - Amazon Ramdisk Image')),
+#        ('iso', _('ISO - Optical Disk Image')),
+#        ('ova', _('OVA - Open Virtual Appliance')),
+#        ('qcow2', _('QCOW2 - QEMU Emulator')),
+#        ('raw', _('Raw')),
+#        ('vdi', _('VDI - Virtual Disk Image')),
+#        ('vhd', ('VHD - Virtual Hard Disk')),
+#        ('vmdk', _('VMDK - Virtual Machine Disk')),
+#    ]
+#}
 
 # The IMAGE_CUSTOM_PROPERTY_TITLES settings is used to customize the titles for
 # image custom property attributes that appear on image detail pages.
@@ -241,7 +278,7 @@
     "ramdisk_id": _("Ramdisk ID"),
     "image_state": _("Euca2ools state"),
     "project_id": _("Project ID"),
-    "image_type": _("Image Type")
+    "image_type": _("Image Type"),
 }
 
 # The IMAGE_RESERVED_CUSTOM_PROPERTIES setting is used to specify which image
@@ -267,6 +304,12 @@
 API_RESULT_LIMIT = 1000
 API_RESULT_PAGE_SIZE = 20
 
+# The size of chunk in bytes for downloading objects from Swift
+SWIFT_FILE_TRANSFER_CHUNK_SIZE = 512 * 1024
+
+# Specify a maximum number of items to display in a dropdown.
+DROPDOWN_MAX_ITEMS = 30
+
 # The timezone of the server. This should correspond with the timezone
 # of your entire OpenStack installation, and hopefully be in UTC.
 TIME_ZONE = "UTC"
@@ -277,12 +320,24 @@
 # can provide a custom callback method to use for sorting. You can also provide
 # a flag for reverse sort. For more info, see
 # http://docs.python.org/2/library/functions.html#sorted
-# CREATE_INSTANCE_FLAVOR_SORT = {
-#     'key': 'name',
-#      # or
-#     'key': my_awesome_callback_method,
-#     'reverse': False,
-# }
+#CREATE_INSTANCE_FLAVOR_SORT = {
+#    'key': 'name',
+#     # or
+#    'key': my_awesome_callback_method,
+#    'reverse': False,
+#}
+
+# Set this to True to display an 'Admin Password' field on the Change Password
+# form to verify that it is indeed the admin logged-in who wants to change
+# the password.
+#ENFORCE_PASSWORD_CHECK = False
+
+# Modules that provide /auth routes that can be used to handle different types
+# of user authentication. Add auth plugins that require extra route handling to
+# this list.
+#AUTHENTICATION_URLS = [
+#    'openstack_auth.urls',
+#]
 
 # The Horizon Policy Enforcement engine uses these values to load per service
 # policy rule files. The content of these files should match the files the
@@ -299,14 +354,19 @@
 #    'image': 'glance_policy.json',
 #    'orchestration': 'heat_policy.json',
 #    'network': 'neutron_policy.json',
+#    'telemetry': 'ceilometer_policy.json',
 #}
 
 # Trove user and database extension support. By default support for
 # creating users and databases on database instances is turned on.
 # To disable these extensions set the permission here to something
 # unusable such as ["!"].
-# TROVE_ADD_USER_PERMS = []
-# TROVE_ADD_DATABASE_PERMS = []
+#TROVE_ADD_USER_PERMS = []
+#TROVE_ADD_DATABASE_PERMS = []
+
+# Change this patch to the appropriate static directory containing
+# two files: _variables.scss and _styles.scss
+#CUSTOM_THEME_PATH = 'static/themes/default'
 
 LOGGING = {
     'version': 1,
@@ -315,6 +375,12 @@
     # if nothing is specified here and disable_existing_loggers is True,
     # django.db.backends will still log unless it is disabled explicitly.
     'disable_existing_loggers': False,
+    'formatters': {
+        'verbose': {
+            'format': '%(asctime)s %(process)d %(levelname)s %(name)s '
+                      '%(message)s'
+        },
+    },
     'handlers': {
         'null': {
             'level': 'DEBUG',
@@ -325,6 +391,12 @@
             'level': 'INFO',
             'class': 'logging.StreamHandler',
         },
+        'file': {
+            'level': 'INFO',
+            'class': 'logging.FileHandler',
+            'filename': '/var/log/openstack_dashboard/horizon.log',
+            'formatter': 'verbose',
+        },
     },
     'loggers': {
         # Logging from django.db.backends is VERY verbose, send to null
@@ -545,11 +617,31 @@
 # pool for use in their cluster.  False by default.  You would want
 # to set this to True if you were running Nova Networking with
 # auto_assign_floating_ip = True.
-# SAHARA_AUTO_IP_ALLOCATION_ENABLED = False
+#SAHARA_AUTO_IP_ALLOCATION_ENABLED = False
 
 # The hash algorithm to use for authentication tokens. This must
 # match the hash algorithm that the identity server and the
 # auth_token middleware are using. Allowed values are the
 # algorithms supported by Python's hashlib library.
-# OPENSTACK_TOKEN_HASH_ALGORITHM = 'md5'
+#OPENSTACK_TOKEN_HASH_ALGORITHM = 'md5'
 
+# AngularJS requires some settings to be made available to
+# the client side. Some settings are required by in-tree / built-in horizon
+# features. These settings must be added to REST_API_REQUIRED_SETTINGS in the
+# form of ['SETTING_1','SETTING_2'], etc.
+#
+# You may remove settings from this list for security purposes, but do so at
+# the risk of breaking a built-in horizon feature. These settings are required
+# for horizon to function properly. Only remove them if you know what you
+# are doing. These settings may in the future be moved to be defined within
+# the enabled panel configuration.
+# You should not add settings to this list for out of tree extensions.
+# See: https://wiki.openstack.org/wiki/Horizon/RESTAPI
+REST_API_REQUIRED_SETTINGS = ['OPENSTACK_HYPERVISOR_FEATURES']
+
+# Additional settings can be made available to the client side for
+# extensibility by specifying them in REST_API_ADDITIONAL_SETTINGS
+# !! Please use extreme caution as the settings are transferred via HTTP/S
+# and are not encrypted on the browser. This is an experimental API and
+# may be deprecated in the future without notice.
+#REST_API_ADDITIONAL_SETTINGS = []
--- a/components/openstack/horizon/files/openstack-dashboard-http.conf	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/horizon/files/openstack-dashboard-http.conf	Fri Feb 05 17:54:17 2016 -0500
@@ -6,7 +6,7 @@
     WSGIDaemonProcess horizon user=webservd group=webservd processes=3 \
         threads=10
 
-    Alias /static /usr/lib/python2.7/vendor-packages/openstack_dashboard/static/
+    Alias /horizon/static /usr/lib/python2.7/vendor-packages/openstack_dashboard/static/
 
     <Directory />
         Options FollowSymLinks
@@ -26,8 +26,8 @@
     </Directory>
 
     ErrorLog "|/usr/bin/rotatelogs -n 3 \
-        /var/lib/openstack_dashboard/horizon_error.log 50M"
+        /var/log/openstack_dashboard/horizon_error.log 50M"
     LogLevel warn
     CustomLog "|/usr/bin/rotatelogs -n 3 \
-        /var/lib/openstack_dashboard/horizon_access.log 50M" combined
+        /var/log/openstack_dashboard/horizon_access.log 50M" combined
 </VirtualHost>
--- a/components/openstack/horizon/files/openstack-dashboard-tls.conf	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/horizon/files/openstack-dashboard-tls.conf	Fri Feb 05 17:54:17 2016 -0500
@@ -36,7 +36,7 @@
     WSGIDaemonProcess horizon user=webservd group=webservd processes=3 \
         threads=10
 
-    Alias /static /usr/lib/python2.7/vendor-packages/openstack_dashboard/static/
+    Alias /horizon/static /usr/lib/python2.7/vendor-packages/openstack_dashboard/static/
 
     <Directory />
         Options FollowSymLinks
@@ -56,8 +56,8 @@
     </Directory>
 
     ErrorLog "|/usr/bin/rotatelogs -n 3 \
-        /var/lib/openstack_dashboard/horizon_error.log 50M"
+        /var/log/openstack_dashboard/horizon_error.log 50M"
     LogLevel warn
     CustomLog "|/usr/bin/rotatelogs -n 3 \
-        /var/lib/openstack_dashboard/horizon_access.log 50M" combined
+        /var/log/openstack_dashboard/horizon_access.log 50M" combined
 </VirtualHost>
--- a/components/openstack/horizon/files/overrides.py	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/horizon/files/overrides.py	Fri Feb 05 17:54:17 2016 -0500
@@ -61,6 +61,11 @@
     create_instance.SetNetwork
 )
 
+# Disable 'Security Groups' in Project/Instances/Launch Instance/Access &
+# Security. Note that this is unchecked by default.
+groups_widget = create_instance.SetAccessControlsAction.base_fields['groups']
+groups_widget.widget.attrs['disabled'] = True
+
 # Remove 'UpdateInstanceSecurityGroups' from
 # Project/Compute/Instances/Actions/Edit Instance
 update_instance.UpdateInstance.default_steps = (
@@ -86,7 +91,7 @@
     project_tables.TerminateInstance
 )
 
-# Remove 'EditInstanceSecurityGroups', 'TogglePause' actions from 
+# Remove 'EditInstanceSecurityGroups', 'TogglePause' actions from
 # Project/Compute/Instances/Actions
 project_tables.InstancesTable._meta.row_actions = (
     project_tables.StartInstance,
--- a/components/openstack/horizon/font-awesome.license	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/horizon/font-awesome.license	Fri Feb 05 17:54:17 2016 -0500
@@ -1,34 +1,33 @@
 The MIT License (MIT)
 
-Copyright (c) 
+Copyright (c) <year> <copyright holders>
 
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
 ============================================================
 
 SIL OFL 1.1 
 
-Copyright (c) , (),
-with Reserved Font Name .
-Copyright (c) , (),
-with Reserved Font Name .
-Copyright (c) , ().
+Copyright (c) <dates>, <Copyright Holder> (<URL|email>),
+with Reserved Font Name <Reserved Font Name>.
+Copyright (c) <dates>, <additional Copyright Holder> (<URL|email>),
+with Reserved Font Name <additional Reserved Font Name>.
+Copyright (c) <dates>, <additional Copyright Holder> (<URL|email>).
 
 This Font Software is licensed under the SIL Open Font License, Version 1.1.
 This license is copied below, and is also available with a FAQ at:
@@ -124,13 +123,14 @@
 
 ============================================================
 
-css/font-awesome.css
 scss/font-awesome.scss
 less/font-awesome.less
+css/font-awesome.min.css
+css/font-awesome.css
 
 /*!
-* Font Awesome 4.1.0 by @davegandy - http://fontawesome.io - @fontawesome
-* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
-*/
-============================================================
+ *  Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
+ *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+ */
 
+==============================================================================
--- a/components/openstack/horizon/horizon.license	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/horizon/horizon.license	Fri Feb 05 17:54:17 2016 -0500
@@ -210,236 +210,42 @@
    See the License for the specific language governing permissions and
    limitations under the License.
 
---------------------------------------------------------------------------
-
-Copyright (c) 2011 Yahoo! Inc. All rights reserved.
-The copyrights embodied in the content of this file are licensed
-by Yahoo! Inc. under the BSD (revised) open source license.
-
-Redistribution and use in source and binary forms, with or without 
-modification, are permitted provided that the following conditions are met:
-
-   Redistributions of source code must retain the above copyright notice, this 
-   list of conditions and the following disclaimer.
-
-   Redistributions in binary form must reproduce the above copyright notice, 
-   this list of conditions and the following disclaimer in the documentation 
-   and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------
-
-Copyright (c) 2006-2009 Hampton Catlin, Nathan Weizenbaum, and Chris Eppstein
-http://sass-lang.com
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of 
-this software and associated documentation files (the “Software”), to deal in 
-the Software without restriction, including without limitation the rights to 
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
-of the Software, and to permit persons to whom the Software is furnished to do 
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all 
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
-SOFTWARE.
-
---------------------------------------------------------------------------
+============================================================
 
-Copyright 2011, Klaus Hartl
-Dual licensed under the MIT or GPL Version 2 licenses.
-http://www.opensource.org/licenses/mit-license.php
-http://www.opensource.org/licenses/GPL-2.0
-
-Oracle chooses the MIT license
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of 
-this software and associated documentation files (the “Software”), to deal in 
-the Software without restriction, including without limitation the rights to 
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
-of the Software, and to permit persons to whom the Software is furnished to do 
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all 
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
-SOFTWARE.
-
-
---------------------------------------------------------------------------
+Additional license/copyright seen: (Oracle chooses the MIT license):
+/*!
+ * jQuery twitter bootstrap wizard plugin
+ * Examples and documentation at: http://github.com/VinceG/twitter-bootstrap-wizard
+ * version 1.0
+ * Requires jQuery v1.3.2 or later
+ * Supports Bootstrap 2.2.x, 2.3.x, 3.0
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ * Authors: Vadim Vincent Gabriel (http://vadimg.com), Jason Gill (www.gilluminate.com)
+ */
 
-Copyright 2013 jQuery Foundation and other contributors
-http://jquery.com/
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
+The MIT License (MIT)
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
---------------------------------------------------------------------------
-
-Copyright (c) 2007 Christian Bach
-Examples and docs at: http://tablesorter.com
-Dual licensed under the MIT and GPL licenses:
-http://www.opensource.org/licenses/mit-license.php
-http://www.gnu.org/licenses/gpl.html
-
-Oracle chooses the MIT license
+Copyright (c) <year> <copyright holders>
 
-Permission is hereby granted, free of charge, to any person obtaining a copy of 
-this software and associated documentation files (the “Software”), to deal in 
-the Software without restriction, including without limitation the rights to 
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
-of the Software, and to permit persons to whom the Software is furnished to do 
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all 
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
-SOFTWARE.
-
---------------------------------------------------------------------------
-
-Copyright (c) 2012 John Resig, Jörn Zaefferer
-Dual licensed under the MIT (MIT-LICENSE.txt)
-or GPL (GPL-LICENSE.txt) licenses.
-
-Oracle chooses the MIT license
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
 
-Permission is hereby granted, free of charge, to any person obtaining a copy of 
-this software and associated documentation files (the “Software”), to deal in 
-the Software without restriction, including without limitation the rights to 
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
-of the Software, and to permit persons to whom the Software is furnished to do 
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all 
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
-SOFTWARE.
-
---------------------------------------------------------------------------
-
-Copyright (c) 2012 John Resig, Jörn Zaefferer
-Dual licensed under the MIT (MIT-LICENSE.txt)
-or GPL (GPL-LICENSE.txt) licenses.
-
-Oracle chooses the MIT license
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of 
-this software and associated documentation files (the “Software”), to deal in 
-the Software without restriction, including without limitation the rights to 
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
-of the Software, and to permit persons to whom the Software is furnished to do 
-so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
-The above copyright notice and this permission notice shall be included in all 
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
-SOFTWARE.
-
---------------------------------------------------------------------------
-
-* jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com |
-* http://flesler.blogspot.com Licensed under BSD
-
-Redistribution and use in source and binary forms, with or without 
-modification, are permitted provided that the following conditions are met:
-
-   Redistributions of source code must retain the above copyright notice, this 
-   list of conditions and the following disclaimer.
-
-   Redistributions in binary form must reproduce the above copyright notice, 
-   this list of conditions and the following disclaimer in the documentation 
-   and/or other materials provided with the distribution.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
 
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------
+============================================================
 
-Underscore is freely distributable under the MIT license.
-Portions of Underscore are inspired or borrowed from Prototype,
-Oliver Steele's Functional, and John Resig's Micro-Templating.
-For all details and documentation:
-http://documentcloud.github.com/underscore
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of 
-this software and associated documentation files (the “Software”), to deal in 
-the Software without restriction, including without limitation the rights to 
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
-of the Software, and to permit persons to whom the Software is furnished to do 
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all 
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
-SOFTWARE.
--- a/components/openstack/horizon/horizon.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/horizon/horizon.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,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.
 #
 
 set name=pkg.fmri \
@@ -28,7 +28,7 @@
 set name=pkg.summary value="OpenStack Horizon (Dashboard)"
 set name=pkg.description \
     value="OpenStack Horizon is the canonical implementation of OpenStack's Dashboard, which provides a web based user interface to OpenStack services including Nova, Swift, Keystone, etc."
-set name=pkg.human-version value="Juno $(COMPONENT_VERSION)"
+set name=pkg.human-version value="Kilo $(COMPONENT_VERSION)"
 set name=info.classification \
     value="org.opensolaris.category.2008:System/Administration and Configuration" \
     value="org.opensolaris.category.2008:System/Enterprise Management" \
@@ -39,7 +39,7 @@
 set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
 set name=openstack.upgrade-id reboot-needed=true value=$(COMPONENT_BE_VERSION)
 set name=org.opensolaris.arc-caseid value=PSARC/2013/350 value=PSARC/2014/058 \
-    value=PSARC/2015/110
+    value=PSARC/2015/110 value=PSARC/2015/535
 set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
 #
 file files/openstack-dashboard-http.conf \
@@ -70,11 +70,10 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/conf/dash_template/templates/dash_name/base.html
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/conf/default.py
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/conf/panel_template/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/horizon/conf/panel_template/models.py
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/conf/panel_template/panel.py.tmpl
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/conf/panel_template/templates/panel_name/index.html
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/conf/panel_template/tests.py.tmpl
-file path=usr/lib/python$(PYVER)/vendor-packages/horizon/conf/panel_template/urls.py
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/conf/panel_template/urls.py.tmpl
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/conf/panel_template/views.py
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/context_processors.py
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/contrib/__init__.py
@@ -94,17 +93,103 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/middleware.py
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/models.py
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/site_urls.py
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/action-list/action-list.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/action-list/action-list.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/action-list/action-list.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/action-list/action.html
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/action-list/button-tooltip.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/action-list/menu-item.html
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/action-list/menu.html
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/action-list/single-button.html
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/action-list/split-button.html
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/action-list/warning-tooltip.html
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/bind-scope/bind-scope.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/bind-scope/bind-scope.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/charts/chart-tooltip.html
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/charts/chart-tooltip.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/charts/chart-tooltip.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/charts/charts.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/charts/pie-chart.html
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/charts/pie-chart.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/charts/pie-chart.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/charts/pie-chart.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/form/form.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/form/form.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/help-panel/help-panel.html
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/help-panel/help-panel.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/help-panel/help-panel.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/help-panel/help-panel.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/login/login.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/login/login.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/magic-search/magic-search.html
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/magic-search/magic-search.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/magic-search/magic-search.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/metadata-display/metadata-display.html
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/metadata-display/metadata-display.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/metadata-display/metadata-display.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/metadata-display/metadata-display.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/metadata-tree/metadata-tree-item.html
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/metadata-tree/metadata-tree-service.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/metadata-tree/metadata-tree.html
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/metadata-tree/metadata-tree.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/metadata-tree/metadata-tree.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/metadata-tree/metadata-tree.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/modal/modal-wait-spinner.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/modal/modal-wait-spinner.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/modal/modal-wait-spinner.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/modal/modal.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/modal/modal.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/modal/simple-modal.html
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/styles.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/table/basic-table.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/table/basic-table.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/table/search-bar.html
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/table/table.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/table/table.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/table/table.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/transfer-table/allocated.html.example
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/transfer-table/available.html.example
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/transfer-table/transfer-table.html
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/transfer-table/transfer-table.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/transfer-table/transfer-table.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/transfer-table/transfer-table.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/validators/validators.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/validators/validators.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/widget.module.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/wizard/wizard.html
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/wizard/wizard.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/wizard/wizard.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/wizard/wizard.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/workflow/workflow.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/angular/workflow/workflow.spec.js
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/angular/controllers/dummy.js
-file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/angular/controllers/metadata-widget-controller.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/angular/controllers/modal-form-update-metadata-ctrl.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/angular/controllers/namespace-controller.js
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/angular/directives/forms.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/angular/directives/serialConsole.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/angular/filters/filters.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/angular/filters/filters.spec.js
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/angular/horizon.conf.js
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/angular/horizon.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/angular/hz.api.module.js
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/angular/services/horizon.utils.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/angular/services/hz.api.cinder.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/angular/services/hz.api.config.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/angular/services/hz.api.config.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/angular/services/hz.api.glance.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/angular/services/hz.api.keystone.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/angular/services/hz.api.neutron.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/angular/services/hz.api.nova.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/angular/services/hz.api.policy.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/angular/services/hz.api.security-group.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/angular/services/hz.api.service.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/angular/services/hz.api.service.spec.js
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/horizon.accordion_nav.js
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/horizon.communication.js
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/horizon.d3barchart.js
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/horizon.d3linechart.js
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/horizon.d3piechart.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/horizon.datepickers.js
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/horizon.firewalls.js
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/horizon.forms.js
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/horizon.formset_table.js
@@ -114,6 +199,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/horizon.js
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/horizon.membership.js
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/horizon.messages.js
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/horizon.metering.js
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/horizon.modals.js
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/horizon.networktopology.js
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/static/horizon/js/horizon.quota.js
@@ -133,6 +219,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/tabs/views.py
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/_header.html
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/_stylesheets.html
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/auth/_description.html
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/auth/_login.html
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/auth/login.html
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/base.html
@@ -156,8 +243,10 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/horizon/common/_data_table.html
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/horizon/common/_data_table_cell.html
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/horizon/common/_data_table_row.html
-file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/horizon/common/_data_table_row_action.html
-file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/horizon/common/_data_table_row_actions.html
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/horizon/common/_data_table_row_action_dropdown.html
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/horizon/common/_data_table_row_action_row.html
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/horizon/common/_data_table_row_actions_dropdown.html
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/horizon/common/_data_table_row_actions_row.html
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/horizon/common/_data_table_table_action.html
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/horizon/common/_data_table_table_actions.html
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/horizon/common/_detail_table.html
@@ -185,10 +274,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/horizon/common/_workflow_base.html
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/horizon/common/_workflow_step.html
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/horizon/common/_workflow_step_update_members.html
-file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/horizon/jasmine/index.html
-file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/horizon/jasmine/jasmine.html
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/horizon/qunit.html
-file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templates/splash.html
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templatetags/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templatetags/branding.py
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/templatetags/form_helpers.py
@@ -204,6 +290,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/utils/html.py
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/utils/memoized.py
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/utils/secret_key.py
+file path=usr/lib/python$(PYVER)/vendor-packages/horizon/utils/units.py
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/utils/urlresolvers.py
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/utils/validators.py
 file path=usr/lib/python$(PYVER)/vendor-packages/horizon/version.py
@@ -225,10 +312,22 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/api/network_base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/api/neutron.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/api/nova.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/api/rest/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/api/rest/cinder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/api/rest/config.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/api/rest/glance.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/api/rest/keystone.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/api/rest/network.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/api/rest/neutron.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/api/rest/nova.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/api/rest/policy.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/api/rest/urls.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/api/rest/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/api/sahara.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/api/swift.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/api/trove.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/api/vpn.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/conf/ceilometer_policy.json
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/conf/cinder_policy.json
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/conf/glance_policy.json
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/conf/heat_policy.json
@@ -289,8 +388,12 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/hypervisors/panel.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/hypervisors/tables.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/hypervisors/tabs.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/hypervisors/templates/hypervisors/compute/_disable_service.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/hypervisors/templates/hypervisors/compute/_evacuate_host.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/hypervisors/templates/hypervisors/compute/_migrate_host.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/hypervisors/templates/hypervisors/compute/disable_service.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/hypervisors/templates/hypervisors/compute/evacuate_host.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/hypervisors/templates/hypervisors/compute/migrate_host.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/hypervisors/templates/hypervisors/detail.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/hypervisors/templates/hypervisors/index.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/hypervisors/tests.py
@@ -330,13 +433,31 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/instances/tests.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/instances/urls.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/instances/views.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metadata_defs/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metadata_defs/constants.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metadata_defs/forms.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metadata_defs/panel.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metadata_defs/tables.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metadata_defs/tabs.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metadata_defs/templates/metadata_defs/_create.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metadata_defs/templates/metadata_defs/_detail_contents.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metadata_defs/templates/metadata_defs/_detail_overview.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metadata_defs/templates/metadata_defs/_resource_types.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metadata_defs/templates/metadata_defs/create.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metadata_defs/templates/metadata_defs/detail.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metadata_defs/templates/metadata_defs/index.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metadata_defs/templates/metadata_defs/resource_types.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metadata_defs/tests.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metadata_defs/urls.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metadata_defs/views.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metering/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metering/forms.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metering/panel.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metering/tables.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metering/tabs.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metering/templates/metering/_daily.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metering/templates/metering/daily.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metering/templates/metering/index.html
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metering/templates/metering/report.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metering/templates/metering/stats.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metering/tests.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/metering/urls.py
@@ -368,10 +489,10 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/networks/templates/networks/create.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/networks/templates/networks/index.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/networks/templates/networks/ports/_create.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/networks/templates/networks/ports/_detail_overview.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/networks/templates/networks/ports/_update.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/networks/templates/networks/ports/create.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/networks/templates/networks/ports/update.html
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/networks/templates/networks/subnets/index.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/networks/templates/networks/update.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/networks/tests.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/networks/urls.py
@@ -384,9 +505,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/overview/urls.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/overview/views.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/routers/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/routers/extensions/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/routers/extensions/routerrules/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/routers/extensions/routerrules/tables.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/routers/forms.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/routers/panel.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/routers/ports/__init__.py
@@ -396,8 +514,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/routers/ports/views.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/routers/tables.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/routers/tabs.py
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/routers/templates/routers/_detail_overview.html
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/routers/templates/routers/_update.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/routers/templates/routers/detail.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/routers/templates/routers/index.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/routers/templates/routers/update.html
@@ -421,10 +537,13 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volume_types/_associate_qos_spec.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volume_types/_create_qos_spec.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volume_types/_create_volume_type.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volume_types/_create_volume_type_encryption.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volume_types/_edit_qos_spec_consumer.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volume_types/_volume_encryption_type_detail.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volume_types/associate_qos_spec.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volume_types/create_qos_spec.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volume_types/create_volume_type.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volume_types/create_volume_type_encryption.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volume_types/edit_qos_spec_consumer.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volume_types/extras/_create.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volume_types/extras/_edit.html
@@ -438,9 +557,14 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volume_types/qos_specs/create.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volume_types/qos_specs/edit.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volume_types/qos_specs/index.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volume_types/volume_encryption_type_detail.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volume_types/volume_types_tables.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volumes/_manage_volume.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volumes/_unmanage_volume.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volumes/_update_status.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volumes/detail.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volumes/manage_volume.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volumes/unmanage_volume.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volumes/update_status.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/templates/volumes/volumes/volumes_tables.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/admin/volumes/tests.py
@@ -499,6 +623,9 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/identity/projects/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/identity/projects/panel.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/identity/projects/tables.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/identity/projects/templates/projects/_common_horizontal_form.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/identity/projects/templates/projects/_detail_overview.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/identity/projects/templates/projects/detail.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/identity/projects/templates/projects/index.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/identity/projects/templates/projects/usage.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/identity/projects/tests.py
@@ -521,9 +648,13 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/identity/users/forms.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/identity/users/panel.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/identity/users/tables.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/identity/users/templates/users/_change_password.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/identity/users/templates/users/_create.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/identity/users/templates/users/_detail_overview.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/identity/users/templates/users/_update.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/identity/users/templates/users/change_password.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/identity/users/templates/users/create.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/identity/users/templates/users/detail.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/identity/users/templates/users/index.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/identity/users/templates/users/update.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/identity/users/tests.py
@@ -557,6 +688,8 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/access_and_security/security_groups/urls.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/access_and_security/security_groups/views.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/access_and_security/tabs.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/api_access/_credentials.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/api_access/credentials.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/api_access/ec2rc.sh.template
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/api_access/openrc.sh.template
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/floating_ips/_allocate.html
@@ -565,6 +698,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/keypairs/_create.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/keypairs/_import.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/keypairs/create.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/keypairs/detail.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/keypairs/download.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/keypairs/import.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/access_and_security/templates/access_and_security/security_groups/_add_rule.html
@@ -600,6 +734,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/containers/templates/containers/upload.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/containers/tests.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/containers/urls.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/containers/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/containers/views.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/dashboard.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/__init__.py
@@ -635,6 +770,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/clusters/templates/data_processing.clusters/_details.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/clusters/templates/data_processing.clusters/_instances_details.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/clusters/templates/data_processing.clusters/_nodegroups_details.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/clusters/templates/data_processing.clusters/_rich_status.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/clusters/templates/data_processing.clusters/clusters.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/clusters/templates/data_processing.clusters/configure.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/clusters/templates/data_processing.clusters/create.html
@@ -659,6 +795,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/data_image_registry/templates/data_processing.data_image_registry/edit_tags.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/data_image_registry/templates/data_processing.data_image_registry/image_registry.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/data_image_registry/templates/data_processing.data_image_registry/register_image.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/data_image_registry/tests.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/data_image_registry/urls.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/data_image_registry/views.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/data_plugins/__init__.py
@@ -679,7 +816,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/data_sources/templates/data_processing.data_sources/_details.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/data_sources/templates/data_processing.data_sources/create.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/data_sources/templates/data_processing.data_sources/data_sources.html
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/data_sources/templates/data_processing.data_sources/data_sources_form_script.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/data_sources/templates/data_processing.data_sources/details.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/data_sources/tests.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/data_sources/urls.py
@@ -697,7 +833,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/job_binaries/templates/data_processing.job_binaries/create.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/job_binaries/templates/data_processing.job_binaries/details.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/job_binaries/templates/data_processing.job_binaries/job_binaries.html
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/job_binaries/templates/data_processing.job_binaries/job_binaries_form_script.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/job_binaries/tests.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/job_binaries/urls.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/job_binaries/views.py
@@ -756,6 +891,21 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/utils/helpers.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/utils/neutron_support.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/utils/workflow_helpers.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/wizard/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/wizard/forms.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/wizard/panel.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/wizard/templates/data_processing.wizard/_job_type_select.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/wizard/templates/data_processing.wizard/_job_type_select_help.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/wizard/templates/data_processing.wizard/_plugin_select.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/wizard/templates/data_processing.wizard/_plugin_select_help.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/wizard/templates/data_processing.wizard/cluster_guide.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/wizard/templates/data_processing.wizard/job_type_select.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/wizard/templates/data_processing.wizard/jobex_guide.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/wizard/templates/data_processing.wizard/plugin_select.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/wizard/templates/data_processing.wizard/wizard.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/wizard/tests.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/wizard/urls.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/data_processing/wizard/views.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/database_backups/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/database_backups/panel.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/database_backups/tables.py
@@ -779,17 +929,18 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/databases/templates/databases/_detail_overview_mongodb.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/databases/templates/databases/_detail_overview_mysql.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/databases/templates/databases/_detail_overview_redis.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/databases/templates/databases/_launch_advanced_help.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/databases/templates/databases/_launch_details_help.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/databases/templates/databases/_launch_initialize_help.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/databases/templates/databases/_launch_network_help.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/databases/templates/databases/_launch_networks.html
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/databases/templates/databases/_launch_restore_help.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/databases/templates/databases/_resize_instance.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/databases/templates/databases/_resize_volume.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/databases/templates/databases/detail.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/databases/templates/databases/index.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/databases/templates/databases/launch.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/databases/templates/databases/resize_instance.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/databases/templates/databases/resize_volume.html
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/databases/templates/databases/update.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/databases/tests.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/databases/urls.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/databases/views.py
@@ -800,21 +951,27 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/panel.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/tables.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/tabs.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/templates/firewalls/_add_router_to_firewall.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/templates/firewalls/_firewall_details.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/templates/firewalls/_insert_rule_to_policy.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/templates/firewalls/_policy_details.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/templates/firewalls/_remove_router_from_firewall.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/templates/firewalls/_remove_rule_from_policy.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/templates/firewalls/_rule_details.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/templates/firewalls/_update_router_help.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/templates/firewalls/_update_routers.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/templates/firewalls/_update_rule_help.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/templates/firewalls/_update_rules.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/templates/firewalls/_updatefirewall.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/templates/firewalls/_updatepolicy.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/templates/firewalls/_updaterule.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/templates/firewalls/add_router_to_firewall.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/templates/firewalls/addfirewall.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/templates/firewalls/addpolicy.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/templates/firewalls/addrule.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/templates/firewalls/details_tabs.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/templates/firewalls/insert_rule_to_policy.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/templates/firewalls/remove_router_from_firewall.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/templates/firewalls/remove_rule_from_policy.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/templates/firewalls/updatefirewall.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/firewalls/templates/firewalls/updatepolicy.html
@@ -876,6 +1033,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/instances/templates/instances/detail.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/instances/templates/instances/index.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/instances/templates/instances/rebuild.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/instances/templates/instances/serial_console.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/instances/tests.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/instances/urls.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/instances/utils.py
@@ -953,6 +1111,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/networks/templates/networks/_detail_overview.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/networks/templates/networks/_network_ips.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/networks/templates/networks/_update.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/networks/templates/networks/create.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/networks/templates/networks/detail.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/networks/templates/networks/index.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/networks/templates/networks/ports/_detail_overview.html
@@ -962,7 +1121,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/networks/templates/networks/ports/update.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/networks/templates/networks/subnets/_detail_overview.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/networks/templates/networks/subnets/detail.html
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/networks/templates/networks/subnets/index.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/networks/templates/networks/update.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/networks/tests.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/networks/urls.py
@@ -1015,6 +1173,16 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/forms.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/mappings.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/panel.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/resource_types/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/resource_types/panel.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/resource_types/tables.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/resource_types/tabs.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/resource_types/templates/stacks.resource_types/_details.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/resource_types/templates/stacks.resource_types/details.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/resource_types/templates/stacks.resource_types/index.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/resource_types/tests.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/resource_types/urls.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/resource_types/views.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/sro.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/tables.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/tabs.py
@@ -1024,15 +1192,22 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/templates/stacks/_detail_overview.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/templates/stacks/_detail_resources.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/templates/stacks/_detail_topology.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/templates/stacks/_preview.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/templates/stacks/_preview_details.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/templates/stacks/_preview_template.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/templates/stacks/_resource_info.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/templates/stacks/_resource_overview.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/templates/stacks/_select_template.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/templates/stacks/_stack_info.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/templates/stacks/_stack_template.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/templates/stacks/_update.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/templates/stacks/change_template.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/templates/stacks/create.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/templates/stacks/detail.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/templates/stacks/index.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/templates/stacks/preview.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/templates/stacks/preview_details.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/templates/stacks/preview_template.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/templates/stacks/resource.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/templates/stacks/select_template.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/stacks/templates/stacks/update.html
@@ -1067,27 +1242,36 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/snapshots/_update.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/snapshots/detail.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/snapshots/update.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/_accept_transfer.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/_attach.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/_create.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/_create_snapshot.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/_create_transfer.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/_detail_overview.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/_encryption_detail_overview.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/_extend.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/_extend_limits.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/_limits.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/_retype.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/_show_transfer.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/_snapshot_limits.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/_update.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/_upload_to_image.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/accept_transfer.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/attach.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/create.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/create_snapshot.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/create_transfer.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/detail.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/encryption_detail.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/extend.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/retype.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/show_transfer.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/update.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/templates/volumes/volumes/upload_to_image.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/test.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/urls.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/views.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/volumes/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/project/volumes/volumes/forms.py
@@ -1134,7 +1318,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/router/nexus1000v/templates/nexus1000v/network_profile/index.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/router/nexus1000v/templates/nexus1000v/policy_profile/index.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/router/nexus1000v/templates/nexus1000v/update_network_profile.html
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/router/nexus1000v/tests.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/router/nexus1000v/urls.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/router/nexus1000v/views.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/dashboards/settings/__init__.py
@@ -1184,21 +1367,87 @@
     path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/management/commands/horizon.wsgi.template \
     pkg.depend.bypass-generate=.*
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/management/commands/make_web_conf.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/management/commands/migrate_settings.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/openstack/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/openstack/common/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/openstack/common/excutils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/openstack/common/_i18n.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/openstack/common/fileutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/openstack/common/gettextutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/openstack/common/importutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/openstack/common/jsonutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/openstack/common/local.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/openstack/common/log.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/openstack/common/policy.py
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/openstack/common/strutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/openstack/common/timeutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/overrides.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/policy.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/policy_backend.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/settings.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/action-list/action-list.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/action-list/action-list.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/action-list/action-list.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/action-list/action.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/action-list/button-tooltip.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/action-list/menu-item.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/action-list/menu.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/action-list/single-button.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/action-list/split-button.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/action-list/warning-tooltip.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/bind-scope/bind-scope.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/bind-scope/bind-scope.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/charts/chart-tooltip.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/charts/chart-tooltip.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/charts/chart-tooltip.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/charts/charts.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/charts/pie-chart.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/charts/pie-chart.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/charts/pie-chart.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/charts/pie-chart.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/form/form.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/form/form.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/help-panel/help-panel.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/help-panel/help-panel.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/help-panel/help-panel.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/help-panel/help-panel.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/login/login.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/login/login.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/magic-search/magic-search.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/magic-search/magic-search.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/magic-search/magic-search.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/metadata-display/metadata-display.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/metadata-display/metadata-display.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/metadata-display/metadata-display.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/metadata-display/metadata-display.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/metadata-tree/metadata-tree-item.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/metadata-tree/metadata-tree-service.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/metadata-tree/metadata-tree.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/metadata-tree/metadata-tree.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/metadata-tree/metadata-tree.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/metadata-tree/metadata-tree.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/modal/modal-wait-spinner.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/modal/modal-wait-spinner.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/modal/modal-wait-spinner.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/modal/modal.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/modal/modal.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/modal/simple-modal.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/styles.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/table/basic-table.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/table/basic-table.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/table/search-bar.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/table/table.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/table/table.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/table/table.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/transfer-table/allocated.html.example
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/transfer-table/available.html.example
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/transfer-table/transfer-table.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/transfer-table/transfer-table.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/transfer-table/transfer-table.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/transfer-table/transfer-table.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/validators/validators.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/validators/validators.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/widget.module.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/wizard/wizard.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/wizard/wizard.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/wizard/wizard.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/wizard/wizard.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/workflow/workflow.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/angular/workflow/workflow.spec.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.eot
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.svg
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.ttf
@@ -1291,15 +1540,21 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/bootstrap/scss/bootstrap/mixins/_text-emphasis.scss
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/bootstrap/scss/bootstrap/mixins/_text-overflow.scss
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/bootstrap/scss/bootstrap/mixins/_vendor-prefixes.scss
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/css/24c5e4c41a70.css
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/css/rickshaw.css
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/css/solaris.css
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/custom/_styles.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/custom/_variables.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/cloud-services/cloud-services.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/cloud-services/cloud-services.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/css/solaris1.css
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/css/solaris2.css
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/dashboard.module.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/dashboard.module.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/dashboard.scss
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/fonts/Anivers_Regular-webfont.eot
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/fonts/Anivers_Regular-webfont.svg
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/fonts/Anivers_Regular-webfont.ttf
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/fonts/Anivers_Regular-webfont.woff
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/img/OpenStack_Dashboard_txt.png
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/img/OpenStack_banner.png
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/img/Openstack_banner.png
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/img/OracleSolaris_Logo.png
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/img/OracleSolaris_login_banner.png
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/img/Oracle_Logo.png
@@ -1312,8 +1567,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/img/dots.png
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/img/drag.png
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/img/drop_arrow.png
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/img/dropdown_dwn.png
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/img/dropdown_ena.png
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/img/favicon.ico
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/img/header_shadow.png
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/img/lb-gray.gif
@@ -1332,6 +1585,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/img/server-green.svg
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/img/server-red.svg
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/img/server.png
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/img/sidebar_bg.png
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/img/spinner.gif
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/img/stack-gray.gif
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/img/stack-gray.svg
@@ -1344,28 +1598,98 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/img/unknown-green.svg
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/img/unknown-red.svg
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/img/up_arrow.png
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/js/a1c6730ae0fb.js
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/js/db5b3a23c36d.js
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/js/ff63d45232c5.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/js/76adef98ad14.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/js/87acf9c3aa9c.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/js/ef8eeabca84b.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/configuration/configuration.help.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/configuration/configuration.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/configuration/configuration.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/configuration/configuration.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/configuration/configuration.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/configuration/load-edit.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/configuration/load-edit.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/flavor/flavor.help.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/flavor/flavor.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/flavor/flavor.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/flavor/flavor.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/flavor/flavor.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/flavor/select-flavor-table.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/flavor/select-flavor-table.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/keypair/create-keypair.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/keypair/import-keypair.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/keypair/keypair-details.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/keypair/keypair.help.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/keypair/keypair.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/keypair/keypair.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/keypair/keypair.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/keypair/keypair.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/keypair/new-keypair.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/launch-instance.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/launch-instance.model.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/launch-instance.model.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/launch-instance.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/launch-instance.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/network/network.help.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/network/network.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/network/network.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/network/network.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/network/network.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/security-groups/keypair-details.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/security-groups/security-group-details.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/security-groups/security-groups.help.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/security-groups/security-groups.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/security-groups/security-groups.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/security-groups/security-groups.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/security-groups/security-groups.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/source/source-details.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/source/source.help.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/source/source.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/source/source.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/source/source.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/launch-instance/source/source.spec.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/manifest.json
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/scss/_accordion_nav.scss
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/scss/_context_selection.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/scss/_mixins.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/scss/_splash.scss
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/scss/_variables.scss
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/scss/components/resource_browser.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/scss/components/_accordion_nav.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/scss/components/_charts.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/scss/components/_inline_edit.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/scss/components/_network_topology.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/scss/components/_resource_browser.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/scss/components/_topbar.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/scss/components/_workflow.scss
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/scss/horizon.scss
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/scss/horizon_charts.scss
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/scss/horizon_workflow.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/scss/serial_console.css
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/workflow/workflow.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/dashboard/workflow/workflow.spec.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/angular/controllers/dummy.js
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/angular/controllers/metadata-widget-controller.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/angular/controllers/modal-form-update-metadata-ctrl.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/angular/controllers/namespace-controller.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/angular/directives/forms.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/angular/directives/serialConsole.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/angular/filters/filters.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/angular/filters/filters.spec.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/angular/horizon.conf.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/angular/horizon.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/angular/hz.api.module.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/angular/services/horizon.utils.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/angular/services/hz.api.cinder.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/angular/services/hz.api.config.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/angular/services/hz.api.config.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/angular/services/hz.api.glance.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/angular/services/hz.api.keystone.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/angular/services/hz.api.neutron.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/angular/services/hz.api.nova.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/angular/services/hz.api.policy.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/angular/services/hz.api.security-group.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/angular/services/hz.api.service.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/angular/services/hz.api.service.spec.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/horizon.accordion_nav.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/horizon.communication.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/horizon.d3barchart.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/horizon.d3linechart.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/horizon.d3piechart.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/horizon.datepickers.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/horizon.firewalls.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/horizon.forms.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/horizon.formset_table.js
@@ -1375,6 +1699,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/horizon.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/horizon.membership.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/horizon.messages.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/horizon.metering.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/horizon.modals.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/horizon.networktopology.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/horizon.quota.js
@@ -1385,6 +1710,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/js/horizon.users.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/angular/angular-animate.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/angular/angular-aria.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/angular/angular-bootstrap.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/angular/angular-cookies.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/angular/angular-csp.css
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/angular/angular-loader.js
@@ -1397,6 +1723,8 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/angular/angular-touch.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/angular/angular.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/angular/errors.json
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/angular/lrdragndrop.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/angular/smart-table.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/angular/version.json
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/angular/version.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/bootstrap_datepicker/bootstrap-datepicker.js
@@ -1455,15 +1783,17 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/bootstrap_datepicker/locales/bootstrap-datepicker.zh-TW.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/d3.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/css/font-awesome.css
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/css/font-awesome.css.map
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/css/font-awesome.min.css
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/fonts/FontAwesome.otf
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/fonts/fontawesome-webfont.eot
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/fonts/fontawesome-webfont.svg
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/fonts/fontawesome-webfont.ttf
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/fonts/fontawesome-webfont.woff
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/fonts/fontawesome-webfont.woff2
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/less/animated.less
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/less/bordered-pulled.less
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/less/core.less
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/less/extras.less
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/less/fixed-width.less
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/less/font-awesome.less
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/less/icons.less
@@ -1472,12 +1802,11 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/less/mixins.less
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/less/path.less
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/less/rotated-flipped.less
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/less/spinning.less
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/less/stacked.less
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/less/variables.less
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/scss/_animated.scss
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/scss/_bordered-pulled.scss
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/scss/_core.scss
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/scss/_extras.scss
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/scss/_fixed-width.scss
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/scss/_icons.scss
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/scss/_larger.scss
@@ -1485,7 +1814,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/scss/_mixins.scss
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/scss/_path.scss
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/scss/_rotated-flipped.scss
-file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/scss/_spinning.scss
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/scss/_stacked.scss
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/scss/_variables.scss
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/font-awesome/scss/font-awesome.scss
@@ -1958,10 +2286,27 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/jquery/jquery.quicksearch.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/jquery/jquery.tablesorter.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/jsencrypt/jsencrypt.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/magic_search/magic_search.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/magic_search/magic_search.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/magic_search/magic_search.scss
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/rickshaw.css
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/rickshaw.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/spin.jquery.js
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/spin.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/lib/term.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/tests/instances.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/tests/jasmine/utils.spec.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/tests/messages.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/tests/modals.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/tests/tables.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/horizon/tests/templates.js
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/themes/blue/_styles.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/themes/blue/_variables.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/themes/default/_styles.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/themes/default/_variables.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/themes/webroot/_styles.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static/themes/webroot/_variables.scss
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/static_settings.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/templates/403.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/templates/404.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/templates/500.html
@@ -1971,6 +2316,8 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/templates/context_selection/_overview.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/templates/context_selection/_project_list.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/templates/context_selection/_region_list.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/templates/jasmine/index.html
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/templates/jasmine/jasmine.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/templates/solaris/_stylesheets.html
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/templatetags/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/templatetags/context_selection.py
@@ -1982,10 +2329,12 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/usage/views.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/utils/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/utils/filters.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/utils/metering.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/utils/settings.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/views.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_dashboard/wsgi/django.wsgi
 dir  path=var/lib/openstack_dashboard owner=webservd group=webservd
+dir  path=var/log/openstack_dashboard owner=webservd group=webservd
 #
 license horizon.license license="Apache v2.0" \
     com.oracle.info.description="Horizon, the OpenStack web based user interface service" \
@@ -1995,69 +2344,94 @@
 license bootstrap-datepicker.license \
     license="Apache v2.0 (bootstrap-datepicker)" \
     com.oracle.info.description="Bootstrap Datepicker JavaScript Library" \
-    com.oracle.info.name=$(COMPONENT_NAME) \
+    com.oracle.info.name=$(COMPONENT_NAME_3) \
     com.oracle.info.tpno=$(TPNO_BOOTSTRAP_DP) \
     com.oracle.info.version=$(VERSION_BOOTSTRAP_DP)
 license hogan.license license="Apache v2.0 (hogan)" \
     com.oracle.info.description="Hogan JavaScript Library" \
-    com.oracle.info.name=$(COMPONENT_NAME) com.oracle.info.tpno=$(TPNO_HOGAN) \
-    com.oracle.info.version=$(VERSION_HOGAN)
+    com.oracle.info.name=$(COMPONENT_NAME_7) \
+    com.oracle.info.tpno=$(TPNO_HOGAN) com.oracle.info.version=$(VERSION_HOGAN)
+license magic-search.license license="Apache v2.0 (magic-search)" \
+    com.oracle.info.description="Magic-Search JavaScript Library" \
+    com.oracle.info.name=$(COMPONENT_NAME_17) \
+    com.oracle.info.tpno=$(TPNO_MAGIC_SEARCH) \
+    com.oracle.info.version=$(VERSION_MAGIC_SEARCH)
 license d3.license license="BSD, Apache v2.0 (d3)" \
     com.oracle.info.description="D3 JavaScript Library" \
-    com.oracle.info.name=$(COMPONENT_NAME) com.oracle.info.tpno=$(TPNO_D3) \
+    com.oracle.info.name=$(COMPONENT_NAME_5) com.oracle.info.tpno=$(TPNO_D3) \
     com.oracle.info.version=$(VERSION_D3)
 license bootstrap-scss.license license="MIT (Bootstrap-SCSS)" \
     com.oracle.info.description="Bootstrap SCSS JavaScript Library" \
-    com.oracle.info.name=$(COMPONENT_NAME) \
+    com.oracle.info.name=$(COMPONENT_NAME_4) \
     com.oracle.info.tpno=$(TPNO_BOOTSTRAP_SCSS) \
     com.oracle.info.version=$(VERSION_BOOTSTRAP_SCSS)
+license angular-bootstrap.license license="MIT (angular-bootstrap)" \
+    com.oracle.info.description="Angular Bootstrap JavaScript Library" \
+    com.oracle.info.name=$(COMPONENT_NAME_20) \
+    com.oracle.info.tpno=$(TPNO_ANGULAR_BOOTSTRAP) \
+    com.oracle.info.version=$(VERSION_ANGULAR_BS)
+license angular-lrdragndrop.license license="MIT (angular-lrdragndrop)" \
+    com.oracle.info.description="lrDragNDrop JavaScript Library" \
+    com.oracle.info.name=$(COMPONENT_NAME_16) \
+    com.oracle.info.tpno=$(TPNO_ANGULAR_LR_DND) \
+    com.oracle.info.version=$(VERSION_LR_DND)
 license angular.license license="MIT (angularjs)" \
     com.oracle.info.description="AngularJS JavaScript Library" \
-    com.oracle.info.name=$(COMPONENT_NAME) \
+    com.oracle.info.name=$(COMPONENT_NAME_2) \
     com.oracle.info.tpno=$(TPNO_ANGULAR) \
     com.oracle.info.version=$(VERSION_ANGULAR)
 license jquery.license license="MIT (jquery)" \
     com.oracle.info.description="jQuery JavaScript Library" \
-    com.oracle.info.name=$(COMPONENT_NAME) \
+    com.oracle.info.name=$(COMPONENT_NAME_8) \
     com.oracle.info.tpno=$(TPNO_JQUERY) \
     com.oracle.info.version=$(VERSION_JQUERY)
 license jquery-migrate.license license="MIT (jquery-migrate)" \
     com.oracle.info.description="jQuery-Migrate JavaScript Library" \
-    com.oracle.info.name=$(COMPONENT_NAME) \
+    com.oracle.info.name=$(COMPONENT_NAME_9) \
     com.oracle.info.tpno=$(TPNO_JQUERY_MIGRATE) \
     com.oracle.info.version=$(VERSION_JQUERY_MIGRATE)
 license jquery-quicksearch.license license="MIT (jquery-quicksearch)" \
     com.oracle.info.description="jQuery-Quicksearch JavaScript Library" \
-    com.oracle.info.name=$(COMPONENT_NAME) \
+    com.oracle.info.name=$(COMPONENT_NAME_11) \
     com.oracle.info.tpno=$(TPNO_JQUERY_QUICKSEARCH) \
     com.oracle.info.version=$(VERSION_JQUERY_QS)
 license jquery-tablesorter.license license="MIT (jquery-tablesorter)" \
     com.oracle.info.description="jQuery-Tablesorter JavaScript Library" \
-    com.oracle.info.name=$(COMPONENT_NAME) \
+    com.oracle.info.name=$(COMPONENT_NAME_12) \
     com.oracle.info.tpno=$(TPNO_JQUERY_TABLESORTER) \
     com.oracle.info.version=$(VERSION_JQUERY_TS)
 license jquery-ui.license license="MIT (jquery-ui)" \
     com.oracle.info.description="jQuery-UI JavaScript Library" \
-    com.oracle.info.name=$(COMPONENT_NAME) \
+    com.oracle.info.name=$(COMPONENT_NAME_10) \
     com.oracle.info.tpno=$(TPNO_JQUERY_UI) \
     com.oracle.info.version=$(VERSION_JQUERY_UI)
 license jsencrypt.license license="MIT (jsencrypt)" \
     com.oracle.info.description="JSEncrypt JavaScript Library" \
-    com.oracle.info.name=$(COMPONENT_NAME) \
+    com.oracle.info.name=$(COMPONENT_NAME_13) \
     com.oracle.info.tpno=$(TPNO_JSENCRYPT) \
     com.oracle.info.version=$(VERSION_JSENCRYPT)
+license smart-table.license license="MIT (smart-table)" \
+    com.oracle.info.description="Smart-Table JavaScript Library" \
+    com.oracle.info.name=$(COMPONENT_NAME_18) \
+    com.oracle.info.tpno=$(TPNO_SMART_TABLE) \
+    com.oracle.info.version=$(VERSION_SMART_TABLE)
 license spin.license license="MIT (spin)" \
     com.oracle.info.description="Spin JavaScript Library" \
-    com.oracle.info.name=$(COMPONENT_NAME) com.oracle.info.tpno=$(TPNO_SPIN) \
-    com.oracle.info.version=$(VERSION_SPIN)
+    com.oracle.info.name=$(COMPONENT_NAME_15) \
+    com.oracle.info.tpno=$(TPNO_SPIN) com.oracle.info.version=$(VERSION_SPIN)
+license termjs.license license="MIT (term.js)" \
+    com.oracle.info.description="Term.js JavaScript Library" \
+    com.oracle.info.name=$(COMPONENT_NAME_19) \
+    com.oracle.info.tpno=$(TPNO_TERM_JS) \
+    com.oracle.info.version=$(VERSION_TERM_JS)
 license rickshaw.license license="MIT, Apache v2.0 (rickshaw)" \
     com.oracle.info.description="Rickshaw JavaScript Library" \
-    com.oracle.info.name=$(COMPONENT_NAME) \
+    com.oracle.info.name=$(COMPONENT_NAME_14) \
     com.oracle.info.tpno=$(TPNO_RICKSHAW) \
     com.oracle.info.version=$(VERSION_RICKSHAW)
 license font-awesome.license license="MIT, OFL (font-awesome)" \
     com.oracle.info.description="Font-Awesome JavaScript Library" \
-    com.oracle.info.name=$(COMPONENT_NAME) \
+    com.oracle.info.name=$(COMPONENT_NAME_6) \
     com.oracle.info.tpno=$(TPNO_FONT_AWESOME) \
     com.oracle.info.version=$(VERSION_FONT_AWESOME)
 
@@ -2069,6 +2443,9 @@
 # to flush this out.
 depend type=group fmri=library/python/simplejson-$(PYV)
 
+# 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
+
 # force a dependency on the Python runtime
 depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
     pkg.debug.depend.path=usr/bin
@@ -2133,6 +2510,9 @@
 # force a dependency on pbr; pkgdepend work is needed to flush this out
 depend type=require fmri=library/python/pbr-$(PYV)
 
+# force a dependency on pint; pkgdepend work is needed to flush this out
+depend type=require fmri=library/python/pint-$(PYV)
+
 # force a dependency on pytz; pkgdepend work is needed to flush this out
 depend type=require fmri=library/python/pytz-$(PYV)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/horizon/magic-search.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,211 @@
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+    		    		 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright {yyyy} {name of copyright owner}
+
+   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.
--- a/components/openstack/horizon/patches/01-osprofiler.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/horizon/patches/01-osprofiler.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,8 +1,8 @@
 In-house patch to address
 https://bugs.launchpad.net/osprofiler/+bug/1361235 in Horizon.
 
---- horizon-2014.2.1/openstack_dashboard/wsgi/django.wsgi.orig	2014-11-13 15:02:19.599694847 -0700
-+++ horizon-2014.2.1/openstack_dashboard/wsgi/django.wsgi	2014-11-13 15:03:31.633159017 -0700
+--- horizon-2015.1.0/openstack_dashboard/wsgi/django.wsgi.orig	2014-11-13 15:02:19.599694847 -0700
++++ horizon-2015.1.0/openstack_dashboard/wsgi/django.wsgi	2014-11-13 15:03:31.633159017 -0700
 @@ -5,7 +5,12 @@ import django.core.handlers.wsgi
  from django.conf import settings
  
--- a/components/openstack/horizon/patches/02-change-angular-imports.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-In-house patch to change how angularjs is imported.  In
-XStatic-Angular-1.3.7.0, angular_cookies and angular_mock were rolled
-into the angular pacakge.
-
---- horizon-2014.2.1/openstack_dashboard/settings.py.orig	2015-01-15 19:27:56.738322606 -0700
-+++ horizon-2014.2.1/openstack_dashboard/settings.py	2015-01-15 19:28:26.944716700 -0700
-@@ -24,8 +24,6 @@ import warnings
- from django.utils.translation import ugettext_lazy as _
- import xstatic.main
- import xstatic.pkg.angular
--import xstatic.pkg.angular_cookies
--import xstatic.pkg.angular_mock
- import xstatic.pkg.bootstrap_datepicker
- import xstatic.pkg.bootstrap_scss
- import xstatic.pkg.d3
-@@ -155,10 +153,6 @@ STATICFILES_FINDERS = (
- STATICFILES_DIRS = [
-     ('horizon/lib/angular',
-         xstatic.main.XStatic(xstatic.pkg.angular).base_dir),
--    ('horizon/lib/angular',
--        xstatic.main.XStatic(xstatic.pkg.angular_cookies).base_dir),
--    ('horizon/lib/angular',
--        xstatic.main.XStatic(xstatic.pkg.angular_mock).base_dir),
-     ('horizon/lib/bootstrap_datepicker',
-         xstatic.main.XStatic(xstatic.pkg.bootstrap_datepicker).base_dir),
-     ('bootstrap',
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/horizon/patches/02-remove_js.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,64 @@
+In-house patch to remove unneeded JS libraries.
+
+--- horizon-2015.1.0/horizon/site_urls.py.orig      2015-05-01 14:03:57.627879183 -0600
++++ horizon-2015.1.0/horizon/site_urls.py        2015-05-01 14:04:00.275015653 -0600
+@@ -22,8 +22,6 @@ from django.conf.urls import patterns
+ from django.conf.urls import url
+ from django.views.generic import TemplateView  # noqa
+
+-from horizon.test.jasmine import jasmine
+-
+ urlpatterns = patterns(
+     'horizon.views',
+     url(r'^home/$', 'user_home', name='user_home')
+@@ -40,11 +38,3 @@ urlpatterns += patterns(
+         name="set_language"),
+     url(r'^i18n/', include('django.conf.urls.i18n'))
+ )
+-
+-if settings.DEBUG:
+-    urlpatterns += patterns(
+-        '',
+-        url(r'^qunit/$',
+-            TemplateView.as_view(template_name="horizon/qunit.html"),
+-            name='qunit_tests'),
+-        url(r'^jasmine/(.*?)$', jasmine.dispatcher))
+
+--- horizon-2015.1.0/openstack_dashboard/static_settings.py.orig    2015-05-01 14:06:07.878347595 -0600
++++ horizon-2015.1.0/openstack_dashboard/static_settings.py  2015-05-01 14:06:54.565608248 -0600
+@@ -27,7 +27,6 @@ import xstatic.pkg.bootstrap_scss
+ import xstatic.pkg.d3
+ import xstatic.pkg.font_awesome
+ import xstatic.pkg.hogan
+-import xstatic.pkg.jasmine
+ import xstatic.pkg.jquery
+ import xstatic.pkg.jquery_migrate
+ import xstatic.pkg.jquery_quicksearch
+@@ -35,7 +34,6 @@ import xstatic.pkg.jquery_tablesorter
+ import xstatic.pkg.jquery_ui
+ import xstatic.pkg.jsencrypt
+ import xstatic.pkg.magic_search
+-import xstatic.pkg.qunit
+ import xstatic.pkg.rickshaw
+ import xstatic.pkg.spin
+ import xstatic.pkg.termjs
+@@ -70,9 +68,6 @@ def get_staticfiles_dirs(webroot='/'):
+         ('horizon/lib/font-awesome',
+             xstatic.main.XStatic(xstatic.pkg.font_awesome,
+                                  root_url=webroot).base_dir),
+-        ('horizon/lib/jasmine',
+-            xstatic.main.XStatic(xstatic.pkg.jasmine,
+-                                 root_url=webroot).base_dir),
+         ('horizon/lib/jquery',
+             xstatic.main.XStatic(xstatic.pkg.jquery,
+                                  root_url=webroot).base_dir),
+@@ -91,9 +86,6 @@ def get_staticfiles_dirs(webroot='/'):
+         ('horizon/lib/magic_search',
+             xstatic.main.XStatic(xstatic.pkg.magic_search,
+                                  root_url=webroot).base_dir),
+-        ('horizon/lib/qunit',
+-            xstatic.main.XStatic(xstatic.pkg.qunit,
+-                                 root_url=webroot).base_dir),
+         ('horizon/lib',
+             xstatic.main.XStatic(xstatic.pkg.rickshaw,
+                                  root_url=webroot).base_dir),
--- a/components/openstack/horizon/patches/03-remove-qunit.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-In-house patch to remove qunit from Horizon.  This JavaScript library
-is only used for testing and not used by Horizon during normal
-operation.
-
---- horizon-2014.2.1/horizon/site_urls.py.orig      2015-02-02 14:37:19.045936926 -0700
-+++ horizon-2014.2.1/horizon/site_urls.py        2015-02-02 14:37:41.486751441 -0700
-@@ -41,7 +41,4 @@ urlpatterns += patterns('',
-
- if settings.DEBUG:
-     urlpatterns += patterns('',
--        url(r'^qunit/$',
--            TemplateView.as_view(template_name="horizon/qunit.html"),
--            name='qunit_tests'),
-         url(r'^jasmine/(.*?)$', jasmine.dispatcher))
-
---- horizon-2014.2.1/openstack_dashboard/settings.py.orig 2015-02-02 14:40:40.569743749 -0700
-+++ horizon-2014.2.1/openstack_dashboard/settings.py 2015-02-02 14:40:49.741507297 -0700
-@@ -36,7 +36,6 @@ import xstatic.pkg.jquery_quicksearch
- import xstatic.pkg.jquery_tablesorter
- import xstatic.pkg.jquery_ui
- import xstatic.pkg.jsencrypt
--import xstatic.pkg.qunit
- import xstatic.pkg.rickshaw
- import xstatic.pkg.spin
-
-@@ -175,8 +174,6 @@ STATICFILES_DIRS = [
-         xstatic.main.XStatic(xstatic.pkg.jquery_tablesorter).base_dir),
-     ('horizon/lib/jsencrypt',
-         xstatic.main.XStatic(xstatic.pkg.jsencrypt).base_dir),
--    ('horizon/lib/qunit',
--        xstatic.main.XStatic(xstatic.pkg.qunit).base_dir),
-     ('horizon/lib',
-         xstatic.main.XStatic(xstatic.pkg.rickshaw).base_dir),
-     ('horizon/lib',
--- a/components/openstack/horizon/patches/04-remove-jasmine.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-In-house patch to remove jasmine.js from Horizon.  This JavaScript
-library is only used for testing and not used by Horizon during normal
-operation.
-
---- horizon-2014.2.1/horizon/site_urls.py.orig    2015-02-02 15:31:57.209242227 -0700
-+++ horizon-2014.2.1/horizon/site_urls.py        2015-02-02 15:32:11.276168850 -0700
-@@ -22,8 +22,6 @@ from django.conf.urls import patterns
- from django.conf.urls import url
- from django.views.generic import TemplateView  # noqa
-
--from horizon.test.jasmine import jasmine
--
- urlpatterns = patterns('horizon.views',
-     url(r'^home/$', 'user_home', name='user_home')
- )
-@@ -38,7 +36,3 @@ urlpatterns += patterns('',
-         name="set_language"),
-     url(r'^i18n/', include('django.conf.urls.i18n'))
- )
--
--if settings.DEBUG:
--    urlpatterns += patterns('',
--        url(r'^jasmine/(.*?)$', jasmine.dispatcher))
-
---- horizon-2014.2.1/openstack_dashboard/settings.py.orig 2015-02-02 15:33:37.928460972 -0700
-+++ horizon-2014.2.1/openstack_dashboard/settings.py 2015-02-02 15:33:58.344285143 -0700
-@@ -29,7 +29,6 @@ import xstatic.pkg.bootstrap_scss
- import xstatic.pkg.d3
- import xstatic.pkg.font_awesome
- import xstatic.pkg.hogan
--import xstatic.pkg.jasmine
- import xstatic.pkg.jquery
- import xstatic.pkg.jquery_migrate
- import xstatic.pkg.jquery_quicksearch
-@@ -162,8 +161,6 @@ STATICFILES_DIRS = [
-         xstatic.main.XStatic(xstatic.pkg.hogan).base_dir),
-     ('horizon/lib/font-awesome',
-         xstatic.main.XStatic(xstatic.pkg.font_awesome).base_dir),
--    ('horizon/lib/jasmine-1.3.1',
--        xstatic.main.XStatic(xstatic.pkg.jasmine).base_dir),
-     ('horizon/lib/jquery',
-         xstatic.main.XStatic(xstatic.pkg.jquery).base_dir),
-     ('horizon/lib/jquery',
--- a/components/openstack/horizon/patches/05-disable-unsupported-bootsource.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/horizon/patches/05-disable-unsupported-bootsource.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,9 +1,9 @@
-Internal patch to only enable the current supported boot source (Boot
+Internal patch to only enable the current supported boot source option (Boot
 from Image).  This patch will not be committed upstream.
 
---- horizon-2014.2.2/openstack_dashboard/dashboards/project/instances/workflows/create_instance.py.~1~	2014-10-16 06:20:50.000000000 -0700
-+++ horizon-2014.2.2/openstack_dashboard/dashboards/project/instances/workflows/create_instance.py	2014-10-24 11:58:37.591052103 -0700
-@@ -141,22 +141,7 @@ class SetInstanceDetailsAction(workflows
+--- horizon-2015.1.2/openstack_dashboard/dashboards/project/instances/workflows/create_instance.py.orig	2015-12-12 12:05:17.628569744 -0500
++++ horizon-2015.1.2/openstack_dashboard/dashboards/project/instances/workflows/create_instance.py	2015-12-12 12:08:12.789789554 -0500
+@@ -153,24 +153,7 @@
          source_type_choices = [
              ('', _("Select source")),
              ("image_id", _("Boot from image")),
@@ -15,14 +15,16 @@
 -            try:
 -                if api.nova.extension_supported("BlockDeviceMappingV2Boot",
 -                                                request):
--                    source_type_choices.append(("volume_image_id",
--                            _("Boot from image (creates a new volume)")))
+-                    source_type_choices.append(
+-                        ("volume_image_id",
+-                         _("Boot from image (creates a new volume)")))
 -            except Exception:
 -                exceptions.handle(request, _('Unable to retrieve extensions '
--                                            'information.'))
+-                                             'information.'))
 -
--            source_type_choices.append(("volume_snapshot_id",
--                    _("Boot from volume snapshot (creates a new volume)")))
+-            source_type_choices.append(
+-                ("volume_snapshot_id",
+-                 _("Boot from volume snapshot (creates a new volume)")))
          self.fields['source_type'].choices = source_type_choices
  
-     def clean(self):
+     @memoized.memoized_method
--- a/components/openstack/horizon/patches/06-remove-security-groups.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/horizon/patches/06-remove-security-groups.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -2,38 +2,41 @@
 security_group quotas and remove the pie chart from the summary page.
 This patch is not suitable for upstream contribution.
 
---- horizon-2014.2.2/horizon/templates/horizon/common/_limit_summary.html.orig 2015-03-04 08:18:40.918393776 -0700
-+++ horizon-2014.2.2/horizon/templates/horizon/common/_limit_summary.html 2015-03-04 08:18:50.752267276 -0700
+--- horizon-2015.1.2/horizon/templates/horizon/common/_limit_summary.html.orig	2015-12-12 12:53:10.612619487 -0500
++++ horizon-2015.1.2/horizon/templates/horizon/common/_limit_summary.html	2015-12-12 12:54:55.097278375 -0500
 @@ -30,12 +30,6 @@
        </strong>
      </div>
-
+ 
 -    <div class="d3_quota_bar">
--      <div class="d3_pie_chart_usage" data-used="{% widthratio usage.limits.totalSecurityGroupsUsed usage.limits.maxSecurityGroups 100 %}"></div>
+-      <div class="d3_pie_chart_usage" data-used="{% quotapercent usage.limits.totalSecurityGroupsUsed usage.limits.maxSecurityGroups %}"></div>
 -      <strong>{% trans "Security Groups" %} <br />
--        {% blocktrans with used=usage.limits.totalSecurityGroupsUsed|intcomma available=usage.limits.maxSecurityGroups|quotainf|intcomma%}Used <span> {{ used }} </span> of <span> {{ available  }} </span>{% endblocktrans %}
+-        {% blocktrans with used=usage.limits.totalSecurityGroupsUsed|intcomma available=usage.limits.maxSecurityGroups|quotainf|intcomma %}Used <span> {{ used }} </span> of <span> {{ available  }} </span>{% endblocktrans %}
 -      </strong>
 -    </div>
    {% if usage.limits.totalVolumesUsed >= 0 %}
      <div class="d3_quota_bar">
-       <div class="d3_pie_chart_usage" data-used="{% widthratio usage.limits.totalVolumesUsed usage.limits.maxTotalVolumes 100 %}"></div>
+       <div class="d3_pie_chart_usage" data-used="{% quotapercent usage.limits.totalVolumesUsed usage.limits.maxTotalVolumes %}"></div>
 
---- horizon-2014.2.2/openstack_dashboard/usage/quotas.py.orig       2015-03-04 13:53:40.924434219 -0700
-+++ horizon-2014.2.2/openstack_dashboard/usage/quotas.py   2015-03-04 13:54:19.737460759 -0700
-@@ -197,12 +197,10 @@ def get_disabled_quotas(request):
+--- horizon-2015.1.2/openstack_dashboard/usage/quotas.py.orig	2015-12-12 12:56:35.439533474 -0500
++++ horizon-2015.1.2/openstack_dashboard/usage/quotas.py	2015-12-12 13:03:03.987504312 -0500
+@@ -235,13 +235,11 @@
          # Remove the nova network quotas
          disabled_quotas.extend(['floating_ips', 'fixed_ips'])
-
+ 
 -        if neutron.is_extension_supported(request, 'security-group'):
 -            # If Neutron security group is supported, disable Nova quotas
 -            disabled_quotas.extend(['security_groups', 'security_group_rules'])
 -        else:
 -            # If Nova security group is used, disable Neutron quotas
 -            disabled_quotas.extend(['security_group', 'security_group_rule'])
+-
 +        # Solaris/EVS do not yet support security_groups, so disable all
 +        # security_group quotas
 +        disabled_quotas.extend(['security_groups', 'security_group_rules'])
 +        disabled_quotas.extend(['security_group', 'security_group_rule'])
-
++        
          try:
              if not neutron.is_quotas_extension_supported(request):
+                 disabled_quotas.extend(NEUTRON_QUOTA_FIELDS)
+		 
--- a/components/openstack/horizon/patches/07-remove-image-source.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/horizon/patches/07-remove-image-source.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -2,15 +2,15 @@
 because copy_volume_from_image is not supported yet.
 This patch will not be committed upstream.
 
---- horizon-2014.2.2/openstack_dashboard/dashboards/project/volumes/volumes/forms.py.orig	2015-03-06 00:02:20.754192323 -0800
-+++ horizon-2014.2.2/openstack_dashboard/dashboards/project/volumes/volumes/forms.py	2015-03-06 00:04:15.272654086 -0800
-@@ -203,6 +203,9 @@
+--- horizon-2015.1.2/openstack_dashboard/dashboards/project/volumes/volumes/forms.py.orig	2015-12-12 16:00:05.464623742 -0500
++++ horizon-2015.1.2/openstack_dashboard/dashboards/project/volumes/volumes/forms.py	2015-12-12 16:08:30.652433673 -0500
+@@ -233,6 +233,9 @@
  
-             images = utils.get_available_images(request,
-                                           request.user.tenant_id)
-+            # Disable the image_source on Solaris
-+            images = False
-+
-             if images:
-                 source_type_choices.append(("image_source", _("Image")))
-                 choices = [('', _("Choose an image"))]
+         images = utils.get_available_images(request,
+                                             request.user.tenant_id)
++        # Disable the image source on Solaris
++        images = False
++        
+         if images:
+             source_type_choices.append(("image_source", _("Image")))
+             choices = [('', _("Choose an image"))]
--- a/components/openstack/horizon/patches/08-_get_reachable_subnets.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/horizon/patches/08-_get_reachable_subnets.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -3,15 +3,15 @@
 report will be filed to cover the regression and eventually this patch
 should be replaced with something official.
 
---- horizon-2014.2.2/openstack_dashboard/api/neutron.py.orig	2015-02-05 09:06:50.000000000 -0800
-+++ horizon-2014.2.2/openstack_dashboard/api/neutron.py	2015-03-22 21:56:14.619688527 -0700
-@@ -411,8 +411,7 @@ class FloatingIpManager(network_base.Flo
+--- horizon-2015.1.2/openstack_dashboard/api/neutron.py.orig	2015-12-12 16:12:01.520290169 -0500
++++ horizon-2015.1.2/openstack_dashboard/api/neutron.py	2015-12-12 16:14:28.179524164 -0500
+@@ -431,8 +431,7 @@
                            in ext_net_ids)]
          reachable_subnets = set([p.fixed_ips[0]['subnet_id'] for p in ports
-                                  if ((p.device_owner ==
--                                      'network:router_interface')
--                                     and (p.device_id in gw_routers))])
-+                                      'network:router_interface'))])
-         return reachable_subnets
- 
-     def list_targets(self):
+                                 if ((p.device_owner in
+-                                     ROUTER_INTERFACE_OWNERS)
+-                                    and (p.device_id in gw_routers))])
++                                     ROUTER_INTERFACE_OWNERS))])
+         # we have to include any shared subnets as well because we may not
+         # have permission to see the router interface to infer connectivity
+         shared = set([s.id for n in network_list(self.request, shared=True)
--- a/components/openstack/horizon/patches/11-requirements.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/horizon/patches/11-requirements.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -7,44 +7,52 @@
 
 pyscss		Not applicable
 
---- horizon-2014.2.2/horizon.egg-info/requires.txt.~1~	2015-02-05 09:08:25.000000000 -0800
-+++ horizon-2014.2.2/horizon.egg-info/requires.txt	2015-02-25 00:24:13.790331173 -0800
-@@ -3,13 +3,10 @@ Django>=1.4.2,<1.7
- django_compressor>=1.4
- django_openstack_auth>=1.1.7,!=1.1.8
- django-pyscss>=1.0.3  # BSD License2 clause
--eventlet>=0.15.1,<0.16.0
+cinderclient	push to version 1.3.1
+
+--- horizon-2015.1.2/horizon.egg-info/requires.txt.orig	2015-10-13 11:09:26.000000000 -0600
++++ horizon-2015.1.2/horizon.egg-info/requires.txt	2015-11-19 15:15:17.976212795 -0700
+@@ -5,19 +5,16 @@ Pint>=0.5 # BSD
+ django-compressor>=1.4
+ django-openstack-auth<1.3.0,>=1.2.0
+ django-pyscss<2.0.0,>=1.0.3 # BSD License2 clause
+-eventlet!=0.17.0,>=0.16.1
  httplib2>=0.7.5
  iso8601>=0.1.9
 -kombu>=2.5.0
- lockfile>=0.8
  netaddr>=0.7.12
--pyScss>=1.2.1,<1.3  # MIT License
- python-ceilometerclient>=1.0.6
- python-cinderclient>=1.1.0
- python-glanceclient>=0.14.0
-@@ -40,4 +37,4 @@ xstatic-jquery-ui>=1.10.1  # MIT License
- xstatic-jsencrypt>=2.0.0.2  # MIT License
- xstatic-qunit>=1.14.0.2  # MIT License
- xstatic-rickshaw>=1.5.0  # BSD Licenseprior
--xstatic-spin>=1.2.5.2  # MIT License
-+xstatic-spin>=1.2.5.2  # MIT License
-\ No newline at end of file
---- horizon-2014.2.2/requirements.txt.~1~	2015-02-05 09:06:50.000000000 -0800
-+++ horizon-2014.2.2/requirements.txt	2015-02-25 00:24:12.542805712 -0800
-@@ -13,15 +13,12 @@ Django>=1.4.2,<1.7
- django_compressor>=1.4
- django_openstack_auth>=1.1.7,!=1.1.8
- django-pyscss>=1.0.3  # BSD License (2 clause)
--eventlet>=0.15.1,<0.16.0
+ oslo.concurrency<1.9.0,>=1.8.2 # Apache-2.0
+ oslo.config<1.10.0,>=1.9.3 # Apache-2.0
+ oslo.i18n<1.6.0,>=1.5.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
+-pyScss<1.3,>=1.2.1 # MIT License
+ python-ceilometerclient<1.2,>=1.1.1
+-python-cinderclient<1.2.0,>=1.1.0
++python-cinderclient<=1.3.1,>=1.1.0
+ python-glanceclient<0.18.0,>=0.15.0
+ python-heatclient<0.5.0,>=0.3.0
+ python-keystoneclient<1.4.0,>=1.2.0
+
+--- horizon-2015.1.2/requirements.txt.orig	2015-10-13 11:07:24.000000000 -0600
++++ horizon-2015.1.2/requirements.txt	2015-11-19 15:16:14.438547386 -0700
+@@ -15,19 +15,16 @@ Pint>=0.5 # BSD
+ django-compressor>=1.4
+ django-openstack-auth<1.3.0,>=1.2.0
+ django-pyscss<2.0.0,>=1.0.3 # BSD License (2 clause)
+-eventlet!=0.17.0,>=0.16.1
  httplib2>=0.7.5
  iso8601>=0.1.9
 -kombu>=2.5.0
- # Horizon Utility Requirements
- # for SECURE_KEY generation
- lockfile>=0.8
  netaddr>=0.7.12
--pyScss>=1.2.1,<1.3  # MIT License
- python-ceilometerclient>=1.0.6
- python-cinderclient>=1.1.0
- python-glanceclient>=0.14.0
+ oslo.concurrency<1.9.0,>=1.8.2 # Apache-2.0
+ oslo.config<1.10.0,>=1.9.3 # Apache-2.0
+ oslo.i18n<1.6.0,>=1.5.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
+-pyScss<1.3,>=1.2.1 # MIT License
+ python-ceilometerclient<1.2,>=1.1.1
+-python-cinderclient<1.2.0,>=1.1.0
++python-cinderclient<=1.3.1,>=1.1.0
+ python-glanceclient<0.18.0,>=0.15.0
+ python-heatclient<0.5.0,>=0.3.0
+ python-keystoneclient<1.4.0,>=1.2.0
--- a/components/openstack/horizon/patches/12-CVE-2015-3988.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-Errata patch for CVE-2015-3988
-https://review.openstack.org/183659
-git fetch https://review.openstack.org/openstack/horizon refs/changes/59/183659/1 && git format-patch -1 --stdout FETCH_HEAD
-Fixed upstream and in a future release.
-----
-From: Brant Knudson <[email protected]>
-Date: Fri, 15 May 2015 19:21:31 +0000 (-0500)
-Subject: Sanitation of metadata passed from Django
-X-Git-Url: https://review.openstack.org/gitweb?p=openstack%2Fhorizon.git;a=commitdiff_plain;h=6c944b5013acb0dce7cf3d8717e58f7f2427be07
-
-Sanitation of metadata passed from Django
-
-We need to escape HTML in metadata passed from Django, which
-can lead to security issues. Refer to the bug for more details.
-
-Conflicts:
- horizon/templates/horizon/common/_modal_form_update_metadata.html
-
-The conflict was that there are extra spaces in the line.
-
-Co-Authored-By: Szymon Wroblewski <[email protected]>
-Change-Id: I4821eacb0bb274befab7995f3a8f87c82d3997f5
-Closes-bug: #1449260
-(cherry picked from commit 81e1fa13177c8e259c90183409696305f55cdd75)
-(cherry picked from commit e7f3e0880f4e311c768c413e43317674cb234515)
----
-
-diff --git a/horizon/templates/horizon/common/_modal_form_update_metadata.html b/horizon/templates/horizon/common/_modal_form_update_metadata.html
-index 6021393..e6b1810 100644
---- a/horizon/templates/horizon/common/_modal_form_update_metadata.html
-+++ b/horizon/templates/horizon/common/_modal_form_update_metadata.html
-@@ -224,8 +224,8 @@
-     </div>
-   </div>
-   <script type="text/javascript">
--    var existing_metadata = {{existing_metadata|safe}};
--    var available_metadata = {{available_metadata|safe}};
-+    var existing_metadata = JSON.parse('{{existing_metadata|escapejs}}');
-+    var available_metadata = JSON.parse('{{available_metadata|escapejs}}');
-   </script>
- {% endblock %}
--- a/components/openstack/horizon/patches/13-CVE-2015-3219.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-Errata patch for CVE-2015-3219
-https://bugs.launchpad.net/horizon/+bug/1453074
-
-Fixed upstream and in a future release.
--------
-From: lin-hua-cheng <[email protected]>
-Date: Mon, 1 Jun 2015 17:55:00 -0700
-Subject: [PATCH] Escape the description param from heat template
-
-The heat template allows user to define custom parameters,
-the fields are then converted to input fields. The description
-param maps to the help_text attribute of the field.
-
-Since the value comes from the user, the value must be escaped
-before rendering.
-
-Change-Id: I79d540a8363b2507c4bccdc0cc38e283962919d2
-Closes-bug: #1453074
----
- openstack_dashboard/dashboards/project/stacks/forms.py | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/openstack_dashboard/dashboards/project/stacks/forms.py 
-b/openstack_dashboard/dashboards/project/stacks/forms.py
-index 5ee01df..ba9e141 100644
---- a/openstack_dashboard/dashboards/project/stacks/forms.py
-+++ b/openstack_dashboard/dashboards/project/stacks/forms.py
-@@ -13,6 +13,7 @@
- import json
- import logging
-
-+from django.utils import html
- from django.utils.translation import ugettext_lazy as _
- from django.views.decorators.debug import sensitive_variables  # noqa
-
-@@ -310,7 +311,7 @@ class CreateStackForm(forms.SelfHandlingForm):
-             field_args = {
-                 'initial': param.get('Default', None),
-                 'label': param.get('Label', param_key),
--                'help_text': param.get('Description', ''),
-+                'help_text': html.escape(param.get('Description', '')),
-                 'required': param.get('Default', None) is None
-             }
-
--- 
-1.9.1
-
--- a/components/openstack/horizon/patches/14-add-zfs-image-format.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/horizon/patches/14-add-zfs-image-format.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -3,13 +3,10 @@
 
 --- horizon-2014.2.2/openstack_dashboard/settings.py.orig	2015-06-24 07:39:37.989679425 -0700
 +++ horizon-2014.2.2/openstack_dashboard/settings.py	2015-06-24 07:40:27.133978973 -0700
-@@ -109,7 +109,8 @@ OPENSTACK_IMAGE_BACKEND = {
-         ('raw', _('Raw')),
-         ('vdi', _('VDI')),
-         ('vhd', _('VHD')),
--        ('vmdk', _('VMDK'))
-+        ('vmdk', _('VMDK')),
-+        ('zfs', _('ZFS - Solaris ZFS Image'))
+@@ -88,6 +88,7 @@ OPENSTACK_IMAGE_BACKEND = {
+         ('vdi', _('VDI - Virtual Disk Image')),
+         ('vhd', _('VHD - Virtual Hard Disk')),
+         ('vmdk', _('VMDK - Virtual Machine Disk')),
++        ('zfs', _('ZFS - Solaris ZFS Image')),
      ]
  }
- 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/horizon/patches/15-fix-static-root-setting.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,27 @@
+Patch to correct where STATIC_ROOT is set.  This has been fixed
+upstream under https://bugs.launchpad.net/horizon/+bug/1399585 but not
+yet backported to Kilo.
+
+--- horizon-2015.1.0/openstack_dashboard/settings.py.orig 2015-07-30 13:43:47.751455772 -0600
++++ horizon-2015.1.0/openstack_dashboard/settings.py 2015-07-30 13:45:34.900930381 -0600
+@@ -258,6 +258,10 @@ ADD_INSTALLED_APPS = []
+ # It can be overridden in local_settings.py
+ CUSTOM_THEME_PATH = 'static/themes/default'
+
++# Set these before importing local_settings in case they are set there
++MEDIA_ROOT = os.path.abspath(os.path.join(ROOT_PATH, '..', 'media'))
++STATIC_ROOT = os.path.abspath(os.path.join(ROOT_PATH, '..', 'static'))
++
+ try:
+     from local.local_settings import *  # noqa
+ except ImportError:
+@@ -272,9 +276,7 @@ if LOGOUT_URL is None:
+ if LOGIN_REDIRECT_URL is None:
+     LOGIN_REDIRECT_URL = WEBROOT
+
+-MEDIA_ROOT = os.path.abspath(os.path.join(ROOT_PATH, '..', 'media'))
+ MEDIA_URL = WEBROOT + 'media/'
+-STATIC_ROOT = os.path.abspath(os.path.join(ROOT_PATH, '..', 'static'))
+ STATIC_URL = WEBROOT + 'static/'
+ STATICFILES_DIRS = get_staticfiles_dirs(WEBROOT)
+
--- a/components/openstack/horizon/patches/99-remove.xstatic.patch-proto	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/horizon/patches/99-remove.xstatic.patch-proto	Fri Feb 05 17:54:17 2016 -0500
@@ -6,14 +6,17 @@
 than during gmake prep.  We need the xstatic functionality to collect
 all the JavaScript libraries before packaging.
 
---- a/usr/lib/python2.7/vendor-packages/openstack_dashboard/settings.py	2015-01-13 10:40:30.930622964 -0700
-+++ b/usr/lib/python2.7/vendor-packages/openstack_dashboard/settings.py	2015-01-13 10:40:57.470743881 -0700
-@@ -22,21 +22,6 @@ import sys
- import warnings
+--- /usr/lib/python2.7/vendor-packages/openstack_dashboard/static_settings.py.orig  2015-05-04 16:35:35.859239557 -0600
++++ /usr/lib/python2.7/vendor-packages/openstack_dashboard/static_settings.py  2015-05-04 16:35:58.697407748 -0600
+@@ -17,99 +17,5 @@ distributions can edit or replace this f
+ to match their distribution's standards.
+ """
 
- from django.utils.translation import ugettext_lazy as _
 -import xstatic.main
 -import xstatic.pkg.angular
+-import xstatic.pkg.angular_bootstrap
+-import xstatic.pkg.angular_lrdragndrop
+-import xstatic.pkg.angular_smart_table
 -import xstatic.pkg.bootstrap_datepicker
 -import xstatic.pkg.bootstrap_scss
 -import xstatic.pkg.d3
@@ -25,54 +28,84 @@
 -import xstatic.pkg.jquery_tablesorter
 -import xstatic.pkg.jquery_ui
 -import xstatic.pkg.jsencrypt
+-import xstatic.pkg.magic_search
 -import xstatic.pkg.rickshaw
 -import xstatic.pkg.spin
-
- from openstack_dashboard import exceptions
-
-@@ -148,45 +133,6 @@ STATICFILES_FINDERS = (
-     'compressor.finders.CompressorFinder',
- )
-
--STATICFILES_DIRS = [
--    ('horizon/lib/angular',
--        xstatic.main.XStatic(xstatic.pkg.angular).base_dir),
--    ('horizon/lib/bootstrap_datepicker',
--        xstatic.main.XStatic(xstatic.pkg.bootstrap_datepicker).base_dir),
--    ('bootstrap',
--        xstatic.main.XStatic(xstatic.pkg.bootstrap_scss).base_dir),
--    ('horizon/lib',
--        xstatic.main.XStatic(xstatic.pkg.d3).base_dir),
--    ('horizon/lib',
--        xstatic.main.XStatic(xstatic.pkg.hogan).base_dir),
--    ('horizon/lib/font-awesome',
--        xstatic.main.XStatic(xstatic.pkg.font_awesome).base_dir),
--    ('horizon/lib/jquery',
--        xstatic.main.XStatic(xstatic.pkg.jquery).base_dir),
--    ('horizon/lib/jquery',
--        xstatic.main.XStatic(xstatic.pkg.jquery_migrate).base_dir),
--    ('horizon/lib/jquery',
--        xstatic.main.XStatic(xstatic.pkg.jquery_quicksearch).base_dir),
--    ('horizon/lib/jquery',
--        xstatic.main.XStatic(xstatic.pkg.jquery_tablesorter).base_dir),
--    ('horizon/lib/jsencrypt',
--        xstatic.main.XStatic(xstatic.pkg.jsencrypt).base_dir),
--    ('horizon/lib',
--        xstatic.main.XStatic(xstatic.pkg.rickshaw).base_dir),
--    ('horizon/lib',
--        xstatic.main.XStatic(xstatic.pkg.spin).base_dir),
--]
+-import xstatic.pkg.termjs
 -
 -
--if xstatic.main.XStatic(xstatic.pkg.jquery_ui).version.startswith('1.10.'):
--    # The 1.10.x versions already contain the 'ui' directory.
--    STATICFILES_DIRS.append(('horizon/lib/jquery-ui',
--        xstatic.main.XStatic(xstatic.pkg.jquery_ui).base_dir))
--else:
--    # Newer versions dropped the directory, add it to keep the path the same.
--    STATICFILES_DIRS.append(('horizon/lib/jquery-ui/ui',
--        xstatic.main.XStatic(xstatic.pkg.jquery_ui).base_dir))
+ def get_staticfiles_dirs(webroot='/'):
+-    STATICFILES_DIRS = [
+-        ('horizon/lib/angular',
+-            xstatic.main.XStatic(xstatic.pkg.angular,
+-                                 root_url=webroot).base_dir),
+-        ('horizon/lib/angular',
+-            xstatic.main.XStatic(xstatic.pkg.angular_bootstrap,
+-                                 root_url=webroot).base_dir),
+-        ('horizon/lib/angular',
+-            xstatic.main.XStatic(xstatic.pkg.angular_lrdragndrop,
+-                                 root_url=webroot).base_dir),
+-        ('horizon/lib/angular',
+-            xstatic.main.XStatic(xstatic.pkg.angular_smart_table,
+-                                 root_url=webroot).base_dir),
+-        ('horizon/lib/bootstrap_datepicker',
+-            xstatic.main.XStatic(xstatic.pkg.bootstrap_datepicker,
+-                                 root_url=webroot).base_dir),
+-        ('bootstrap',
+-            xstatic.main.XStatic(xstatic.pkg.bootstrap_scss,
+-                                 root_url=webroot).base_dir),
+-        ('horizon/lib',
+-            xstatic.main.XStatic(xstatic.pkg.d3,
+-                                 root_url=webroot).base_dir),
+-        ('horizon/lib',
+-            xstatic.main.XStatic(xstatic.pkg.hogan,
+-                                 root_url=webroot).base_dir),
+-        ('horizon/lib/font-awesome',
+-            xstatic.main.XStatic(xstatic.pkg.font_awesome,
+-                                 root_url=webroot).base_dir),
+-        ('horizon/lib/jquery',
+-            xstatic.main.XStatic(xstatic.pkg.jquery,
+-                                 root_url=webroot).base_dir),
+-        ('horizon/lib/jquery',
+-            xstatic.main.XStatic(xstatic.pkg.jquery_migrate,
+-                                 root_url=webroot).base_dir),
+-        ('horizon/lib/jquery',
+-            xstatic.main.XStatic(xstatic.pkg.jquery_quicksearch,
+-                                 root_url=webroot).base_dir),
+-        ('horizon/lib/jquery',
+-            xstatic.main.XStatic(xstatic.pkg.jquery_tablesorter,
+-                                 root_url=webroot).base_dir),
+-        ('horizon/lib/jsencrypt',
+-            xstatic.main.XStatic(xstatic.pkg.jsencrypt,
+-                                 root_url=webroot).base_dir),
+-        ('horizon/lib/magic_search',
+-            xstatic.main.XStatic(xstatic.pkg.magic_search,
+-                                 root_url=webroot).base_dir),
+-        ('horizon/lib',
+-            xstatic.main.XStatic(xstatic.pkg.rickshaw,
+-                                 root_url=webroot).base_dir),
+-        ('horizon/lib',
+-            xstatic.main.XStatic(xstatic.pkg.spin,
+-                                 root_url=webroot).base_dir),
+-        ('horizon/lib',
+-            xstatic.main.XStatic(xstatic.pkg.termjs,
+-                                 root_url=webroot).base_dir),
+-    ]
 -
- COMPRESS_PRECOMPILERS = (
-     ('text/scss', 'django_pyscss.compressor.DjangoScssFilter'),
- )
+-    if xstatic.main.XStatic(xstatic.pkg.jquery_ui,
+-                            root_url=webroot).version.startswith('1.10.'):
+-        # The 1.10.x versions already contain the 'ui' directory.
+-        STATICFILES_DIRS.append(
+-            ('horizon/lib/jquery-ui',
+-             xstatic.main.XStatic(xstatic.pkg.jquery_ui,
+-                                  root_url=webroot).base_dir))
+-    else:
+-        # Newer versions dropped the directory, add it to keep the path the
+-        # same.
+-        STATICFILES_DIRS.append(
+-            ('horizon/lib/jquery-ui/ui',
+-             xstatic.main.XStatic(xstatic.pkg.jquery_ui,
+-                                  root_url=webroot).base_dir))
+-
+-    return STATICFILES_DIRS
++    return []
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/horizon/smart-table.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,23 @@
+Smart Table module is under MIT license:
+
+> Copyright (C) 2014 Laurent Renard.
+>
+> Permission is hereby granted, free of charge, to any person
+> obtaining a copy of this software and associated documentation files
+> (the "Software"), to deal in the Software without restriction,
+> including without limitation the rights to use, copy, modify, merge,
+> publish, distribute, sublicense, and/or sell copies of the Software,
+> and to permit persons to whom the Software is furnished to do so,
+> subject to the following conditions:
+>
+> The above copyright notice and this permission notice shall be
+> included in all copies or substantial portions of the Software.
+>
+> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+> NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+> BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+> ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+> CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+> SOFTWARE.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/horizon/termjs.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,20 @@
+LICENSE:
+Copyright (c) 2012-2013, Christopher Jeffrey (https://github.com/chjj/)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
--- a/components/openstack/ironic/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/ironic/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,25 +20,25 @@
 #
 
 #
-# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		ironic
-COMPONENT_CODENAME=	juno
-COMPONENT_VERSION=	2014.2.1
-COMPONENT_BE_VERSION=	2014.2
+COMPONENT_CODENAME=	kilo
+COMPONENT_VERSION=	2015.1.2
+COMPONENT_BE_VERSION=	2015.1
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:9dae1e5e030741382e75f6da9ec34af1b8e8d50940d158fb14f4d427a01c0bff
+    sha256:fd85246f7c9b0976a27b863de328f1240d43d4633511cd832e8d6904f6f4b06c
 COMPONENT_ARCHIVE_URL=	http://launchpad.net/$(COMPONENT_NAME)/$(COMPONENT_CODENAME)/$(COMPONENT_VERSION)/+download/$(COMPONENT_ARCHIVE)
 COMPONENT_PROJECT_URL=	http://www.openstack.org/
 COMPONENT_BUGDB=	service/ironic
 IPS_COMPONENT_VERSION=	0.$(COMPONENT_VERSION)
 
-TPNO=			22203
+TPNO=			25789
 
 include $(WS_MAKE_RULES)/prep.mk
 include $(WS_MAKE_RULES)/setup.py.mk
@@ -55,8 +55,9 @@
 PKG_MACROS +=		PYV=$(shell echo $(PYTHON_VERSIONS) | tr -d .)
 
 #
-# ironic-api and ironic-conductor depend on ironic-db so copy all of the
-# service manifests into the proto directory for pkgdepend(1) to find.
+# ironic-api and ironic-conductor depend on ironic-db and ironic-upgrade so
+# copy all of the service manifests into the proto directory for
+# pkgdepend(1) to find.
 #
 COMPONENT_POST_INSTALL_ACTION += \
 	($(MKDIR) $(PROTO_DIR)/lib/svc/manifest/application/openstack; \
@@ -64,6 +65,7 @@
 	     files/ironic-api.xml \
 	     files/ironic-conductor.xml \
 	     files/ironic-db.xml \
+	     files/ironic-upgrade.xml \
 	     $(PROTO_DIR)/lib/svc/manifest/application/openstack/; \
 	 $(MKDIR) $(PROTO_DIR)$(PYTHON_LIB)/ironic/drivers/modules; \
 	 $(CP) \
@@ -89,6 +91,8 @@
 test:		$(NO_TESTS)
 
 
+REQUIRED_PACKAGES += cloud/openstack/openstack-common
+REQUIRED_PACKAGES += library/python/sqlalchemy-27
 REQUIRED_PACKAGES += install/installadm
 REQUIRED_PACKAGES += shell/ksh93
 REQUIRED_PACKAGES += system/core-os
--- a/components/openstack/ironic/files/drivers/modules/solaris_ipmitool.py	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/ironic/files/drivers/modules/solaris_ipmitool.py	Fri Feb 05 17:54:17 2016 -0500
@@ -37,13 +37,14 @@
 from urlparse import urlparse
 
 from lockfile import LockFile, LockTimeout
+from oslo_concurrency import processutils
 from oslo.config import cfg
-
+from oslo_utils import excutils
 from scp import SCPClient
 
 from ironic.common import boot_devices, exception, images, keystone, states, \
     utils
-from ironic.common.i18n import _, _LE, _LW
+from ironic.common.i18n import _, _LE, _LI, _LW
 from ironic.conductor import task_manager
 from ironic.conductor import utils as manager_utils
 from ironic.db import api as dbapi
@@ -51,7 +52,7 @@
 from ironic.drivers.modules import ipmitool
 from ironic.drivers import utils as driver_utils
 from ironic.openstack.common import log as logging
-from ironic.openstack.common import loopingcall, processutils
+from ironic.openstack.common import loopingcall
 
 PLATFORM = platform.system()
 if PLATFORM != "SunOS":
@@ -172,6 +173,20 @@
 COMMON_PROPERTIES = REQUIRED_PROPERTIES.copy()
 COMMON_PROPERTIES.update(OPTIONAL_PROPERTIES)
 
+IPMI_PROPERTIES = [
+    ('mac', '/System/host_primary_mac_address'),
+    ('serial', '/System/serial_number'),
+    ('model', '/System/model'),
+    ('cpu_arch', '/System/Processors/architecture'),
+    ('memory_mb', '/System/Memory/installed_memory'),
+    ('cpus', '/System/Processors/installed_cpus'),
+    ('datalinks', '/System/Networking/installed_eth_nics'),
+    ('disks', '/System/Storage/installed_disks'),
+    ('local_gb', '/System/Storage/installed_disk_size')
+]
+
+CPU_LOCATION = '/System/Processors/CPUs/CPU_%d/total_cores'
+
 LAST_CMD_TIME = {}
 TIMING_SUPPORT = None
 SINGLE_BRIDGE_SUPPORT = None
@@ -336,9 +351,8 @@
             'lanplus',
             '-H',
             driver_info['address'],
-            '-L', driver_info.get('priv_level')
+            '-L', driver_info['priv_level']
             ]
-
     if driver_info['username']:
         args.append('-U')
         args.append(driver_info['username'])
@@ -349,34 +363,68 @@
             args.append(driver_info[name])
 
     # specify retry timing more precisely, if supported
+    num_tries = max(
+        (CONF.ipmi.retry_timeout // CONF.ipmi.min_command_interval), 1)
+
     if ipmitool._is_option_supported('timing'):
-        num_tries = max(
-            (CONF.ipmi.retry_timeout // CONF.ipmi.min_command_interval), 1)
         args.append('-R')
         args.append(str(num_tries))
 
         args.append('-N')
         args.append(str(CONF.ipmi.min_command_interval))
 
-    # 'ipmitool' command will prompt password if there is no '-f' option,
-    # we set it to '\0' to write a password file to support empty password
-    with ipmitool._make_password_file(driver_info['password'] or '\0') \
-            as pw_file:
-        args.append('-f')
-        args.append(pw_file)
-        args = args + list(command)  # Append as a list don't split(" ")
-
+    end_time = (time.time() + CONF.ipmi.retry_timeout)
+
+    while True:
+        num_tries = num_tries - 1
         # NOTE(deva): ensure that no communications are sent to a BMC more
         #             often than once every min_command_interval seconds.
         time_till_next_poll = CONF.ipmi.min_command_interval - (
-            time.time() - LAST_CMD_TIME.get(driver_info['address'], 0))
+                time.time() - LAST_CMD_TIME.get(driver_info['address'], 0))
         if time_till_next_poll > 0:
             time.sleep(time_till_next_poll)
-        try:
-            out, err = utils.execute(*args)
-        finally:
-            LAST_CMD_TIME[driver_info['address']] = time.time()
-        return out, err
+        # Resetting the list that will be utilized so the password arguments
+        # from any previous execution are preserved.
+        cmd_args = args[:]
+        # 'ipmitool' command will prompt password if there is no '-f'
+        # option, we set it to '\0' to write a password file to support
+        # empty password
+        with ipmitool._make_password_file(
+                    driver_info['password'] or '\0'
+                ) as pw_file:
+            cmd_args.append('-f')
+            cmd_args.append(pw_file)
+            cmd_args = cmd_args + list(command)  # Append list, don't split
+            try:
+                out, err = utils.execute(*cmd_args)
+                return out, err
+            except processutils.ProcessExecutionError as e:
+                with excutils.save_and_reraise_exception() as ctxt:
+                    err_list = [x for x in ipmitool.IPMITOOL_RETRYABLE_FAILURES
+                                if x in e.message]
+                    if ((time.time() > end_time) or
+                        (num_tries == 0) or
+                            not err_list):
+                        LOG.error(_LE('IPMI Error while attempting '
+                                      '"%(cmd)s" for node %(node)s. '
+                                      'Error: %(error)s'),
+                                  {
+                                      'node': driver_info['uuid'],
+                                      'cmd': e.cmd,
+                                      'error': e
+                                  })
+                    else:
+                        ctxt.reraise = False
+                        LOG.warning(_LW('IPMI Error encountered, retrying '
+                                        '"%(cmd)s" for node %(node)s. '
+                                        'Error: %(error)s'),
+                                    {
+                                        'node': driver_info['uuid'],
+                                        'cmd': e.cmd,
+                                        'error': e
+                                    })
+            finally:
+                LAST_CMD_TIME[driver_info['address']] = time.time()
 
 
 def _get_node_architecture(node):
@@ -387,23 +435,35 @@
     :raises: IPMIFailure if ipmitool command fails
     """
     LOG.debug("SolarisDeploy._get_node_architecture")
-    ipmi_cmd_args = ['sunoem', 'getval', '/System/Processors/architecture']
-    driver_info = _parse_driver_info(node)
-    try:
-        out, _err = _exec_ipmitool(driver_info, ipmi_cmd_args)
-    except Exception as err:
-        LOG.error(_LE("Failed to get node architecture from IPMI : %s" %
-                  (err)))
-        raise exception.IPMIFailure(cmd=err)
-
-    LOG.debug("SolarisDeploy._get_node_architecture: arch: '%s'" % (out))
-
-    if 'SPARC' in out:
+    cpu_arch = node.properties.get('cpu_arch', None)
+    if cpu_arch is None:
+        LOG.info(_LI("Inspection not performed, retrieving architecture via "
+                     "IPMI for node: %s"), node.uuid)
+        ipmi_cmd_args = ['sunoem', 'getval', '/System/Processors/architecture']
+        driver_info = _parse_driver_info(node)
+        try:
+            cpu_arch, _err = _exec_ipmitool(driver_info, ipmi_cmd_args)
+        except Exception as err:
+            LOG.error(_LE("Failed to get node architecture from IPMI : %s" %
+                      (err)))
+            raise exception.IPMIFailure(cmd=err)
+
+        propdict = {'cpu_arch': cpu_arch}
+        node_properties = node.properties
+        node_properties.update(propdict)
+        node.properties = node_properties
+        node.save()
+
+        LOG.debug("SolarisDeploy._get_node_architecture: cpu_arch: '%s'"
+                  % (cpu_arch))
+
+    if 'SPARC' in cpu_arch:
         return 'SPARC'
-    elif 'x86' in out:
+    elif 'x86' in cpu_arch:
         return 'x86'
     else:
-        raise SolarisIPMIError(msg="Unknown node architecture: %s" % (out))
+        raise SolarisIPMIError(msg="Unknown node architecture: %s"
+                               % (cpu_arch))
 
 
 def _check_deploy_state(task, node_uuid, deploy_thread):
@@ -442,7 +502,7 @@
             if task.node:
                 task.node.provision_state = states.DEPLOYFAIL
                 task.node.last_error = "Failed to find node."
-                task.node.target_provision_state = states.NOSTATE
+                task.node.target_provision_state = states.AVAILABLE
                 task.node.save()
         raise loopingcall.LoopingCallDone()
     except Exception as err:
@@ -456,12 +516,14 @@
             if task.node:
                 task.node.last_error = "Failed to find node."
                 task.node.provision_state = states.DEPLOYFAIL
-                task.node.target_provision_state = states.NOSTATE
+                task.node.target_provision_state = states.AVAILABLE
                 task.node.save()
         raise loopingcall.LoopingCallDone()
 
     LOG.debug("_check_deploy_state().cur_node.target_provision_state: %s" %
               (cur_node.target_provision_state))
+    LOG.debug("_check_deploy_state().cur_node.provision_state: %s" %
+              (cur_node.provision_state))
 
     if deploy_thread.state not in [states.DEPLOYING, states.DEPLOYWAIT]:
         LOG.debug("_check_deploy_state().done: %s" % (deploy_thread.state))
@@ -479,7 +541,7 @@
             cur_node.provision_state = deploy_thread.state
         else:
             cur_node.provision_state = deploy_thread.state
-        cur_node.target_provision_state = states.NOSTATE
+        cur_node.target_provision_state = states.AVAILABLE
         cur_node.save()
 
         # Raise LoopincCallDone to terminate deployment checking.
@@ -493,13 +555,21 @@
         cur_node.provision_state = states.DEPLOYING
         cur_node.save()
 
-    elif cur_node.target_provision_state == states.NOSTATE:
+    elif cur_node.target_provision_state == states.AVAILABLE or \
+            cur_node.target_provision_state == states.NOSTATE:
         # Node was most likely deleted so end deployment completion checking
         LOG.debug("_check_deploy_state().deleted: %s" %
                   (cur_node.target_provision_state))
         deploy_thread.stop()
         raise loopingcall.LoopingCallDone()
 
+    elif cur_node.provision_state == states.DEPLOYFAIL:
+        # Node deployment as for some reason failed already, exist thread
+        LOG.debug("_check_deploy_state().deploy_failed: %s" %
+                  (cur_node.provision_state))
+        deploy_thread.stop()
+        raise loopingcall.LoopingCallDone()
+
 
 def _url_exists(url):
     """Validate specific exists
@@ -611,6 +681,7 @@
             except OSError as err:
                 if err.errno != errno.ENOENT:
                     raise
+
         else:
             fp.seek(0)
             fp.write(ref_count)
@@ -808,14 +879,13 @@
     return mount_dir, temp_uar
 
 
-def _umount_archive(mount_dir, temp_uar):
+def _umount_archive(mount_dir):
     """ Unmount archive and remove mount point directory
 
     :param mount_dir: Path to mounted archive
     :param temp_uar: Path to glance local uar to remove
     """
-    LOG.debug("SolarisDeploy._umount_archive:mount_dir: '%s', temp_uar: %s" %
-              (mount_dir, temp_uar))
+    LOG.debug("SolarisDeploy._umount_archive:mount_dir: '%s'" % (mount_dir))
 
     cmd = ["/usr/sbin/umount", mount_dir]
     pc = Popen(cmd, stdout=PIPE, stderr=PIPE)
@@ -842,9 +912,9 @@
         try:
             _iso, uuid = _get_archive_iso_and_uuid(mount_dir)
         except:
-            _umount_archive(mount_dir, temp_uar)
+            _umount_archive(mount_dir)
             raise
-        _umount_archive(mount_dir, temp_uar)
+        _umount_archive(mount_dir)
     else:
         temp_uar = _fetch_uri(task, archive_uri)
         try:
@@ -1355,7 +1425,7 @@
 
         # Validate IPMI credentials by getting node architecture
         try:
-            _arch = _get_node_architecture(task.node)
+            _cpu_arch = _get_node_architecture(task.node)
         except Exception as err:
             raise exception.InvalidParameterValue(_(err))
 
@@ -1443,9 +1513,9 @@
         # Try to get the URL of the Ironic API
         try:
             CONF.conductor.api_url or keystone.get_service_url()
-        except (exception.CatalogFailure,
-                exception.CatalogNotFound,
-                exception.CatalogUnauthorized):
+        except (exception.KeystoneFailure,
+                exception.KeystoneUnauthorized,
+                exception.CatalogNotFound):
             raise exception.InvalidParameterValue(_(
                 "Couldn't get the URL of the Ironic API service from the "
                 "configuration file or Keystone catalog."))
@@ -1472,18 +1542,18 @@
         """
         LOG.debug("SolarisDeploy.deploy()")
 
-        arch = _get_node_architecture(task.node)
+        cpu_arch = _get_node_architecture(task.node)
 
         # Ensure persistence is false so net boot only occurs once
-        if arch == 'x86':
+        if cpu_arch == 'x86':
             # Set boot device to PXE network boot
             dev_cmd = 'pxe'
-        elif arch == 'SPARC':
+        elif cpu_arch == 'SPARC':
             # Set bootmode script to network DHCP
             dev_cmd = 'wanboot'
         else:
             raise exception.InvalidParameterValue(
-                _("Invalid node architecture of '%s'.") % (arch))
+                _("Invalid node architecture of '%s'.") % (cpu_arch))
 
         manager_utils.node_set_boot_device(task, dev_cmd,
                                            persistent=False)
@@ -1543,7 +1613,7 @@
 
         ai_manifest = task.node.driver_info.get('ai_manifest', None)
         ai_service = task.node.driver_info.get('ai_service', None)
-        arch = _get_node_architecture(task.node)
+        cpu_arch = _get_node_architecture(task.node)
         archive_uri = task.node.driver_info.get('archive_uri', None)
         fmri = task.node.driver_info.get('fmri', None)
         install_profiles = task.node.driver_info.get('install_profiles', None)
@@ -1577,13 +1647,13 @@
             aiservice = AIService(task, ai_service)
         else:
             # IPS Install, ensure default architecture service exists
-            if arch == "x86":
+            if cpu_arch == "x86":
                 ai_service = "default-i386"
-            elif arch == 'SPARC':
+            elif cpu_arch == 'SPARC':
                 ai_service = "default-sparc"
             else:
                 raise exception.InvalidParameterValue(
-                    _("Invalid node architecture of '%s'.") % (arch))
+                    _("Invalid node architecture of '%s'.") % (cpu_arch))
 
             # Instantiate AIService object for this node/service
             aiservice = AIService(task, ai_service)
@@ -1636,7 +1706,7 @@
 
             # Recreate new ai client for this mac address
             new_uri, auth_token = _format_archive_uri(task, archive_uri)
-            aiservice.create_client(mac, arch, new_uri, auth_token,
+            aiservice.create_client(mac, cpu_arch, new_uri, auth_token,
                                     publishers, fmri)
 
             # 3. (Re)Create AI Manifest for each port/Mac specified for this
@@ -1732,7 +1802,7 @@
         LOG.debug("SolarisDeploy.clean_up()")
 
         ai_service = task.node.driver_info.get('ai_service', None)
-        arch = _get_node_architecture(task.node)
+        cpu_arch = _get_node_architecture(task.node)
         archive_uri = task.node.driver_info.get('archive_uri', None)
 
         # Instantiate AIService object for this node/service
@@ -1741,13 +1811,13 @@
         elif ai_service:
             aiservice = AIService(task, ai_service)
         else:
-            if arch == "x86":
+            if cpu_arch == "x86":
                 ai_service = "default-i386"
-            elif arch == 'SPARC':
+            elif cpu_arch == 'SPARC':
                 ai_service = "default-sparc"
             else:
                 raise exception.InvalidParameterValue(
-                    _("Invalid node architecture of '%s'.") % (arch))
+                    _("Invalid node architecture of '%s'.") % (cpu_arch))
             aiservice = AIService(task, ai_service)
 
         # Check if AI Service exists, log message if already removed
@@ -1835,16 +1905,16 @@
                     boot_devices.BIOS, boot_devices.SAFE]
         else:
             # Get architecture of node and return supported boot devices
-            arch = _get_node_architecture(task.node)
-            if arch == 'x86':
+            cpu_arch = _get_node_architecture(task.node)
+            if cpu_arch == 'x86':
                 return [boot_devices.PXE, boot_devices.DISK,
                         boot_devices.CDROM, boot_devices.BIOS,
                         boot_devices.SAFE]
-            elif arch == 'SPARC':
+            elif cpu_arch == 'SPARC':
                 return [boot_devices.DISK, 'wanboot']
             else:
                 raise exception.InvalidParameterValue(
-                    _("Invalid node architecture of '%s'.") % (arch))
+                    _("Invalid node architecture of '%s'.") % (cpu_arch))
 
     @task_manager.require_exclusive_lock
     def set_boot_device(self, task, device, persistent=False):
@@ -1865,19 +1935,19 @@
         """
         LOG.debug("SolarisManagement.set_boot_device: %s" % device)
 
-        arch = _get_node_architecture(task.node)
+        cpu_arch = _get_node_architecture(task.node)
         archive_uri = task.node.driver_info.get('archive_uri')
         publishers = task.node.driver_info.get('publishers')
         fmri = task.node.driver_info.get('fmri')
 
-        if arch == 'x86':
+        if cpu_arch == 'x86':
             if device not in self.get_supported_boot_devices(task=task):
                 raise exception.InvalidParameterValue(_(
                     "Invalid boot device %s specified.") % device)
             cmd = ["chassis", "bootdev", device]
             if persistent:
                 cmd.append("options=persistent")
-        elif arch == 'SPARC':
+        elif cpu_arch == 'SPARC':
             # Set bootmode script to network DHCP or disk
             if device == 'wanboot':
                 boot_cmd = 'set /HOST/bootmode script="'
@@ -1912,7 +1982,7 @@
                         " %s") % script_str)
                 boot_cmd += script_str + '"'
                 cmd = ['sunoem', 'cli', boot_cmd]
-            elif device == 'disk':
+            elif device == boot_devices.DISK:
                 cmd = ['sunoem', 'cli',
                        'set /HOST/bootmode script=""']
             else:
@@ -1920,7 +1990,7 @@
                     "Invalid boot device %s specified.") % (device))
         else:
             raise exception.InvalidParameterValue(
-                _("Invalid node architecture of '%s'.") % (arch))
+                _("Invalid node architecture of '%s'.") % (cpu_arch))
 
         driver_info = _parse_driver_info(task.node)
         try:
@@ -1953,17 +2023,17 @@
 
         """
         LOG.debug("SolarisManagement.get_boot_device")
-        arch = _get_node_architecture(task.node)
+        cpu_arch = _get_node_architecture(task.node)
         driver_info = _parse_driver_info(task.node)
         response = {'boot_device': None, 'persistent': None}
 
-        if arch == 'x86':
+        if cpu_arch == 'x86':
             cmd = ["chassis", "bootparam", "get", "5"]
-        elif arch == 'SPARC':
+        elif cpu_arch == 'SPARC':
             cmd = ['sunoem', 'getval', '/HOST/bootmode/script']
         else:
             raise exception.InvalidParameterValue(
-                _("Invalid node architecture of '%s'.") % (arch))
+                _("Invalid node architecture of '%s'.") % (cpu_arch))
 
         try:
             out, _err = _exec_ipmitool(driver_info, cmd)
@@ -1976,7 +2046,7 @@
                          'cmd': cmd, 'error': err})
             raise exception.IPMIFailure(cmd=cmd)
 
-        if arch == 'x86':
+        if cpu_arch == 'x86':
             re_obj = re.search('Boot Device Selector : (.+)?\n', out)
             if re_obj:
                 boot_selector = re_obj.groups('')[0]
@@ -1993,11 +2063,11 @@
                     response['boot_device'] = boot_devices.CDROM
 
             response['persistent'] = 'Options apply to all future boots' in out
-        elif arch == 'SPARC':
+        elif cpu_arch == 'SPARC':
             if "net:dhcp" in out:
                 response['boot_device'] = 'wanboot'
             else:
-                response['boot_device'] = 'disk'
+                response['boot_device'] = boot_devices.DISK
         LOG.debug(response)
         return response
 
@@ -2015,7 +2085,7 @@
         driver_info = _parse_driver_info(task.node)
         # with '-v' option, we can get the entire sensor data including the
         # extended sensor informations
-        cmd = ["sdr", "-v"]
+        cmd = ['sdr', '-v']
         try:
             out, _err = _exec_ipmitool(driver_info, cmd)
         except (exception.PasswordFileFailedToCreate,
@@ -2026,6 +2096,141 @@
         return ipmitool._parse_ipmi_sensors_data(task.node, out)
 
 
+class SolarisInspect(base.InspectInterface):
+    """Inspect class for solaris nodes."""
+
+    def get_properties(self):
+        """Return Solaris driver properties"""
+        return COMMON_PROPERTIES
+
+    def validate(self, task):
+        """Validate driver_info containts IPMI credentials.
+
+        Ensure 'driver_info' containers the required IPMI
+        properties used to access a nodes properties.
+
+        :param task: a TaskManager instance
+        :raises: InvalidParameterValue if required IPMI parameters
+            are missing.
+        :raises: MissingParameterValue if a required parameter is missing.
+        """
+        _parse_driver_info(task.node)
+
+    def inspect_hardware(self, task):
+        """Inspect hardware to get the hardware properties.
+
+        Inspects hardware to get the defined IPMI_PROPERTIES.
+        Failure occures if any of the defined IPMI_PROPERTIES are not
+        determinable from the node.
+
+        :param task: a TaskManager instance
+        :raises: HardwareInspectionFailure if properties could
+                 not be retrieved successfully.
+        :returns: the resulting state of inspection.
+        """
+        LOG.debug("SolarisInspect.inspect_hardware")
+
+        ipmi_props = self._get_ipmi_properties(task)
+
+        keys, _none = zip(*IPMI_PROPERTIES)
+        vallist = [line.split(': ')[1]
+                   for line in ipmi_props.strip().splitlines()]
+        propdict = dict(zip(keys, vallist))
+
+        # Installed memory size is returned in GB, Nova assumes this is MB
+        # so convert if returned in GB
+        memsize, memtype = propdict['memory_mb'].split(' ')
+        if memtype == 'GB':
+            propdict['memory_mb'] = int(memsize) * 1024
+        else:
+            propdict['memory_mb'] = int(memsize)
+
+        cpu_props = self._get_cpu_cores(task, propdict['cpus'])
+
+        vallist = [line.split(': ')[1]
+                   for line in cpu_props.strip().splitlines()]
+        total_cores = sum(map(int, vallist))
+        propdict['cores'] = total_cores
+
+        node_properties = task.node.properties
+        node_properties.update(propdict)
+        task.node.properties = node_properties
+        task.node.save()
+
+        self._create_port_if_not_exist(task.node, node_properties['mac'])
+        LOG.info(_LI("Node %s inspected."), task.node.uuid)
+        return states.MANAGEABLE
+
+    def _get_ipmi_properties(self, task):
+        """Retrieve IPMI_PROPERTIES from node
+        :param task: a TaskManager instance.
+        :returns: ipmitool retrieved property values
+        """
+        fh = tempfile.NamedTemporaryFile()
+        for _none, prop in IPMI_PROPERTIES:
+            fh.write('sunoem getval %s\n' % prop)
+        fh.seek(0)
+        cmd = ["exec", fh.name]
+        driver_info = _parse_driver_info(task.node)
+
+        try:
+            out, _err = _exec_ipmitool(driver_info, cmd)
+        except (exception.PasswordFileFailedToCreate,
+                processutils.ProcessExecutionError) as err:
+            LOG.warning(_LW('IPMI inspect properties failed for node %(node)s '
+                            'when executing "ipmitool %(cmd)s". '
+                            'Error: %(error)s'),
+                        {'node': task.node.uuid,
+                         'cmd': cmd, 'error': err})
+            raise exception.IPMIFailure(cmd=cmd)
+        fh.close()
+
+        return out
+
+    def _get_cpu_cores(self, task, cpus):
+        """Retrieve IPMI_PROPERTIES from node
+        :param task: a TaskManager instance.
+        :param cpus: CPU numbers to use.
+        :returns: ipmitool retrieved property values
+        """
+        fh = tempfile.NamedTemporaryFile()
+        for i in range(int(cpus)):
+            fh.write('sunoem getval %s\n' % (CPU_LOCATION % i))
+        fh.seek(0)
+        cmd = ["exec", fh.name]
+        driver_info = _parse_driver_info(task.node)
+
+        try:
+            out, _err = _exec_ipmitool(driver_info, cmd)
+        except (exception.PasswordFileFailedToCreate,
+                processutils.ProcessExecutionError) as err:
+            LOG.warning(_LW('IPMI CPU inspection failed for node %(node)s '
+                            'when executing "ipmitool %(cmd)s". '
+                            'Error: %(error)s'),
+                        {'node': task.node.uuid,
+                         'cmd': cmd, 'error': err})
+            raise exception.IPMIFailure(cmd=cmd)
+        fh.close()
+        return out
+
+    def _create_port_if_not_exist(self, node, mac):
+        """Create ironic port if not existing for this MAC
+        :param task: Node to creaate port for.
+        :param mac: MAC address to use for port.
+        """
+        node_id = node.id
+        port_dict = {'address': mac, 'node_id': node_id}
+        mydbapi = dbapi.get_instance()
+        try:
+            mydbapi.create_port(port_dict)
+            LOG.info(_LI("Port created for MAC address %(mac)s for node "
+                         "%(node)s."), {'mac': mac, 'node': node.uuid})
+        except exception.MACAlreadyExists:
+            LOG.warn(_LW("Port already exists for MAC address %(mac)s "
+                         "for node %(node)s."),
+                     {'mac': mac, 'node': node.uuid})
+
+
 class AIService():
     """AI Service"""
 
@@ -2131,7 +2336,7 @@
             self.copy_remote_file(iso, remote_iso)
         except:
             if PLATFORM == "SunOS":
-                _umount_archive(mount_dir, temp_uar)
+                _umount_archive(mount_dir)
                 if urlparse(archive_uri).scheme == "glance":
                     _image_refcount_adjust(temp_uar, -1)
             else:
@@ -2157,7 +2362,7 @@
         except Exception as _err:
             self.delete_remote_file(remote_iso)
             if PLATFORM == "SunOS":
-                _umount_archive(mount_dir, temp_uar)
+                _umount_archive(mount_dir)
             else:
                 _image_refcount_adjust(temp_uar, -1)
             raise AICreateServiceFail(
@@ -2168,7 +2373,7 @@
 
         if PLATFORM == "SunOS":
             # 5. Unmount UAR
-            _umount_archive(mount_dir, temp_uar)
+            _umount_archive(mount_dir)
 
         # 6. Decrement reference count for image
         if temp_uar is not None:
@@ -2186,12 +2391,12 @@
             raise AIDeleteServiceFail(
                 _("Failed to delete AI Service %s") % (self.name))
 
-    def create_client(self, mac, arch, archive_uri, auth_token,
+    def create_client(self, mac, cpu_arch, archive_uri, auth_token,
                       publishers, fmri):
         """Create a client associated with this service
 
         :param mac: MAC Address of client to create
-        :param arch: Machine architecture for this node
+        :param cpu_arch: Machine architecture for this node
         :param archive_uri: URI of archive to install node from
         :param auth_token: Authorization token for glance UAR retrieval
         :param publishers: IPS publishers list in name@origin format
@@ -2203,7 +2408,7 @@
             mac + " -n " + self.name
 
         # Add specific boot arguments for 'x86' clients only
-        if arch == 'x86':
+        if cpu_arch == 'x86':
             ai_cmd += " -b install=true,console=ttya"
 
             if archive_uri:
@@ -2228,8 +2433,8 @@
             raise AICreateClientFail(_("Failed to create AI Client %s") %
                                      (mac))
 
-        # If arch x86 customize grub reducing grub menu timeout to 0
-        if arch == 'x86':
+        # If cpu_arch x86 customize grub reducing grub menu timeout to 0
+        if cpu_arch == 'x86':
             custom_grub = "/tmp/%s.grub" % (mac)
             ai_cmd = "/usr/bin/pfexec /usr/sbin/installadm export -e " + \
                 mac + " -G | /usr/bin/sed -e 's/timeout=30/timeout=0/'" + \
--- a/components/openstack/ironic/files/drivers/solaris.py	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/ironic/files/drivers/solaris.py	Fri Feb 05 17:54:17 2016 -0500
@@ -41,4 +41,5 @@
         self.console = None   # Not implemented yet
         self.rescue = None    # Not implemented yet
         self.management = solaris_ipmitool.SolarisManagement()
+        self.inspect = solaris_ipmitool.SolarisInspect()
         self.vendor = None    # No VendorSpecific methods yet
--- a/components/openstack/ironic/files/ironic-api.xml	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/ironic/files/ironic-api.xml	Fri Feb 05 17:54:17 2016 -0500
@@ -30,6 +30,11 @@
       <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/ironic/ironic-upgrade' />
+    </dependency>
+
     <!-- create a dependency on the ironic-db service ensuring the database
          is created/synced for all other services. -->
     <dependency name='ironic_db' grouping='optional_all' restart_on='error'
--- a/components/openstack/ironic/files/ironic-conductor.xml	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/ironic/files/ironic-conductor.xml	Fri Feb 05 17:54:17 2016 -0500
@@ -30,6 +30,11 @@
       <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/ironic/ironic-upgrade' />
+    </dependency>
+
     <!-- create a dependency on the ironic-db service ensuring the database
          is created/synced for all other services. -->
     <dependency name='ironic_db' grouping='optional_all' restart_on='error'
--- a/components/openstack/ironic/files/ironic-db.xml	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/ironic/files/ironic-db.xml	Fri Feb 05 17:54:17 2016 -0500
@@ -30,6 +30,11 @@
       <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/ironic/ironic-upgrade' />
+    </dependency>
+
     <dependency name='ntp' grouping='optional_all' restart_on='none'
       type='service'>
       <service_fmri value='svc:/network/ntp'/>
--- a/components/openstack/ironic/files/ironic-keystone-setup.sh	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-#!/usr/bin/env bash
-
-# Copyright 2013 OpenStack Foundation
-#
-# 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.
-
-# Sample initial data for Keystone ironic setup using python-keystoneclient
-#
-# Creates ironic user and user-role, then creates ironic keystone service.
-# Finally creates keystone-endpoint of required.
-#
-# If any keystone components already exist, will remove them before attempting
-# to create.
-#
-# Disable creation of endpoints by setting DISABLE_ENDPOINTS environment
-# variable. Use this with the Catalog Templated backend.
-#
-# Tenant               User      Roles
-# -------------------------------------------------------
-# service              ironic    admin
-
-# By default, passwords used are those in the OpenStack Install and Deploy
-# Manual. One can override these (publicly known, and hence, insecure) passwords
-# by setting the appropriate environment variables. A common default password
-# can be used by the "SERVICE_PASSWORD" environment variable.
-
-PATH=/usr/bin
-
-IRONIC_PASSWORD=${IRONIC_PASSWORD:-${SERVICE_PASSWORD:-ironic}}
-
-CONTROLLER_PUBLIC_ADDRESS=${CONTROLLER_PUBLIC_ADDRESS:-localhost}
-CONTROLLER_ADMIN_ADDRESS=${CONTROLLER_ADMIN_ADDRESS:-localhost}
-CONTROLLER_INTERNAL_ADDRESS=${CONTROLLER_INTERNAL_ADDRESS:-localhost}
-
-IRONIC_PUBLIC_ADDRESS=${IRONIC_PUBLIC_ADDRESS:-$CONTROLLER_PUBLIC_ADDRESS}
-IRONIC_ADMIN_ADDRESS=${IRONIC_ADMIN_ADDRESS:-$CONTROLLER_ADMIN_ADDRESS}
-IRONIC_INTERNAL_ADDRESS=${IRONIC_INTERNAL_ADDRESS:-$CONTROLLER_INTERNAL_ADDRESS}
-
-export OS_AUTH_URL="http://localhost:5000/v2.0"
-export OS_USERNAME="admin"
-export OS_PASSWORD="secrete"
-export OS_TENANT_NAME="demo"
-
-function get_id () {
-    echo `"$@" | grep ' id ' | awk '{print $4}'`
-}
-
-function get_role_id () {
-    echo `"$@" | grep ' admin ' | awk '{print $2}'`
-}
-
-function get_endpoint_id () {
-    echo `"$@" | grep $KEYSTONE_SERVICE | awk '{print $2}'`
-}
-
-#
-# Service tenant
-#
-SERVICE_TENANT=$(get_id keystone tenant-get service)
-
-#
-# Admin Role
-#
-ADMIN_ROLE=$(get_role_id keystone user-role-list)
-
-
-#
-# Ironic User
-#
-IRONIC_USER=$(get_id keystone user-get ironic 2> /dev/null)
-if ! [[ -z "$IRONIC_USER" ]]; then
-  keystone user-role-remove --user=ironic \
-                            --role=admin \
-                            --tenant=service
-  keystone user-delete ironic
-fi
-IRONIC_USER=$(get_id keystone user-create --name=ironic \
-                                          --pass="${IRONIC_PASSWORD}")
-keystone user-role-add --user-id $IRONIC_USER \
-                       --role-id $ADMIN_ROLE \
-                       --tenant-id $SERVICE_TENANT
-
-#
-# Ironic service
-#
-KEYSTONE_SERVICE=$(get_id keystone service-get ironic 2> /dev/null)
-if ! [[ -z "$KEYSTONE_SERVICE" ]]; then
-  KEYSTONE_ENDPOINT=$(get_endpoint_id keystone endpoint-list)
-  keystone endpoint-delete $KEYSTONE_ENDPOINT
-  keystone service-delete ironic
-fi
-
-KEYSTONE_SERVICE=$(get_id \
-keystone service-create --name=ironic \
-                        --type=baremetal \
-                        --description="Ironic Bare Metal Provisioning Service")
-if [[ -z "$DISABLE_ENDPOINTS" ]]; then
-    keystone endpoint-create --region RegionOne --service-id $KEYSTONE_SERVICE \
-        --publicurl "http://$IRONIC_PUBLIC_ADDRESS:6385" \
-        --adminurl "http://$IRONIC_ADMIN_ADDRESS:6385" \
-        --internalurl "http://$IRONIC_INTERNAL_ADDRESS:6385"
-fi
--- a/components/openstack/ironic/files/ironic-manifest.ksh	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/ironic/files/ironic-manifest.ksh	Fri Feb 05 17:54:17 2016 -0500
@@ -1,6 +1,6 @@
 #!/bin/ksh93
 
-# 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
@@ -400,7 +400,7 @@
     /usr/bin/aimanifest add $file/credentials/http_auth_token $AUTH_TOKEN
   fi
   inspath=$(/usr/bin/aimanifest add -r $swpath/software_data@action install)
-  /usr/bin/aimanifest add $inspath/name global
+  /usr/bin/aimanifest add $inspath/name "*"
 fi
 
 if [[ -n "$PUBLISHERS" || -n "$FMRI" ]]; then
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/ironic/files/ironic-upgrade	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,86 @@
+#!/usr/bin/python2.7
+
+# Copyright (c) 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 glob
+import os
+from subprocess import check_call, Popen, PIPE
+import sys
+import traceback
+
+import smf_include
+import sqlalchemy
+
+from openstack_common import alter_mysql_tables, create_backups, modify_conf
+
+IRONIC_CONF_MAPPINGS = {
+    # Deprecated group/name
+    ('keystone_authtoken', 'admin_token'): (None, None),
+    ('keystone_authtoken', 'auth_admin_prefix'): (None, None),
+    ('DEFAULT', 'log_format'): (None, None),
+    ('DEFAULT', 'fake_rabbit'): (None, None),
+}
+
+IRONIC_CONF_EXCEPTIONS = []
+
+
+def start():
+    # pull out the current version of config/upgrade-id
+    p = Popen(['/usr/bin/svcprop', '-p', 'config/upgrade-id',
+               os.environ['SMF_FMRI']], stdout=PIPE, stderr=PIPE)
+    curr_ver, _err = p.communicate()
+    curr_ver = curr_ver.strip()
+
+    # extract the openstack-upgrade-id from the pkg
+    p = Popen(['/usr/bin/pkg', 'contents', '-H', '-t', 'set', '-o', 'value',
+               '-a', 'name=openstack.upgrade-id',
+               'pkg:/cloud/openstack/ironic'], stdout=PIPE, stderr=PIPE)
+    pkg_ver, _err = p.communicate()
+    pkg_ver = pkg_ver.strip()
+
+    if curr_ver == pkg_ver:
+        # No need to upgrade
+        sys.exit(smf_include.SMF_EXIT_OK)
+
+    # look for any .new files
+    if glob.glob('/etc/ironic/*.new'):
+        # the versions are different, so perform an upgrade
+        # modify the configuration files
+
+        # backup all the old configuration files
+        create_backups('/etc/ironic')
+
+        modify_conf('/etc/ironic/ironic.conf', IRONIC_CONF_MAPPINGS,
+                    IRONIC_CONF_EXCEPTIONS)
+
+    # update the current version
+    check_call(['/usr/sbin/svccfg', '-s', os.environ['SMF_FMRI'], 'setprop',
+               'config/upgrade-id', '=', pkg_ver])
+    check_call(['/usr/sbin/svccfg', '-s', os.environ['SMF_FMRI'], 'refresh'])
+
+    sys.exit(smf_include.SMF_EXIT_OK)
+
+
+if __name__ == '__main__':
+    os.putenv('LC_ALL', 'C')
+    try:
+        smf_include.smf_main()
+    except RuntimeError:
+        sys.exit(smf_include.SMF_EXIT_ERR_FATAL)
+    except Exception as err:
+        print 'Unknown error:  %s' % err
+        print
+        traceback.print_exc(file=sys.stdout)
+        sys.exit(smf_include.SMF_EXIT_ERR_FATAL)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/ironic/files/ironic-upgrade.xml	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,79 @@
+<?xml version="1.0" ?>
+<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
+<!--
+ Copyright (c) 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="ironic">
+
+  <service version="1" type="service"
+    name="application/openstack/ironic/ironic-upgrade">
+
+    <dependency name='multiuser' grouping='require_all' restart_on='error'
+      type='service'>
+      <service_fmri value='svc:/milestone/multi-user:default' />
+    </dependency>
+
+    <logfile_attributes permissions='600'/>
+
+    <exec_method timeout_seconds="300" type="method" name="start"
+      exec="/lib/svc/method/ironic-upgrade %m">
+      <method_context>
+        <method_credential user='ironic' group='ironic' />
+      </method_context>
+    </exec_method>
+    <exec_method timeout_seconds="60" type="method" name="stop"
+      exec=":true"/>
+
+    <property_group type="framework" name="startd">
+      <propval type="astring" name="duration" value="transient"/>
+    </property_group>
+
+    <instance name='default' enabled='true'>
+      <!-- to start/stop/refresh the service -->
+      <property_group name='general' type='framework'>
+        <propval name='action_authorization' type='astring'
+                 value='solaris.smf.manage.ironic' />
+        <propval name='value_authorization' type='astring'
+                 value='solaris.smf.value.ironic' />
+      </property_group>
+
+      <property_group name="config" type="application">
+        <propval type="astring" name="upgrade-id" value="" />
+        <propval name='value_authorization' type='astring'
+                 value='solaris.smf.value.ironic' />
+      </property_group>
+
+    </instance>
+
+    <template>
+      <common_name>
+        <loctext xml:lang="C">
+          OpenStack Ironic Upgrade Service
+        </loctext>
+      </common_name>
+      <description>
+        <loctext xml:lang="C">
+          ironic-upgrade is a transient service to upgrade the Ironic
+          configuration across major release version changes.
+        </loctext>
+      </description>
+    </template>
+  </service>
+</service_bundle>
--- a/components/openstack/ironic/files/ironic.conf	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/ironic/files/ironic.conf	Fri Feb 05 17:54:17 2016 -0500
@@ -4,129 +4,13 @@
 # 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
-
-# SSL version to use (valid only if SSL enabled). valid values
-# are TLSv1, SSLv23 and SSLv3. SSLv2 may be available on some
-# distributions. (string value)
-#kombu_ssl_version=
-
-# SSL key file (valid only if SSL enabled). (string value)
-#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
-
-# RabbitMQ HA cluster host:port pairs. (list value)
-#rabbit_hosts=$rabbit_host:$rabbit_port
-
-# Connect over SSL for RabbitMQ. (boolean value)
-#rabbit_use_ssl=false
-
-# The RabbitMQ userid. (string value)
-#rabbit_userid=guest
-
-# The RabbitMQ password. (string value)
-#rabbit_password=guest
-
-# the RabbitMQ login method (string value)
-#rabbit_login_method=AMQPLAIN
-
-# The RabbitMQ virtual host. (string value)
-#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)
-#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
-# value)
-#rabbit_ha_queues=false
-
-# If passed, use a fake RabbitMQ provider. (boolean value)
-#fake_rabbit=false
-
 # 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=oslo.messaging._drivers.matchmaker.MatchMakerLocalhost
+#rpc_zmq_matchmaker=oslo_messaging._drivers.matchmaker.MatchMakerLocalhost
 
 # ZeroMQ receiver listening port. (integer value)
 #rpc_zmq_port=9501
@@ -156,7 +40,7 @@
 # Heartbeat time-to-live. (integer value)
 #matchmaker_heartbeat_ttl=600
 
-# Size of RPC greenthread pool. (integer value)
+# Size of RPC thread pool. (integer value)
 #rpc_thread_pool_size=64
 
 # Driver or drivers to handle sending notifications. (multi
@@ -192,9 +76,6 @@
 # IP address of this host. (string value)
 #my_ip=10.0.0.1
 
-# Use IPv6. (boolean value)
-#use_ipv6=false
-
 
 #
 # Options defined in ironic.api.app
@@ -204,6 +85,10 @@
 # (string value)
 #auth_strategy=keystone
 
+# Enable pecan debug mode. WARNING: this is insecure and
+# should not be used in production. (boolean value)
+#pecan_debug=false
+
 
 #
 # Options defined in ironic.common.driver_factory
@@ -268,6 +153,9 @@
 # value)
 #isolinux_config_template=$pybasedir/common/isolinux_config.template
 
+# Template file for grub configuration file. (string value)
+#grub_config_template=$pybasedir/common/grub_conf.template
+
 
 #
 # Options defined in ironic.common.paths
@@ -287,18 +175,6 @@
 
 
 #
-# Options defined in ironic.common.policy
-#
-
-# JSON file representing policy. (string value)
-#policy_file=policy.json
-
-# Rule checked when requested rule is not found. (string
-# value)
-#policy_default_rule=default
-
-
-#
 # Options defined in ironic.common.service
 #
 
@@ -343,7 +219,6 @@
 # (string value)
 #auth_strategy=keystone
 
-
 #
 # Options defined in ironic.openstack.common.eventlet_backdoor
 #
@@ -360,17 +235,6 @@
 
 
 #
-# Options defined in ironic.openstack.common.lockutils
-#
-
-# Enables or disables inter-process locks. (boolean value)
-#disable_process_locking=false
-
-# Directory to use for lock files. (string value)
-#lock_path=<None>
-
-
-#
 # Options defined in ironic.openstack.common.log
 #
 
@@ -402,7 +266,7 @@
 #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
+#default_log_levels=amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN
 
 # Enables or disables publication of error events. (boolean
 # value)
@@ -473,6 +337,15 @@
 #run_external_periodic_tasks=true
 
 
+#
+# Options defined in ironic.openstack.common.versionutils
+#
+
+# Enables or disables fatal status of deprecations. (boolean
+# value)
+#fatal_deprecations=false
+
+
 [agent]
 
 #
@@ -489,6 +362,23 @@
 # Neutron bootfile DHCP parameter. (string value)
 #agent_pxe_bootfile_name=pxelinux.0
 
+# Priority to run in-band erase devices via the Ironic Python
+# Agent ramdisk. If unset, will use the priority set in the
+# ramdisk (defaults to 10 for the GenericHardwareManager). If
+# set to 0, will not run during cleaning. (integer value)
+#agent_erase_devices_priority=<None>
+
+# Whether Ironic will manage TFTP files for the deploy
+# ramdisks. If set to False, you will need to configure your
+# own TFTP server that allows booting the deploy ramdisks.
+# (boolean value)
+#manage_tftp=true
+
+
+#
+# Options defined in ironic.drivers.modules.agent_base_vendor
+#
+
 # Maximum interval (in seconds) for agent heartbeats. (integer
 # value)
 #heartbeat_timeout=300
@@ -541,6 +431,30 @@
 #ssh_key_contents=<None>
 
 
+[amt]
+
+#
+# Options defined in ironic.drivers.modules.amt.common
+#
+
+# Protocol used for AMT endpoint, support http/https (string
+# value)
+#protocol=http
+
+
+#
+# Options defined in ironic.drivers.modules.amt.power
+#
+
+# Maximum number of times to attempt an AMT operation, before
+# failing (integer value)
+#max_attempts=3
+
+# Amount of time (in seconds) to wait, before retrying an AMT
+# operation (integer value)
+#action_wait=10
+
+
 [api]
 
 #
@@ -634,6 +548,31 @@
 # the check entirely. (integer value)
 #sync_local_state_interval=180
 
+# Whether to upload the config drive to Swift. (boolean value)
+#configdrive_use_swift=false
+
+# Name of the Swift container to store config drive data. Used
+# when configdrive_use_swift is True. (string value)
+#configdrive_swift_container=ironic_configdrive_container
+
+# Timeout (seconds) for waiting for node inspection. 0 -
+# unlimited. (integer value)
+#inspect_timeout=1800
+
+# Cleaning is a configurable set of steps, such as erasing
+# disk drives, that are performed on the node to ensure it is
+# in a baseline state and ready to be deployed to. This is
+# done after instance deletion, and during the transition from
+# a "managed" to "available" state. When enabled, the
+# particular steps performed to clean a node depend on which
+# driver that node is managed by; see the individual driver's
+# documentation for details. NOTE: The introduction of the
+# cleaning operation causes instance deletion to take
+# significantly longer. In an environment where all tenants
+# are trusted (eg, because there is only one tenant), this
+# option could be safely disabled. (boolean value)
+#clean_nodes=true
+
 
 [console]
 
@@ -714,8 +653,9 @@
 # Deprecated group/name - [DATABASE]/sql_max_pool_size
 #max_pool_size=<None>
 
-# Maximum db connection retries during startup. Set to -1 to
-# specify an infinite retry count. (integer value)
+# 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
@@ -751,20 +691,22 @@
 # connection lost. (boolean value)
 #use_db_reconnect=false
 
-# Seconds between database connection retries. (integer value)
+# Seconds between retries of a database transaction. (integer
+# value)
 #db_retry_interval=1
 
-# If True, increases the interval between database connection
-# retries up to db_max_retry_interval. (boolean value)
+# 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
-# database connection retries. (integer value)
+# retries of a database operation. (integer value)
 #db_max_retry_interval=10
 
-# Maximum database connection retries before error is raised.
-# Set to -1 to specify an infinite retry count. (integer
-# value)
+# 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
 
 
@@ -776,6 +718,25 @@
 #mysql_engine=InnoDB
 
 
+[deploy]
+
+#
+# Options defined in ironic.drivers.modules.deploy_utils
+#
+
+# Size of EFI system partition in MiB when configuring UEFI
+# systems for local boot. (integer value)
+#efi_system_partition_size=200
+
+# Block size to use when writing to the nodes disk. (string
+# value)
+#dd_block_size=1M
+
+# Maximum attempts to verify an iSCSI connection is active,
+# sleeping 1 second between attempts. (integer value)
+#iscsi_verify_attempts=3
+
+
 [dhcp]
 
 #
@@ -787,6 +748,26 @@
 #dhcp_provider=neutron
 
 
+[discoverd]
+
+#
+# Options defined in ironic.drivers.modules.discoverd
+#
+
+# whether to enable inspection using ironic-discoverd (boolean
+# value)
+#enabled=false
+
+# ironic-discoverd HTTP endpoint. If this is not set, the
+# ironic-discoverd client default (http://127.0.0.1:5050) will
+# be used. (string value)
+#service_url=<None>
+
+# period (in seconds) to check status of nodes on inspection
+# (integer value)
+#status_check_period=60
+
+
 [disk_partitioner]
 
 #
@@ -858,6 +839,15 @@
 # (string value)
 #swift_container=glance
 
+# This should match a config by the same name in the Glance
+# configuration file. When set to 0, a single-tenant store
+# will only use one container to store all images. When set to
+# an integer value between 1 and 32, a single-tenant store
+# will use multiple containers to store images, and this value
+# will determine how many containers are created. (integer
+# value)
+#swift_store_multiple_containers_seed=0
+
 
 #
 # Options defined in ironic.common.image_service
@@ -875,7 +865,7 @@
 
 # A list of the glance api servers available to ironic. Prefix
 # with https:// for SSL-based glance API servers. Format is
-# [hostname|IP]:port. (string value)
+# [hostname|IP]:port. (list value)
 #glance_api_servers=<None>
 
 # Allow to perform insecure SSL (https) requests to glance.
@@ -886,8 +876,9 @@
 # (integer value)
 #glance_num_retries=0
 
-# Default protocol to use when connecting to glance. Set to
-# https for SSL. (string value)
+# Authentication strategy to use when connecting to glance.
+# Only "keystone" and "noauth" are currently supported by
+# ironic. (string value)
 #auth_strategy=keystone
 
 
@@ -912,6 +903,43 @@
 
 
 #
+# Options defined in ironic.drivers.modules.ilo.deploy
+#
+
+# Priority for erase devices clean step. If unset, it defaults
+# to 10. If set to 0, the step will be disabled and will not
+# run during cleaning. (integer value)
+#clean_priority_erase_devices=<None>
+
+
+#
+# Options defined in ironic.drivers.modules.ilo.management
+#
+
+# Priority for reset_ilo clean step. (integer value)
+#clean_priority_reset_ilo=1
+
+# Priority for reset_bios_to_default clean step. (integer
+# value)
+#clean_priority_reset_bios_to_default=10
+
+# Priority for reset_secure_boot_keys clean step. This step
+# will reset the secure boot keys to manufacturing  defaults.
+# (integer value)
+#clean_priority_reset_secure_boot_keys_to_default=20
+
+# Priority for clear_secure_boot_keys clean step. This step is
+# not enabled by default. It can be enabled to to clear all
+# secure boot keys enrolled with iLO. (integer value)
+#clean_priority_clear_secure_boot_keys=0
+
+# Priority for reset_ilo_credential clean step. This step
+# requires "ilo_change_password" parameter to be updated in
+# nodes's driver_info with the new password. (integer value)
+#clean_priority_reset_ilo_credential=30
+
+
+#
 # Options defined in ironic.drivers.modules.ilo.power
 #
 
@@ -930,8 +958,12 @@
 # Options defined in ironic.drivers.modules.ipminative
 #
 
-# Maximum time in seconds to retry IPMI operations. (integer
-# value)
+# Maximum time in seconds to retry IPMI operations. There is a
+# tradeoff when setting this value. Setting this too low may
+# cause older BMCs to crash and require a hard reset. However,
+# setting too high can cause the sync power state periodic
+# task to hang when there are slow or unresponsive BMCs.
+# (integer value)
 #retry_timeout=60
 
 # Minimum time, in seconds, between IPMI operations sent to a
@@ -941,79 +973,73 @@
 #min_command_interval=5
 
 
+[irmc]
+
+#
+# Options defined in ironic.drivers.modules.irmc.common
+#
+
+# Port to be used for iRMC operations, either 80 or 443
+# (integer value)
+#port=443
+
+# Authentication method to be used for iRMC operations, either
+# "basic" or "digest" (string value)
+#auth_method=basic
+
+# Timeout (in seconds) for iRMC operations (integer value)
+#client_timeout=60
+
+# Sensor data retrieval method, either "ipmitool" or "scci"
+# (string value)
+#sensor_method=ipmitool
+
+
+[keystone]
+
+#
+# Options defined in ironic.common.keystone
+#
+
+# The region used for getting endpoints of OpenStackservices.
+# (string value)
+#region_name=<None>
+
+
 [keystone_authtoken]
 
 #
 # Options defined in keystonemiddleware.auth_token
 #
 
-# 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 public Identity API endpoint (string value)
+# Complete public Identity API endpoint. (string value)
 #auth_uri=<None>
 
-# Complete admin Identity API endpoint. This should specify
-# the unversioned root endpoint e.g. https://localhost:35357/
-# (string value)
-#identity_uri=<None>
-
-# API version of the admin Identity API endpoint (string
+# 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)
+# components. (boolean value)
 #delay_auth_decision=false
 
 # Request timeout value for communicating with Identity API
-# server. (boolean value)
+# 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
 
-# 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>
-
-# Keystone account username (string value)
-admin_user=%SERVICE_USER%
-
-# Keystone account password (string value)
-admin_password=%SERVICE_PASSWORD%
-
-# Keystone service account tenant name to validate user tokens
-# (string value)
-admin_tenant_name=%SERVICE_TENANT_NAME%
-
-# Env key for the swift cache (string value)
+# Env key for the swift cache. (string value)
 #cache=<None>
 
-# Required if Keystone server requires client certificate
+# Required if identity server requires client certificate
 # (string value)
 #certfile=<None>
 
-# Required if Keystone server requires client certificate
+# Required if identity server requires client certificate
 # (string value)
 #keyfile=<None>
 
@@ -1024,7 +1050,7 @@
 # Verify HTTPS connections. (boolean value)
 #insecure=false
 
-# Directory used to cache files related to PKI tokens (string
+# Directory used to cache files related to PKI tokens. (string
 # value)
 signing_dir=$state_path/keystone-signing
 
@@ -1047,7 +1073,7 @@
 # value)
 #revocation_cache_time=10
 
-# (optional) if defined, indicate whether token data should be
+# (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
@@ -1056,38 +1082,38 @@
 # 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
+# (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
+# (Optional) Number of seconds memcached server is considered
 # dead before it is tried again. (integer value)
 #memcache_pool_dead_retry=300
 
-# (optional) max total number of open connections to every
+# (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
+# (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
+# (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
+# (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
+# (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
+# (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)
@@ -1106,7 +1132,7 @@
 
 # If true, the revocation list will be checked for cached
 # tokens. This requires that PKI tokens are configured on the
-# Keystone server. (boolean value)
+# identity server. (boolean value)
 #check_revocations_for_cached=false
 
 # Hash algorithms to use for hashing PKI tokens. This may be a
@@ -1121,6 +1147,44 @@
 # (list value)
 #hash_algorithms=md5
 
+# Prefix to prepend at the beginning of the path. Deprecated,
+# use identity_uri. (string value)
+#auth_admin_prefix=
+
+# Host providing the admin Identity API endpoint. Deprecated,
+# use identity_uri. (string value)
+#auth_host=127.0.0.1
+
+# Port of the admin Identity API endpoint. Deprecated, use
+# identity_uri. (integer value)
+#auth_port=35357
+
+# Protocol of the admin Identity API endpoint (http or https).
+# Deprecated, use identity_uri. (string value)
+#auth_protocol=https
+
+# Complete admin Identity API endpoint. This should specify
+# the unversioned root endpoint e.g. https://localhost:35357/
+# (string value)
+#identity_uri=<None>
+
+# 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>
+
+# Service username. (string value)
+admin_user=%SERVICE_USER%
+
+# Service user password. (string value)
+admin_password=%SERVICE_PASSWORD%
+
+# Service tenant name. (string value)
+admin_tenant_name=%SERVICE_TENANT_NAME%
+
 
 [matchmaker_redis]
 
@@ -1162,6 +1226,10 @@
 # value)
 #url_timeout=30
 
+# Client retries in the case of a failed request. (integer
+# value)
+#retries=3
+
 # Default authentication strategy to use when connecting to
 # neutron. Can be either "keystone" or "noauth". Running
 # neutron in noauth mode (related to but not affected by this
@@ -1169,6 +1237,239 @@
 # (string value)
 #auth_strategy=keystone
 
+# UUID of the network to create Neutron ports on when booting
+# to a ramdisk for cleaning/zapping using Neutron DHCP (string
+# value)
+#cleaning_network_uuid=<None>
+
+
+[oslo_concurrency]
+
+#
+# Options defined in 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=<None>
+
+
+[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
+
+# Name for the AMQP container (string value)
+#container_name=<None>
+
+# Timeout for inactive connections (in seconds) (integer
+# value)
+#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>
+
+# 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
+
+
+[oslo_messaging_rabbit]
+
+#
+# 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
+
+# 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=
+
+# SSL key file (valid only if SSL enabled). (string value)
+#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
+
+# RabbitMQ HA cluster host:port pairs. (list value)
+#rabbit_hosts=$rabbit_host:$rabbit_port
+
+# Connect over SSL for RabbitMQ. (boolean value)
+#rabbit_use_ssl=false
+
+# The RabbitMQ userid. (string value)
+#rabbit_userid=guest
+
+# The RabbitMQ password. (string value)
+#rabbit_password=guest
+
+# The RabbitMQ login method. (string value)
+#rabbit_login_method=AMQPLAIN
+
+# The RabbitMQ virtual host. (string value)
+#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)
+#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
+# value)
+#rabbit_ha_queues=false
+
+# Deprecated, use rpc_backend=kombu+memory or rpc_backend=fake
+# (boolean value)
+#fake_rabbit=false
+
+
+[oslo_policy]
+
+#
+# Options defined in oslo.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
+
 
 [pxe]
 
@@ -1306,3 +1607,14 @@
 #swift_max_retries=2
 
 
+[virtualbox]
+
+#
+# Options defined in ironic.drivers.modules.virtualbox
+#
+
+# Port on which VirtualBox web service is listening. (integer
+# value)
+#port=18083
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/ironic/ironic.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,1254 @@
+The following applies to all products licensed under the Apache 2.0 License:
+LICENSE:
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+============================================================
+ironic/conductor/utils.py
+ironic/objects/node.py
+ironic/objects/port.py
+ironic/objects/chassis.py
+ironic/api/controllers/v1/__init__.py
+ironic/api/controllers/base.py
+ironic/api/config.py
+ironic/api/middleware/auth_token.py
+ironic/api/middleware/__init__.py
+ironic/api/app.wsgi
+ironic/db/sqlalchemy/alembic/env.py
+ironic/db/sqlalchemy/alembic/versions/2581ebaf0cb2_initial_migration.py
+ironic/db/sqlalchemy/alembic/versions/31baaf680d2b_add_node_instance_info.py
+ironic/db/sqlalchemy/alembic/versions/3cb628139ea4_nodes_add_console_enabled.py
+ironic/db/sqlalchemy/alembic/versions/487deb87cc9d_add_conductor_affinity_and_online.py
+ironic/db/sqlalchemy/alembic/versions/21b331f883ef_add_provision_updated_at.py
+ironic/drivers/drac.py
+ironic/drivers/modules/drac/resource_uris.py
+ironic/drivers/modules/drac/power.py
+ironic/drivers/modules/drac/common.py
+ironic/drivers/modules/drac/client.py
+ironic/drivers/modules/seamicro.py
+ironic/tests/test_driver_factory.py
+ironic/tests/objects/test_chassis.py
+ironic/tests/objects/test_node.py
+ironic/tests/objects/test_port.py
+ironic/tests/db/sqlalchemy/test_types.py
+ironic/tests/test_keystone.py
+ironic/tests/drivers/test_seamicro.py
+ironic/tests/drivers/drac/test_client.py
+ironic/tests/drivers/drac/test_common.py
+ironic/tests/drivers/drac/test_power.py
+ironic/tests/conductor/test_conductor_utils.py
+ironic/tests/api/v1/test_ports.py
+ironic/tests/api/v1/test_chassis.py
+ironic/tests/api/v1/test_nodes.py
+ironic/tests/api/test_acl.py
+ironic/tests/api/test_hooks.py
+ironic/tests/api/utils.py
+ironic/common/keystone.py
+ironic/migrate_nova/migrate_db.py
+ironic/common/context.py
+ironic/openstack/common/periodic_task.py
+etc/apache2/ironic
+
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/common/exception.py
+ironic/db/sqlalchemy/migration.py
+ironic/db/migration.py
+ironic/tests/base.py
+ironic/tests/__init__.py
+ironic/tests/conf_fixture.py
+
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/common/images.py
+ironic/openstack/common/imageutils.py
+
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
+# Copyright (c) 2010 Citrix Systems, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/common/safe_utils.py
+ironic/openstack/common/loopingcall.py
+ironic/openstack/common/service.py
+ironic/openstack/common/jsonutils.py
+
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# Copyright 2011 Justin Santa Barbara
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/common/utils.py
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# Copyright 2011 Justin Santa Barbara
+# Copyright (c) 2012 NTT DOCOMO, INC.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/common/config.py
+ironic/common/paths.py
+ironic/netconf.py
+
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
+# Copyright 2012 Red Hat, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/tests/matchers.py
+
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# Copyright 2012 Hewlett-Packard Development Company, L.P.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+============================================================
+ironic/common/glance_service/base_image_service.py
+ironic/common/image_service.py
+
+# Copyright 2010 OpenStack Foundation
+# Copyright 2013 Hewlett-Packard Development Company, L.P.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/openstack/common/apiclient/base.py
+
+# Copyright 2010 Jacob Kaplan-Moss
+# Copyright 2011 OpenStack Foundation
+# Copyright 2012 Grid Dynamics
+# Copyright 2013 OpenStack Foundation
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/openstack/common/apiclient/exceptions.py
+
+# Copyright 2010 Jacob Kaplan-Moss
+# Copyright 2011 Nebula, Inc.
+# Copyright 2013 Alessio Ababilov
+# Copyright 2013 OpenStack Foundation
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/tests/db/sqlalchemy/test_migrations.py
+
+# Copyright 2010-2011 OpenStack Foundation
+# Copyright 2012-2013 IBM Corp.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/version.py
+ironic/common/policy.py
+ironic/openstack/common/fileutils.py
+ironic/openstack/common/lockutils.py
+ironic/openstack/common/strutils.py
+ironic/openstack/common/context.py
+ironic/openstack/common/local.py
+ironic/openstack/common/importutils.py
+ironic/openstack/common/processutils.py
+ironic/openstack/common/timeutils.py
+
+# Copyright 2011 OpenStack Foundation
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/tests/stubs.py
+
+# Copyright (c) 2011 Citrix Systems, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/openstack/common/excutils.py
+
+# Copyright 2011 OpenStack Foundation.
+# Copyright 2012, Red Hat, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/openstack/common/log.py
+# Copyright 2011 OpenStack Foundation.
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/tests/test_utils.py
+
+# Copyright 2011 Justin Santa Barbara
+# Copyright 2012 Hewlett-Packard Development Company, L.P.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/openstack/common/network_utils.py
+ironic/openstack/common/policy.py
+ironic/tests/fake_policy.py
+
+# Copyright (c) 2012 OpenStack Foundation.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/tests/policy_fixture.py
+
+# Copyright 2012 Hewlett-Packard Development Company, L.P.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+============================================================
+ironic/openstack/common/threadgroup.py
+ironic/openstack/common/cliutils.py
+
+# Copyright 2012 Red Hat, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/openstack/common/uuidutils.py
+
+# Copyright (c) 2012 Intel Corporation.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/common/service.py
+
+# Copyright © 2012 eNovance <[email protected]>
+#
+# Author: Julien Danjou <[email protected]>
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+============================================================
+ironic/api/controllers/root.py
+ironic/api/acl.py
+ironic/api/hooks.py
+ironic/api/middleware/parsable_error.py
+ironic/api/app.py
+
+# Copyright © 2012 New Dream Network, LLC (DreamHost)
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+ironic/tests/db/base.py
+ironic/tests/db/__init__.py
+ironic/migrate_nova/nova_models.py
+ironic/drivers/modules/deploy_utils.py
+
+# Copyright (c) 2012 NTT DOCOMO, INC.
+# All Rights Reserved.
+# flake8: noqa
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/openstack/common/eventlet_backdoor.py
+
+# Copyright (c) 2012 OpenStack Foundation.
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/openstack/common/config/generator.py
+
+# Copyright 2012 SINA Corporation
+# Copyright 2014 Cisco Systems, Inc.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/common/states.py
+ironic/migrate_nova/nova_baremetal_states.py
+
+# Copyright (c) 2012 NTT DOCOMO, INC.
+# Copyright 2010 OpenStack Foundation
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/nova/scheduler/ironic_host_manager.py
+
+# Copyright (c) 2012 NTT DOCOMO, INC.
+# Copyright (c) 2011-2014 OpenStack Foundation
+# Copyright 2014 Red Hat, Inc.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/tests/drivers/test_deploy_utils.py
+
+#    Copyright (c) 2012 NTT DOCOMO, INC.
+#    Copyright 2011 OpenStack Foundation
+#    Copyright 2011 Ilya Alekseyev
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/common/glance_service/service_utils.py
+
+# Copyright 2012 OpenStack Foundation
+# Copyright 2013 Hewlett-Packard Development Company, L.P.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/drivers/modules/ipmitool.py
+ironic/tests/drivers/test_ipmitool.py
+
+# Copyright 2012 Hewlett-Packard Development Company, L.P.
+# Copyright (c) 2012 NTT DOCOMO, INC.
+# Copyright 2014 International Business Machines Corporation
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/openstack/common/gettextutils.py
+
+# Copyright 2012 Red Hat, Inc.
+# Copyright 2013 IBM Corp.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/openstack/common/systemd.py
+
+# Copyright 2012-2014 Red Hat, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/conductor/task_manager.py
+ironic/conductor/rpcapi.py
+ironic/cmd/api.py
+ironic/cmd/conductor.py
+ironic/cmd/dbsync.py
+ironic/cmd/__init__.py
+ironic/objects/conductor.py
+ironic/common/glance_service/service.py
+ironic/common/glance_service/v2/image_service.py
+ironic/common/glance_service/v1/image_service.py
+ironic/common/hash_ring.py
+ironic/drivers/fake.py
+ironic/drivers/pxe.py
+ironic/drivers/base.py
+ironic/drivers/modules/iscsi_deploy.py
+ironic/drivers/modules/pxe.py
+ironic/drivers/modules/fake.py
+ironic/drivers/modules/ssh.py
+ironic/api/__init__.py
+ironic/api/controllers/v1/node.py
+ironic/db/api.py
+ironic/db/sqlalchemy/models.py
+ironic/db/sqlalchemy/api.py
+ironic/nova/virt/ironic/__init__.py
+ironic/tests/test_images.py
+ironic/tests/objects/test_conductor.py
+ironic/tests/db/utils.py
+ironic/tests/db/test_chassis.py
+ironic/tests/db/test_conductor.py
+ironic/tests/db/test_nodes.py
+ironic/tests/db/test_ports.py
+ironic/tests/test_glance_service.py
+ironic/tests/test_swift.py
+ironic/tests/test_hash_ring.py
+ironic/tests/drivers/test_iscsi_deploy.py
+ironic/tests/drivers/test_pxe.py
+ironic/tests/drivers/test_fake.py
+ironic/tests/drivers/test_utils.py
+ironic/tests/drivers/test_ssh.py
+ironic/tests/conductor/test_utils.py
+ironic/tests/conductor/test_task_manager.py
+ironic/tests/conductor/utils.py
+ironic/tests/conductor/test_rpcapi.py
+ironic/tests/api/base.py
+ironic/tests/api/test_base.py
+ironic/tests/test_dbsync.py
+ironic/openstack/common/__init__.py
+setup.py
+
+# Copyright 2013 Hewlett-Packard Development Company, L.P.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/objects/__init__.py
+ironic/objects/base.py
+ironic/objects/utils.py
+ironic/drivers/modules/ipminative.py
+ironic/tests/objects/test_objects.py
+ironic/tests/drivers/test_ipminative.py
+
+#    Copyright 2013 IBM Corp.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/common/driver_factory.py
+ironic/api/controllers/v1/collection.py
+ironic/api/controllers/v1/state.py
+ironic/api/controllers/v1/types.py
+ironic/api/controllers/v1/utils.py
+ironic/api/controllers/v1/chassis.py
+ironic/api/controllers/v1/driver.py
+ironic/api/controllers/link.py
+ironic/tests/test_policy.py
+ironic/tests/api/v1/test_types.py
+ironic/tests/api/v1/test_drivers.py
+ironic/tests/api/v1/test_utils.py
+ironic/tests/api/test_root.py
+
+# Copyright 2013 Red Hat, Inc.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/openstack/common/versionutils.py
+ironic/openstack/common/apiclient/fake_client.py
+
+# Copyright (c) 2013 OpenStack Foundation
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/api/controllers/v1/port.py
+
+# Copyright 2013 UnitedStack Inc.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/drivers/modules/snmp.py
+ironic/tests/drivers/test_snmp.py
+
+# Copyright 2013,2014 Cray Inc
+#
+# Authors: David Hewson <[email protected]>
+#          Stig Telfer <[email protected]>
+#          Mark Goddard <[email protected]>
+#
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/conductor/manager.py
+ironic/tests/conductor/test_manager.py
+
+# Copyright 2013 Hewlett-Packard Development Company, L.P.
+# Copyright 2013 International Business Machines Corporation
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/openstack/common/apiclient/auth.py
+
+# Copyright 2013 OpenStack Foundation
+# Copyright 2013 Spanish National Research Council.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+tools/install_venv_common.py
+
+# Copyright 2013 OpenStack Foundation
+# Copyright 2013 IBM Corp.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/common/swift.py
+ironic/tests/dhcp/test_neutron.py
+ironic/dhcp/neutron.py
+
+# Copyright 2014 OpenStack Foundation
+# All Rights Reserved
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/common/network.py
+ironic/common/pxe_utils.py
+ironic/common/dhcp_factory.py
+ironic/drivers/modules/agent_client.py
+ironic/drivers/modules/agent.py
+ironic/drivers/agent.py
+ironic/tests/dhcp/test_factory.py
+ironic/tests/objects/utils.py
+ironic/tests/test_network.py
+ironic/tests/test_pxe_utils.py
+ironic/tests/drivers/test_agent_client.py
+ironic/tests/drivers/test_agent.py
+ironic/dhcp/base.py
+ironic/dhcp/none.py
+
+# Copyright 2014 Rackspace, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/__init__.py
+ironic/common/i18n.py
+ironic/drivers/utils.py
+ironic/drivers/modules/ilo/power.py
+ironic/drivers/modules/ilo/deploy.py
+ironic/drivers/modules/ilo/common.py
+ironic/drivers/ilo.py
+ironic/tests/drivers/third_party_driver_mocks.py
+ironic/tests/drivers/__init__.py
+ironic/tests/drivers/ilo/test_common.py
+ironic/tests/drivers/ilo/test_deploy.py
+ironic/tests/drivers/ilo/test_power.py
+
+# Copyright (c) 2014 Hewlett-Packard Development Company, L.P.
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+============================================================
+ironic/common/disk_partitioner.py
+ironic/common/boot_devices.py
+ironic/common/rpc.py
+ironic/drivers/modules/iboot.py
+ironic/drivers/modules/drac/management.py
+ironic/db/sqlalchemy/alembic/versions/3bea56f25597_add_unique_constraint_to_instance_uuid.py
+ironic/tests/test_disk_partitioner.py
+ironic/tests/drivers/test_image_cache.py
+ironic/tests/drivers/test_iboot.py
+ironic/tests/drivers/drac/utils.py
+ironic/tests/drivers/drac/test_management.py
+
+# Copyright 2014 Red Hat, Inc.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/tests/drivers/test_console_utils.py
+ironic/drivers/modules/console_utils.py
+
+# Copyright 2014 International Business Machines Corporation
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironic/drivers/modules/image_cache.py
+ironic/nova/virt/ironic/driver.py
+ironic/nova/compute/manager.py
+
+# Copyright 2014 Red Hat, Inc.
+# Copyright 2013 Hewlett-Packard Development Company, L.P.
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+============================================================
+ironic/locale/ironic-log-error.pot
+ironic/locale/ironic-log-critical.pot
+ironic/locale/ironic-log-info.pot
+ironic/locale/ironic-log-warning.pot
+
+# Copyright (C) 2014 ORGANIZATION
+# This file is distributed under the same license as the ironic project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+
+============================================================
+ironic/locale/fr/LC_MESSAGES/ironic-log-critical.po
+
+# Copyright (C) 2014 ORGANIZATION
+# This file is distributed under the same license as the ironic project.
+#
+# Translators:
+# Maxime COQUEREL <[email protected]>, 2014
+# Andrew_Melim <[email protected]>, 2014
+
+============================================================
--- a/components/openstack/ironic/ironic.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/ironic/ironic.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,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.
 #
 
 set name=pkg.fmri \
@@ -28,7 +28,7 @@
 set name=pkg.summary value="OpenStack Ironic"
 set name=pkg.description \
     value="Provisioning of bare metal instances in OpenStack."
-set name=pkg.human-version value="Juno $(COMPONENT_VERSION)"
+set name=pkg.human-version value="Kilo $(COMPONENT_VERSION)"
 set name=com.oracle.info.description \
     value="Ironic, the OpenStack bare metal provisioning service"
 set name=com.oracle.info.tpno value=$(TPNO)
@@ -41,7 +41,8 @@
 set name=info.upstream value="OpenStack <[email protected]>"
 set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
 set name=openstack.upgrade-id reboot-needed=true value=$(COMPONENT_BE_VERSION)
-set name=org.opensolaris.arc-caseid value=PSARC/2013/350 value=PSARC/2015/172
+set name=org.opensolaris.arc-caseid value=PSARC/2013/350 value=PSARC/2015/172 \
+    value=PSARC/2015/535
 set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
 #
 dir  path=etc/ironic owner=ironic group=ironic mode=0700
@@ -60,12 +61,12 @@
 file path=lib/svc/manifest/application/openstack/ironic-api.xml
 file path=lib/svc/manifest/application/openstack/ironic-conductor.xml
 file path=lib/svc/manifest/application/openstack/ironic-db.xml
+file path=lib/svc/manifest/application/openstack/ironic-upgrade.xml
 file files/ironic-api path=lib/svc/method/ironic-api
 file files/ironic-conductor path=lib/svc/method/ironic-conductor
 file files/ironic-db path=lib/svc/method/ironic-db
+file files/ironic-upgrade path=lib/svc/method/ironic-upgrade
 file path=usr/bin/ironic-dbsync
-file files/ironic-keystone-setup.sh \
-    path=usr/demo/openstack/keystone/ironic-keystone-setup.sh mode=0555
 file usr/bin/ironic-api path=usr/lib/ironic/ironic-api mode=0555
 file usr/bin/ironic-conductor path=usr/lib/ironic/ironic-conductor mode=0555
 file files/ironic-manifest.ksh path=usr/lib/ironic/ironic-manifest.ksh mode=0555
@@ -96,6 +97,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/api/controllers/v1/state.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/api/controllers/v1/types.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/api/controllers/v1/utils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/api/expose.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/api/hooks.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/api/middleware/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/api/middleware/auth_token.py
@@ -112,6 +114,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/disk_partitioner.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/driver_factory.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/exception.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/fsm.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/glance_service/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/glance_service/base_image_service.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/glance_service/service.py
@@ -120,6 +123,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/glance_service/v1/image_service.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/glance_service/v2/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/glance_service/v2/image_service.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/grub_conf.template
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/hash_ring.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/i18n.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/common/image_service.py
@@ -149,12 +153,19 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/README
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/env.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/script.py.mako
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/versions/1e1d5ace7dc6_add_inspection_started_at_and_.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/versions/21b331f883ef_add_provision_updated_at.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/versions/242cc6a923b3_add_node_maintenance_reason.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/versions/2581ebaf0cb2_initial_migration.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/versions/2fb93ffd2af1_increase_node_name_length.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/versions/31baaf680d2b_add_node_instance_info.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/versions/3ae36a5f5131_add_logical_name.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/versions/3bea56f25597_add_unique_constraint_to_instance_uuid.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/versions/3cb628139ea4_nodes_add_console_enabled.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/versions/487deb87cc9d_add_conductor_affinity_and_online.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/versions/4f399b21ae71_add_node_clean_step.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/versions/5674c57409b9_replace_nostate_with_available.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/alembic/versions/bb59b63f55a_add_node_driver_internal_info.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/api.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/migration.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/db/sqlalchemy/models.py
@@ -170,11 +181,19 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/ilo.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/agent.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/agent_base_vendor.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/agent_client.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/agent_config.template
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/amt/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/amt/common.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/amt/management.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/amt/power.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/amt/resource_uris.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/amt/vendor.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/boot.ipxe
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/console_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/deploy_utils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/discoverd.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/drac/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/drac/client.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/drac/common.py
@@ -187,11 +206,17 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ilo/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ilo/common.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ilo/deploy.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ilo/inspect.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ilo/management.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ilo/power.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/image_cache.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ipminative.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ipmitool.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ipxe_config.template
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/irmc/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/irmc/common.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/irmc/management.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/irmc/power.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/iscsi_deploy.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/pxe.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/pxe_config.template
@@ -199,13 +224,10 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/snmp.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/solaris_ipmitool.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/ssh.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/modules/virtualbox.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/pxe.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/solaris.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/drivers/utils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/ironic/migrate_nova/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/ironic/migrate_nova/migrate_db.py
-file path=usr/lib/python$(PYVER)/vendor-packages/ironic/migrate_nova/nova_baremetal_states.py
-file path=usr/lib/python$(PYVER)/vendor-packages/ironic/migrate_nova/nova_models.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/netconf.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/nova/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/nova/compute/__init__.py
@@ -224,37 +246,21 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/objects/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/apiclient/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/apiclient/auth.py
-file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/apiclient/base.py
-file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/apiclient/client.py
-file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/apiclient/exceptions.py
-file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/apiclient/fake_client.py
-file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/cliutils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/_i18n.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/config/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/config/generator.py
-file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/context.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/eventlet_backdoor.py
-file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/excutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/fileutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/gettextutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/imageutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/importutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/jsonutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/local.py
-file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/lockutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/log.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/loopingcall.py
-file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/network_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/periodic_task.py
-file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/policy.py
-file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/processutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/service.py
-file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/strutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/systemd.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/threadgroup.py
-file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/timeutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/uuidutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/openstack/common/versionutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironic/version.py
 dir  path=var/lib/ironic owner=ironic group=ironic mode=0700
@@ -263,7 +269,7 @@
 user username=ironic ftpuser=false gcos-field="OpenStack Ironic" group=ironic \
     home-dir=/var/lib/ironic password=NP uid=91
 #
-license LICENSE license="Apache 2.0"
+license ironic.license license="Apache 2.0"
 
 # force a group dependency on the optional anyjson; pkgdepend work is needed to
 # flush this out.
@@ -334,9 +340,17 @@
 # out.
 depend type=require fmri=library/python/neutronclient-$(PYV)
 
+# force a dependency on oslo.concurrency; pkgdepend work is needed to flush
+# this out.
+depend type=require fmri=library/python/oslo.concurrency-$(PYV)
+
 # force a dependency on oslo.config; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/oslo.config-$(PYV)
 
+# force a dependency on oslo.context; pkgdepend work is needed to flush this
+# out.
+depend type=require fmri=library/python/oslo.context-$(PYV)
+
 # force a dependency on oslo.db; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/oslo.db-$(PYV)
 
@@ -347,6 +361,14 @@
 # out.
 depend type=require fmri=library/python/oslo.messaging-$(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.serialization; pkgdepend work is needed to flush
+# this out.
+depend type=require fmri=library/python/oslo.serialization-$(PYV)
+
 # force a dependency on oslo.utils; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/oslo.utils-$(PYV)
 
@@ -362,9 +384,6 @@
 # force a dependency on posix_ipc; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/posix_ipc-$(PYV)
 
-# 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 pysendfile; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/pysendfile-$(PYV)
 
@@ -383,9 +402,6 @@
 # force a dependency on six; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/six-$(PYV)
 
-# force a dependency on sqlalchemy; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/sqlalchemy-$(PYV)
-
 # force a dependency on stevedore; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/stevedore-$(PYV)
 
--- a/components/openstack/ironic/patches/01-requirements.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/ironic/patches/01-requirements.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,57 +1,55 @@
 In-house patch to remove unnecessary dependencies from Ironic's
 requirements files. The specific reasons are as follows:
 
-kombu		Not applicable
-
-lxml		Not applicable
+lxml    Not applicable
 
-websockify	Not applicable
+websockify  Not applicable
 
-oslo.rootwrap	Not applicable to Solaris
+oslo.rootwrap Not applicable to Solaris
 
---- ironic-2014.2.1/ironic.egg-info/requires.txt.~1~	2015-02-19 10:50:54.000000000 -0800
-+++ ironic-2014.2.1/ironic.egg-info/requires.txt	2015-05-12 13:36:29.313651947 -0700
-@@ -4,9 +4,7 @@ alembic>=0.6.4
- anyjson>=0.3.3
- argparse
- eventlet>=0.15.1,<0.16.0
--kombu>=2.5.0
- lockfile>=0.8
+--- ironic-2015.1.2/requirements.txt.orig	2015-10-19 13:49:06.006805428 -0400
++++ ironic-2015.1.2/requirements.txt	2015-10-19 13:49:43.836513611 -0400
+@@ -5,7 +5,6 @@
+ SQLAlchemy<=0.9.99,>=0.9.7
+ alembic<0.8.1,>=0.7.2
+ eventlet!=0.17.0,>=0.16.1
 -lxml>=2.3
  WebOb>=1.2.3
  greenlet>=0.3.2
- sqlalchemy-migrate==0.9.1
-@@ -19,10 +17,8 @@ python-keystoneclient>=0.10.0
- python-swiftclient>=2.2.0
- stevedore>=1.0.0  # Apache-2.0
+ sqlalchemy-migrate!=0.9.8,<0.10.0,>=0.9.5
+@@ -18,12 +17,10 @@
+ python-swiftclient<2.5.0,>=2.2.0
+ stevedore<1.4.0,>=1.3.0 # Apache-2.0
  pysendfile==2.0.0
--websockify>=0.6.0,<0.7
- oslo.config>=1.4.0  # Apache-2.0
- oslo.db>=1.0.0,<1.1  # Apache-2.0
--oslo.rootwrap>=1.3.0
- oslo.i18n>=1.0.0  # Apache-2.0
- oslo.utils>=1.0.0                       # Apache-2.0
- pecan>=0.5.0
---- ironic-2014.2.1/requirements.txt.~1~	2015-02-19 10:45:47.000000000 -0800
-+++ ironic-2014.2.1/requirements.txt	2015-05-12 13:37:03.904654352 -0700
-@@ -7,9 +7,7 @@ alembic>=0.6.4
- anyjson>=0.3.3
- argparse
- eventlet>=0.15.1,<0.16.0
--kombu>=2.5.0
- lockfile>=0.8
+-websockify<0.7,>=0.6.0
+ oslo.concurrency<1.9.0,>=1.8.2 # Apache-2.0
+ oslo.config<1.10.0,>=1.9.3 # Apache-2.0
+ oslo.context<0.3.0,>=0.2.0 # Apache-2.0
+ oslo.db<1.8.0,>=1.7.0 # Apache-2.0
+-oslo.rootwrap<1.7.0,>=1.6.0 # Apache-2.0
+ oslo.i18n<1.6.0,>=1.5.0 # Apache-2.0
+ oslo.policy<0.4.0,>=0.3.1 # Apache-2.0
+ oslo.serialization<1.5.0,>=1.4.0 # Apache-2.0
+--- ironic-2015.1.2/ironic.egg-info/requires.txt.orig	2015-10-19 13:50:49.380390704 -0400
++++ ironic-2015.1.2/ironic.egg-info/requires.txt	2015-10-19 13:51:20.655399790 -0400
+@@ -2,7 +2,6 @@
+ SQLAlchemy<=0.9.99,>=0.9.7
+ alembic<0.8.1,>=0.7.2
+ eventlet!=0.17.0,>=0.16.1
 -lxml>=2.3
  WebOb>=1.2.3
  greenlet>=0.3.2
- sqlalchemy-migrate==0.9.1
-@@ -22,10 +20,8 @@ python-keystoneclient>=0.10.0
- python-swiftclient>=2.2.0
- stevedore>=1.0.0  # Apache-2.0
+ sqlalchemy-migrate!=0.9.8,<0.10.0,>=0.9.5
+@@ -15,12 +14,10 @@
+ python-swiftclient<2.5.0,>=2.2.0
+ stevedore<1.4.0,>=1.3.0 # Apache-2.0
  pysendfile==2.0.0
--websockify>=0.6.0,<0.7
- oslo.config>=1.4.0  # Apache-2.0
- oslo.db>=1.0.0,<1.1  # Apache-2.0
--oslo.rootwrap>=1.3.0
- oslo.i18n>=1.0.0  # Apache-2.0
- oslo.utils>=1.0.0                       # Apache-2.0
- pecan>=0.5.0
+-websockify<0.7,>=0.6.0
+ oslo.concurrency<1.9.0,>=1.8.2 # Apache-2.0
+ oslo.config<1.10.0,>=1.9.3 # Apache-2.0
+ oslo.context<0.3.0,>=0.2.0 # Apache-2.0
+ oslo.db<1.8.0,>=1.7.0 # Apache-2.0
+-oslo.rootwrap<1.7.0,>=1.6.0 # Apache-2.0
+ oslo.i18n<1.6.0,>=1.5.0 # Apache-2.0
+ oslo.policy<0.4.0,>=0.3.1 # Apache-2.0
+ oslo.serialization<1.5.0,>=1.4.0 # Apache-2.0
--- a/components/openstack/ironic/patches/02-driver-entry.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/ironic/patches/02-driver-entry.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,11 +1,11 @@
 Add solaris driver to list of available drivers
 
---- ORIGINAL/setup.cfg	2015-02-19 18:50:54.000000000 +0000
-+++ ironic-2014.2.1/setup.cfg	2015-04-09 16:59:01.035921792 +0100
-@@ -57,6 +57,7 @@
- 	pxe_ilo = ironic.drivers.pxe:PXEAndIloDriver
- 	pxe_drac = ironic.drivers.drac:PXEDracDriver
+--- ORIGINAL/setup.cfg	2015-06-02 17:45:44.579172327 +0100
++++ ironic-2015.1.0/setup.cfg	2015-06-02 17:48:37.552116117 +0100
+@@ -63,6 +63,7 @@
  	pxe_snmp = ironic.drivers.pxe:PXEAndSNMPDriver
+ 	pxe_irmc = ironic.drivers.pxe:PXEAndIRMCDriver
+ 	pxe_amt = ironic.drivers.pxe:PXEAndAMTDriver
 +	solaris = ironic.drivers.solaris:SolarisAndIPMIToolDriver
  ironic.database.migration_backend = 
  	sqlalchemy = ironic.db.sqlalchemy.migration
--- a/components/openstack/ironic/patches/03-boot-device.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/ironic/patches/03-boot-device.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -10,17 +10,20 @@
 Upstream bug logged against trunk:
   https://bugs.launchpad.net/ironic/+bug/1391598
 
---- ORIGINAL/ironic/conductor/manager.py	2015-02-20 18:03:18.051557776 +0000
-+++ ironic-2014.2.1/ironic/conductor/manager.py	2015-02-20 18:08:33.001316709 +0000
-@@ -1380,4 +1380,4 @@
+--- ORIGINAL/ironic/conductor/manager.py	2015-05-05 22:41:35.764613395 +0100
++++ ironic-2015.1.0/ironic/conductor/manager.py	2015-05-05 22:47:23.046291559 +0100
+@@ -1615,7 +1615,7 @@
              if not getattr(task.driver, 'management', None):
                  raise exception.UnsupportedDriverExtension(
                              driver=task.node.driver, extension='management')
 -            return task.driver.management.get_supported_boot_devices()
 +            return task.driver.management.get_supported_boot_devices(task)
---- ORIGINAL/ironic/drivers/base.py	2015-02-20 18:03:18.037072121 +0000
-+++ ironic-2014.2.1/ironic/drivers/base.py	2015-02-20 18:09:58.769898691 +0000
-@@ -436,9 +436,10 @@
+ 
+     @messaging.expected_exceptions(exception.NoFreeConductorWorker,
+                                    exception.NodeLocked,
+--- ORIGINAL/ironic/drivers/base.py	2015-05-05 22:41:35.780975517 +0100
++++ ironic-2015.1.0/ironic/drivers/base.py	2015-05-05 22:48:01.342155003 +0100
+@@ -629,9 +629,10 @@
          """
  
      @abc.abstractmethod
--- a/components/openstack/keystone/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/keystone/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,26 +20,26 @@
 #
 
 #
-# Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		keystone
-COMPONENT_CODENAME=	juno
-COMPONENT_VERSION=	2014.2.2
-COMPONENT_BE_VERSION=	2014.2
+COMPONENT_CODENAME=	kilo
+COMPONENT_VERSION=	2015.1.2
+COMPONENT_BE_VERSION=	2015.1
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:5674c1ae0aa7203cca0aba634e939bcfb7e1e0f60f62a6d6fceeb05efb84980e
+    sha256:af63a89ca1cebfff593e35c24105c1442ab50f760871d756a48cfc120a7a8ddb
 COMPONENT_ARCHIVE_URL=	http://launchpad.net/$(COMPONENT_NAME)/$(COMPONENT_CODENAME)/$(COMPONENT_VERSION)/+download/$(COMPONENT_ARCHIVE)
 COMPONENT_SIG_URL=	$(COMPONENT_ARCHIVE_URL).asc
 COMPONENT_PROJECT_URL=	http://www.openstack.org/
 COMPONENT_BUGDB=	service/keystone
 IPS_COMPONENT_VERSION=	0.$(COMPONENT_VERSION)
 
-TPNO=			21823
+TPNO=			25790
 
 include $(WS_MAKE_RULES)/prep.mk
 include $(WS_MAKE_RULES)/setup.py.mk
@@ -64,7 +64,10 @@
 	 $(CP) \
 	     files/keystone.xml \
 	     files/keystone-upgrade.xml \
-	     $(PROTO_DIR)/lib/svc/manifest/application/openstack;)
+	     $(PROTO_DIR)/lib/svc/manifest/application/openstack; \
+	 $(MKDIR) $(PROTO_DIR)$(PYTHON_LIB)/keystone/httpd; \
+	 $(CP) $(SOURCE_DIR)/httpd/keystone.py $(PROTO_DIR)$(PYTHON_LIB)/keystone/httpd); \
+	 $(PYTHON) -m compileall $(PROTO_DIR)/$(PYTHON_VENDOR_PACKAGES)
 
 # common targets
 build:		$(BUILD_NO_ARCH)
--- a/components/openstack/keystone/files/keystone	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/keystone/files/keystone	Fri Feb 05 17:54:17 2016 -0500
@@ -19,20 +19,41 @@
 
 import smf_include
 
-from subprocess import CalledProcessError, check_call
+from subprocess import CalledProcessError, check_call, Popen
+
+
+def httpd(cmd):
+    cmd = ['/usr/apache2/2.4/bin/httpd', '-f',
+           '/var/lib/keystone/keystone.httpd.conf', '-k', cmd]
+    try:
+        Popen(cmd, stdout=sys.stdout, stderr=sys.stderr)
+    except CalledProcessError as err:
+        print >> sys.stderr, 'Error executing %s: %s' % (cmd, err)
+        sys.exit(smf_include.SMF_EXIT_ERR_FATAL)
+
+    sys.exit(smf_include.SMF_EXIT_OK)
 
 
 def start():
     # sync the database to make sure it's ready
-    cmd = ["/usr/bin/keystone-manage", "db_sync"]
+    cmd = ['/usr/bin/keystone-manage', 'db_sync']
     try:
         check_call(cmd)
     except CalledProcessError as err:
-        print "Unable to create database for Keystone:  %s" % err
+        print 'Unable to create database for Keystone:  %s' % err
         sys.exit(smf_include.SMF_EXIT_ERR_CONFIG)
 
-    smf_include.smf_subprocess("/usr/lib/keystone/keystone-all")
+    httpd('start')
+
+
+def stop():
+    httpd('stop')
+
 
-if __name__ == "__main__":
-    os.putenv("LC_ALL", "C")
+def restart():
+    httpd('restart')
+
+
+if __name__ == '__main__':
+    os.putenv('LC_ALL', 'C')
     smf_include.smf_main()
--- a/components/openstack/keystone/files/keystone-paste.ini	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/keystone/files/keystone-paste.ini	Fri Feb 05 17:54:17 2016 -0500
@@ -3,6 +3,9 @@
 [filter:debug]
 paste.filter_factory = keystone.common.wsgi:Debug.factory
 
+[filter:request_id]
+paste.filter_factory = oslo_middleware:RequestId.factory
+
 [filter:build_auth_context]
 paste.filter_factory = keystone.middleware:AuthContextMiddleware.factory
 
@@ -12,15 +15,6 @@
 [filter:admin_token_auth]
 paste.filter_factory = keystone.middleware:AdminTokenAuthMiddleware.factory
 
-[filter:xml_body]
-paste.filter_factory = keystone.middleware:XmlBodyMiddleware.factory
-
-[filter:xml_body_v2]
-paste.filter_factory = keystone.middleware:XmlBodyMiddlewareV2.factory
-
-[filter:xml_body_v3]
-paste.filter_factory = keystone.middleware:XmlBodyMiddlewareV3.factory
-
 [filter:json_body]
 paste.filter_factory = keystone.middleware:JsonBodyMiddleware.factory
 
@@ -61,7 +55,7 @@
 paste.filter_factory = keystone.middleware:NormalizingFilter.factory
 
 [filter:sizelimit]
-paste.filter_factory = keystone.middleware:RequestBodySizeLimiter.factory
+paste.filter_factory = oslo_middleware.sizelimit:RequestBodySizeLimiter.factory
 
 [filter:stats_monitoring]
 paste.filter_factory = keystone.contrib.stats:StatsMiddleware.factory
@@ -84,17 +78,17 @@
 [pipeline:public_api]
 # The last item in this pipeline must be public_service or an equivalent
 # application. It cannot be a filter.
-pipeline = sizelimit url_normalize build_auth_context token_auth admin_token_auth json_body ec2_extension user_crud_extension public_service
+pipeline = sizelimit url_normalize request_id build_auth_context token_auth admin_token_auth json_body ec2_extension user_crud_extension public_service
 
 [pipeline:admin_api]
 # The last item in this pipeline must be admin_service or an equivalent
 # application. It cannot be a filter.
-pipeline = sizelimit url_normalize build_auth_context token_auth admin_token_auth json_body ec2_extension s3_extension crud_extension admin_service
+pipeline = sizelimit url_normalize request_id build_auth_context token_auth admin_token_auth json_body ec2_extension s3_extension crud_extension admin_service
 
 [pipeline:api_v3]
 # The last item in this pipeline must be service_v3 or an equivalent
 # application. It cannot be a filter.
-pipeline = sizelimit url_normalize build_auth_context token_auth admin_token_auth json_body ec2_extension_v3 s3_extension simple_cert_extension revoke_extension service_v3
+pipeline = sizelimit url_normalize request_id build_auth_context token_auth admin_token_auth json_body ec2_extension_v3 s3_extension simple_cert_extension revoke_extension service_v3
 
 [app:public_version_service]
 paste.app_factory = keystone.service:public_version_app_factory
@@ -119,3 +113,4 @@
 /v2.0 = admin_api
 /v3 = api_v3
 / = admin_version_api
+
--- a/components/openstack/keystone/files/keystone-upgrade	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/keystone/files/keystone-upgrade	Fri Feb 05 17:54:17 2016 -0500
@@ -1,6 +1,6 @@
 #!/usr/bin/python2.7
 
-# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2015, 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
@@ -29,58 +29,32 @@
 
 KEYSTONE_CONF_MAPPINGS = {
     # Deprecated group/name
-    ('DEFAULT', 'rabbit_durable_queues'): ('DEFAULT', 'amqp_durable_queues'),
-    ('rpc_notifier2', 'topics'): ('DEFAULT', 'notification_topics'),
-    ('DEFAULT', 'log_config'): ('DEFAULT', 'log_config_append'),
-    ('DEFAULT', 'logfile'): ('DEFAULT', 'log_file'),
-    ('DEFAULT', 'logdir'): ('DEFAULT', 'log_dir'),
-    ('DEFAULT', 'db_backend'): ('database', 'backend'),
-    ('DEFAULT', 'sql_connection'): ('database', 'connection'),
-    ('DATABASE', 'sql_connection'): ('database', 'connection'),
-    ('sql', 'connection'): ('database', 'connection'),
-    ('DEFAULT', 'sql_idle_timeout'): ('database', 'idle_timeout'),
-    ('DATABASE', 'sql_idle_timeout'): ('database', 'idle_timeout'),
-    ('sql', 'idle_timeout'): ('database', 'idle_timeout'),
-    ('DEFAULT', 'sql_min_pool_size'): ('database', 'min_pool_size'),
-    ('DATABASE', 'sql_min_pool_size'): ('database', 'min_pool_size'),
-    ('DEFAULT', 'sql_max_pool_size'): ('database', 'max_pool_size'),
-    ('DATABASE', 'sql_max_pool_size'): ('database', 'max_pool_size'),
-    ('DEFAULT', 'sql_max_retries'): ('database', 'max_retries'),
-    ('DATABASE', 'sql_max_retries'): ('database', 'max_retries'),
-    ('DEFAULT', 'sql_retry_interval'): ('database', 'retry_interval'),
-    ('DATABASE', 'reconnect_interval'): ('database', 'retry_interval'),
-    ('DEFAULT', 'sql_max_overflow'): ('database', 'max_overflow'),
-    ('DATABASE', 'sqlalchemy_max_overflow'): ('database', 'max_overflow'),
-    ('DEFAULT', 'sql_connection_debug'): ('database', 'connection_debug'),
-    ('DEFAULT', 'sql_connection_trace'): ('database', 'connection_trace'),
-    ('DATABASE', 'sqlalchemy_pool_timeout'): ('database', 'pool_timeout'),
-    ('ldap', 'tenant_tree_dn'): ('ldap', 'project_tree_dn'),
-    ('ldap', 'tenant_filter'): ('ldap', 'project_filter'),
-    ('ldap', 'tenant_objectclass'): ('ldap', 'project_objectclass'),
-    ('ldap', 'tenant_id_attribute'): ('ldap', 'project_id_attribute'),
-    ('ldap', 'tenant_member_attribute'): ('ldap', 'project_member_attribute'),
-    ('ldap', 'tenant_name_attribute'): ('ldap', 'project_name_attribute'),
-    ('ldap', 'tenant_desc_attribute'): ('ldap', 'project_desc_attribute'),
-    ('ldap', 'tenant_enabled_attribute'):
-        ('ldap', 'project_enabled_attribute'),
-    ('ldap', 'tenant_domain_id_attribute'):
-        ('ldap', 'project_domain_id_attribute'),
-    ('ldap', 'tenant_attribute_ignore'): ('ldap', 'project_attribute_ignore'),
-    ('ldap', 'tenant_allow_create'): ('ldap', 'project_allow_create'),
-    ('ldap', 'tenant_allow_update'): ('ldap', 'project_allow_update'),
-    ('ldap', 'tenant_allow_delete'): ('ldap', 'project_allow_delete'),
-    ('ldap', 'tenant_enabled_emulation'):
-        ('ldap', 'project_enabled_emulation'),
-    ('ldap', 'tenant_enabled_emulation_dn'):
-        ('ldap', 'project_enabled_emulation_dn'),
-    ('ldap', 'tenant_additional_attribute_mapping'):
-        ('ldap', 'project_additional_attribute_mapping'),
-    ('DEFAULT', 'matchmaker_ringfile'): ('matchmaker_ring', 'ringfile'),
+    ('DEFAULT', 'admin_bind_host'): ('eventlet_server', 'admin_bind_host'),
+    ('DEFAULT', 'admin_workers'): ('eventlet_server', 'admin_workers'),
+    ('DEFAULT', 'admin_port'): ('eventlet_server', 'admin_port'),
+    ('DEFAULT', 'tcp_keepidle'): ('eventlet_server', 'tcp_keepidle'),
+    ('ssl', 'cert_required'): ('eventlet_server_ssl', 'cert_required'),
+    ('DEFAULT', 'public_port'): ('eventlet_server', 'public_port'),
+    ('DEFAULT', 'public_bind_host'): ('eventlet_server', 'public_bind_host'),
+    ('DEFAULT', 'tcp_keepalive'): ('eventlet_server', 'tcp_keepalive'),
+    ('DEFAULT', 'public_workers'): ('eventlet_server', 'public_workers'),
+    ('ssl', 'keyfile'): ('eventlet_server_ssl', 'keyfile'),
+    ('ssl', 'ca_certs'): ('eventlet_server_ssl', 'ca_certs'),
+    ('ssl', 'enable'): ('eventlet_server_ssl', 'enable'),
+    ('ssl', 'certfile'): ('eventlet_server_ssl', 'certfile'),
+    ('DEFAULT', 'max_request_body_size'):
+        ('oslo_middleware', 'max_request_body_size'),
+    ('assignment', 'list_limit'): ('resource', 'list_limit'),
+    ('assignment', 'caching'): ('resource', 'caching'),
+    ('assignment', 'cache_time'): ('resource', 'cache_time'),
+    ('token', 'revocation_cache_time'): ('revoke', 'cache_time'),
+    ('DEFAULT', 'log-format'): (None, None),
+    ('DEFAULT', 'use-syslog'): (None, None),
 }
 
 KEYSTONE_CONF_EXCEPTIONS = [
-    ('DEFAULT', 'public_workers'),
-    ('DEFAULT', 'admin_workers'),
+    ('eventlet_server', 'public_workers'),
+    ('eventlet_server', 'admin_workers'),
     ('database', 'connection'),
 ]
 
--- a/components/openstack/keystone/files/keystone.conf	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/keystone/files/keystone.conf	Fri Feb 05 17:54:17 2016 -0500
@@ -1,1587 +1,1733 @@
 [DEFAULT]
-
+ 
 #
-# Options defined in keystone
+# From keystone
 #
-
-# A "shared secret" that can be used to bootstrap Keystone.
-# This "token" does not represent a user, and carries no
-# explicit authorization. To disable in production (highly
-# recommended), remove AdminTokenAuthMiddleware from your
-# paste application pipelines (for example, in keystone-
-# paste.ini). (string value)
-#admin_token=ADMIN
-
-# The IP address of the network interface for the public
-# service to listen on. (string value)
-# Deprecated group/name - [DEFAULT]/bind_host
-#public_bind_host=0.0.0.0
-
-# The IP address of the network interface for the admin
-# service to listen on. (string value)
-# Deprecated group/name - [DEFAULT]/bind_host
-#admin_bind_host=0.0.0.0
-
-# (Deprecated) The port which the OpenStack Compute service
-# listens on. This option was only used for string replacement
-# in the templated catalog backend. Templated catalogs should
-# replace the "$(compute_port)s" substitution with the static
-# port of the compute service. As of Juno, this option is
-# deprecated and will be removed in the L release. (integer
+ 
+# A "shared secret" that can be used to bootstrap Keystone. This "token" does
+# not represent a user, and carries no explicit authorization. To disable in
+# production (highly recommended), remove AdminTokenAuthMiddleware from your
+# paste application pipelines (for example, in keystone-paste.ini). (string
 # value)
-#compute_port=8774
-
-# The port number which the admin service listens on. (integer
-# value)
-#admin_port=35357
-
-# The port number which the public service listens on.
-# (integer value)
-#public_port=5000
-
-# The base public endpoint URL for Keystone that is advertised
-# to clients (NOTE: this does NOT affect how Keystone listens
-# for connections). Defaults to the base host URL of the
-# request. E.g. a request to http://server:5000/v2.0/users
-# will default to http://server:5000. You should only need to
-# set this value if the base URL contains a path (e.g.
-# /prefix/v2.0) or the endpoint should be found on a different
-# server. (string value)
-#public_endpoint=<None>
-
-# The base admin endpoint URL for Keystone that is advertised
-# to clients (NOTE: this does NOT affect how Keystone listens
-# for connections). Defaults to the base host URL of the
-# request. E.g. a request to http://server:35357/v2.0/users
-# will default to http://server:35357. You should only need to
-# set this value if the base URL contains a path (e.g.
-# /prefix/v2.0) or the endpoint should be found on a different
-# server. (string value)
-#admin_endpoint=<None>
-
-# The number of worker processes to serve the public WSGI
-# application. Defaults to number of CPUs (minimum of 2).
+#admin_token = ADMIN
+ 
+# (Deprecated) The port which the OpenStack Compute service listens on. This
+# option was only used for string replacement in the templated catalog backend.
+# Templated catalogs should replace the "$(compute_port)s" substitution with
+# the static port of the compute service. As of Juno, this option is deprecated
+# and will be removed in the L release. (integer value)
+#compute_port = 8774
+ 
+# The base public endpoint URL for Keystone that is advertised to clients
+# (NOTE: this does NOT affect how Keystone listens for connections). Defaults
+# to the base host URL of the request. E.g. a request to
+# http://server:5000/v3/users will default to http://server:5000. You should
+# only need to set this value if the base URL contains a path (e.g. /prefix/v3)
+# or the endpoint should be found on a different server. (string value)
+#public_endpoint = <None>
+ 
+# The base admin endpoint URL for Keystone that is advertised to clients (NOTE:
+# this does NOT affect how Keystone listens for connections). Defaults to the
+# base host URL of the request. E.g. a request to http://server:35357/v3/users
+# will default to http://server:35357. You should only need to set this value
+# if the base URL contains a path (e.g. /prefix/v3) or the endpoint should be
+# found on a different server. (string value)
+#admin_endpoint = <None>
+ 
+# Maximum depth of the project hierarchy. WARNING: setting it to a large value
+# may adversely impact performance. (integer value)
+#max_project_tree_depth = 5
+ 
+# Limit the sizes of user & project ID/names. (integer value)
+#max_param_size = 64
+ 
+# Similar to max_param_size, but provides an exception for token values.
 # (integer value)
-public_workers=2
-
-# The number of worker processes to serve the admin WSGI
-# application. Defaults to number of CPUs (minimum of 2).
-# (integer value)
-admin_workers=2
-
-# Enforced by optional sizelimit middleware
-# (keystone.middleware:RequestBodySizeLimiter). (integer
-# value)
-#max_request_body_size=114688
-
-# Limit the sizes of user & project ID/names. (integer value)
-#max_param_size=64
-
-# Similar to max_param_size, but provides an exception for
-# token values. (integer value)
-#max_token_size=8192
-
-# During a SQL upgrade member_role_id will be used to create a
-# new role that will replace records in the assignment table
-# with explicit role grants. After migration, the
-# member_role_id will be used in the API add_user_to_project.
+#max_token_size = 8192
+ 
+# Similar to the member_role_name option, this represents the default role ID
+# used to associate users with their default projects in the v2 API. This will
+# be used as the explicit role where one is not specified by the v2 API.
 # (string value)
-#member_role_id=9fe2ff9ee4384b1894a90878d3e92bab
-
-# During a SQL upgrade member_role_name will be used to create
-# a new role that will replace records in the assignment table
-# with explicit role grants. After migration, member_role_name
-# will be ignored. (string value)
-#member_role_name=_member_
-
-# The value passed as the keyword "rounds" to passlib's
-# encrypt method. (integer value)
-#crypt_strength=40000
-
-# Set this to true if you want to enable TCP_KEEPALIVE on
-# server sockets, i.e. sockets used by the Keystone wsgi
-# server for client connections. (boolean value)
-#tcp_keepalive=false
-
-# Sets the value of TCP_KEEPIDLE in seconds for each server
-# socket. Only applies if tcp_keepalive is true. Not supported
-# on OS X. (integer value)
-#tcp_keepidle=600
-
-# The maximum number of entities that will be returned in a
-# collection, with no limit set by default. This global limit
-# may be then overridden for a specific driver, by specifying
-# a list_limit in the appropriate section (e.g. [assignment]).
+#member_role_id = 9fe2ff9ee4384b1894a90878d3e92bab
+ 
+# This is the role name used in combination with the member_role_id option; see
+# that option for more detail. (string value)
+#member_role_name = _member_
+ 
+# The value passed as the keyword "rounds" to passlib's encrypt method.
 # (integer value)
-#list_limit=<None>
-
-# Set this to false if you want to enable the ability for
-# user, group and project entities to be moved between domains
-# by updating their domain_id. Allowing such movement is not
-# recommended if the scope of a domain admin is being
-# restricted by use of an appropriate policy file (see
+#crypt_strength = 40000
+ 
+# The maximum number of entities that will be returned in a collection, with no
+# limit set by default. This global limit may be then overridden for a specific
+# driver, by specifying a list_limit in the appropriate section (e.g.
+# [assignment]). (integer value)
+#list_limit = <None>
+ 
+# Set this to false if you want to enable the ability for user, group and
+# project entities to be moved between domains by updating their domain_id.
+# Allowing such movement is not recommended if the scope of a domain admin is
+# being restricted by use of an appropriate policy file (see
 # policy.v3cloudsample as an example). (boolean value)
-#domain_id_immutable=true
-
-# If set to true, strict password length checking is performed
-# for password manipulation. If a password exceeds the maximum
-# length, the operation will fail with an HTTP 403 Forbidden
-# error. If set to false, passwords are automatically
-# truncated to the maximum length. (boolean value)
-#strict_password_check=false
-
-
+#domain_id_immutable = true
+ 
+# If set to true, strict password length checking is performed for password
+# manipulation. If a password exceeds the maximum length, the operation will
+# fail with an HTTP 403 Forbidden error. If set to false, passwords are
+# automatically truncated to the maximum length. (boolean value)
+#strict_password_check = false
+ 
+# 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>
+ 
+#
+# From keystone.notifications
 #
-# Options defined in oslo.messaging
+ 
+# Default publisher_id for outgoing notifications (string value)
+#default_publisher_id = <None>
+ 
+# Define the notification format for Identity Service events. A "basic"
+# notification has information about the resource being operated on. A "cadf"
+# notification has the same information, as well as information about the
+# initiator of the event. Valid options are: basic and cadf (string value)
+#notification_format = basic
+ 
+#
+# From keystone.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>
+ 
+#
+# From oslo.log
 #
-
-# 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
+ 
+# 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)
-#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
+# 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)
-#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
-
-# SSL version to use (valid only if SSL enabled). valid values
-# are TLSv1, SSLv23 and SSLv3. SSLv2 may be available on some
-# distributions. (string value)
-#kombu_ssl_version=
-
-# SSL key file (valid only if SSL enabled). (string value)
-#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.
+#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] "
+ 
+#
+# From 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 = oslo_messaging._drivers.matchmaker.MatchMakerLocalhost
+ 
+# 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 = localhost
+ 
+# Seconds to wait before a cast expires (TTL). Only supported by impl_zmq.
 # (integer value)
-#rabbit_port=5672
-
-# RabbitMQ HA cluster host:port pairs. (list value)
-#rabbit_hosts=$rabbit_host:$rabbit_port
-
-# Connect over SSL for RabbitMQ. (boolean value)
-#rabbit_use_ssl=false
-
-# The RabbitMQ userid. (string value)
-#rabbit_userid=guest
-
-# The RabbitMQ password. (string value)
-#rabbit_password=guest
-
-# the RabbitMQ login method (string value)
-#rabbit_login_method=AMQPLAIN
-
-# The RabbitMQ virtual host. (string value)
-#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)
-#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
-# value)
-#rabbit_ha_queues=false
-
-# If passed, use a fake RabbitMQ provider. (boolean value)
-#fake_rabbit=false
-
-# 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=oslo.messaging._drivers.matchmaker.MatchMakerLocalhost
-
-# 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=keystone
-
-# Seconds to wait before a cast expires (TTL). Only supported
-# by impl_zmq. (integer value)
-#rpc_cast_timeout=30
-
+#rpc_cast_timeout = 30
+ 
 # Heartbeat frequency. (integer value)
-#matchmaker_heartbeat_freq=300
-
+#matchmaker_heartbeat_freq = 300
+ 
 # Heartbeat time-to-live. (integer value)
-#matchmaker_heartbeat_ttl=600
-
-# Size of RPC greenthread pool. (integer value)
-#rpc_thread_pool_size=64
-
-# Driver or drivers to handle sending notifications. (multi
-# valued)
-#notification_driver=
-
+#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
-
+#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=keystone
-
-
-#
-# Options defined in keystone.notifications
-#
-
-# Default publisher_id for outgoing notifications (string
-# value)
-#default_publisher_id=<None>
-
-
-#
-# Options defined in keystone.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 keystone.openstack.common.log
+#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 = keystone
+ 
+ 
+[assignment]
+ 
 #
-
-# Print debugging output (set logging level to DEBUG instead
-# of default WARNING level). (boolean value)
-#debug=false
-
-# Print more verbose output (set logging level to INFO instead
-# of default WARNING level). (boolean value)
-#verbose=false
-
-# Log output to standard error. (boolean value)
-#use_stderr=true
-
-# Format string to use for log messages with context. (string
-# value)
-#logging_context_format_string=%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s
-
-# Format string to use for log messages without context.
-# (string value)
-#logging_default_format_string=%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s
-
-# Data to append to log format when level is DEBUG. (string
-# value)
-#logging_debug_format_suffix=%(funcName)s %(pathname)s:%(lineno)d
-
-# Prefix each line of exception output with this format.
-# (string value)
-#logging_exception_prefix=%(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s
-
-# List of logger=LEVEL pairs. (list value)
-#default_log_levels=amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN
-
-# Enables or disables publication of error events. (boolean
-# value)
-#publish_errors=false
-
-# Enables or disables fatal status of deprecations. (boolean
-# value)
-#fatal_deprecations=false
-
-# The format for an instance that is passed with the log
-# message. (string value)
-#instance_format="[instance: %(uuid)s] "
-
-# The format for an instance UUID that is passed with the log
-# message. (string value)
-#instance_uuid_format="[instance: %(uuid)s] "
-
-# The name of a logging configuration file. This file is
-# appended to any existing logging configuration files. For
-# details about logging configuration files, see the Python
-# logging module documentation. (string value)
-# Deprecated group/name - [DEFAULT]/log_config
-#log_config_append=<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
-
-
+# From keystone
 #
-# Options defined in keystone.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
-
-
-[assignment]
-
-#
-# Options defined in keystone
-#
-
+ 
 # Assignment backend driver. (string value)
-#driver=<None>
-
-# Toggle for assignment caching. This has no effect unless
-# global caching is enabled. (boolean value)
-#caching=true
-
-# TTL (in seconds) to cache assignment data. This has no
-# effect unless global caching is enabled. (integer value)
-#cache_time=<None>
-
-# Maximum number of entities that will be returned in an
-# assignment collection. (integer value)
-#list_limit=<None>
-
-
+#driver = <None>
+ 
+ 
 [auth]
-
+ 
 #
-# Options defined in keystone
+# From keystone
 #
-
+ 
 # Default auth methods. (list value)
-#methods=external,password,token
-
+#methods = external,password,token,oauth1
+ 
 # The password auth plugin module. (string value)
-#password=keystone.auth.plugins.password.Password
-
+#password = keystone.auth.plugins.password.Password
+ 
 # The token auth plugin module. (string value)
-#token=keystone.auth.plugins.token.Token
-
-# The external (REMOTE_USER) auth plugin module. (string
-# value)
-#external=keystone.auth.plugins.external.DefaultDomain
-
-
+#token = keystone.auth.plugins.token.Token
+ 
+# The external (REMOTE_USER) auth plugin module. (string value)
+#external = keystone.auth.plugins.external.DefaultDomain
+ 
+# The oAuth1.0 auth plugin module. (string value)
+#oauth1 = keystone.auth.plugins.oauth1.OAuth
+ 
+ 
 [cache]
-
+ 
 #
-# Options defined in keystone
+# From keystone
 #
-
-# 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.keystone
-
-# 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 (keystone.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=keystone.common.cache.noop
-
-# 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 all caching using the should_cache_fn
-# mechanism. (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 keystone.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
-# keystone.cache.memcache_pool backends only) (integer value)
-#memcache_dead_retry=300
-
-# Timeout in seconds for every call to a server.
-# (dogpile.cache.memcache and keystone.cache.memcache_pool
-# backends only) (integer value)
-#memcache_socket_timeout=3
-
-# Max total number of open connections to every memcached
-# server. (keystone.cache.memcache_pool backend only) (integer
+ 
+# 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.keystone
+ 
+# 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
+# (keystone.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 = keystone.common.cache.noop
+ 
+# 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 all caching using the should_cache_fn mechanism. (boolean
 # value)
-#memcache_pool_maxsize=10
-
-# Number of seconds a connection to memcached is held unused
-# in the pool before it is closed.
-# (keystone.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
-
-
+#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
+# keystone.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 keystone.cache.memcache_pool backends
+# only). (integer value)
+#memcache_dead_retry = 300
+ 
+# Timeout in seconds for every call to a server. (dogpile.cache.memcache and
+# keystone.cache.memcache_pool backends only). (integer value)
+#memcache_socket_timeout = 3
+ 
+# Max total number of open connections to every memcached server.
+# (keystone.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. (keystone.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
+ 
+ 
 [catalog]
-
+ 
 #
-# Options defined in keystone
+# From keystone
 #
-
-# Catalog template file name for use with the template catalog
-# backend. (string value)
-#template_file=default_catalog.templates
-
-# Catalog backend driver. (string value)
-#driver=keystone.catalog.backends.sql.Catalog
-
-# Toggle for catalog caching. This has no effect unless global
-# caching is enabled. (boolean value)
-#caching=true
-
-# Time to cache catalog data (in seconds). This has no effect
-# unless global and catalog caching are enabled. (integer
+ 
+# Catalog template file name for use with the template catalog backend. (string
 # value)
-#cache_time=<None>
-
-# Maximum number of entities that will be returned in a
-# catalog collection. (integer value)
-#list_limit=<None>
-
-# (Deprecated) List of possible substitutions for use in
-# formatting endpoints. Use caution when modifying this list.
-# It will give users with permission to create endpoints the
-# ability to see those values in your configuration file. This
-# option will be removed in Juno. (list value)
-#endpoint_substitution_whitelist=tenant_id,user_id,public_bind_host,admin_bind_host,compute_host,compute_port,admin_port,public_port,public_endpoint,admin_endpoint
-
-
+#template_file = default_catalog.templates
+ 
+# Catalog backend driver. (string value)
+#driver = keystone.catalog.backends.sql.Catalog
+ 
+# Toggle for catalog caching. This has no effect unless global caching is
+# enabled. (boolean value)
+#caching = true
+ 
+# Time to cache catalog data (in seconds). This has no effect unless global and
+# catalog caching are enabled. (integer value)
+#cache_time = <None>
+ 
+# Maximum number of entities that will be returned in a catalog collection.
+# (integer value)
+#list_limit = <None>
+ 
+ 
 [credential]
-
+ 
 #
-# Options defined in keystone
+# From keystone
 #
-
+ 
 # Credential backend driver. (string value)
-#driver=keystone.credential.backends.sql.Credential
-
-
+#driver = keystone.credential.backends.sql.Credential
+ 
+ 
 [database]
-
+ 
 #
-# Options defined in oslo.db
+# From oslo.db
 #
-
+ 
 # 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/keystone
-
-# 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)
+ 
+# 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 db connection retries during startup. Set to -1 to
+#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)
-# 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 database connection retries. (integer value)
-#db_retry_interval=1
-
-# If True, increases the interval between database connection
-# retries up to db_max_retry_interval. (boolean value)
-#db_inc_retry_interval=true
-
-# If db_inc_retry_interval is set, the maximum seconds between
-# database connection retries. (integer value)
-#db_max_retry_interval=10
-
-# Maximum database connection retries before error is raised.
-# Set to -1 to specify an infinite retry count. (integer
+#max_overflow = <None>
+ 
+# Verbosity of SQL debugging information: 0=None, 100=Everything. (integer
 # value)
-#db_max_retries=20
-
-
-[ec2]
-
-#
-# Options defined in keystone
+# 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
+ 
+ 
+[domain_config]
+ 
 #
-
-# EC2Credential backend driver. (string value)
-#driver=keystone.contrib.ec2.backends.kvs.Ec2
-
-
+# From keystone
+#
+ 
+# Domain config backend driver. (string value)
+#driver = keystone.resource.config_backends.sql.DomainConfig
+ 
+# Toggle for domain config caching. This has no effect unless global caching is
+# enabled. (boolean value)
+#caching = true
+ 
+# TTL (in seconds) to cache domain config data. This has no effect unless
+# domain config caching is enabled. (integer value)
+#cache_time = 300
+ 
+ 
 [endpoint_filter]
-
+ 
 #
-# Options defined in keystone
+# From keystone
 #
-
+ 
 # Endpoint Filter backend driver (string value)
-#driver=keystone.contrib.endpoint_filter.backends.sql.EndpointFilter
-
-# Toggle to return all active endpoints if no filter exists.
-# (boolean value)
-#return_all_endpoints_if_no_filter=true
-
-
+#driver = keystone.contrib.endpoint_filter.backends.sql.EndpointFilter
+ 
+# Toggle to return all active endpoints if no filter exists. (boolean value)
+#return_all_endpoints_if_no_filter = true
+ 
+ 
 [endpoint_policy]
-
+ 
+#
+# From keystone
 #
-# Options defined in keystone
+ 
+# Endpoint policy backend driver (string value)
+#driver = keystone.contrib.endpoint_policy.backends.sql.EndpointPolicy
+ 
+ 
+[eventlet_server]
+ 
+#
+# From keystone
 #
-
-# Endpoint policy backend driver (string value)
-#driver=keystone.contrib.endpoint_policy.backends.sql.EndpointPolicy
-
-
+ 
+# The number of worker processes to serve the public eventlet application.
+# Defaults to number of CPUs (minimum of 2). (integer value)
+# Deprecated group/name - [DEFAULT]/public_workers
+public_workers = 2
+ 
+# The number of worker processes to serve the admin eventlet application.
+# Defaults to number of CPUs (minimum of 2). (integer value)
+# Deprecated group/name - [DEFAULT]/admin_workers
+admin_workers = 2
+ 
+# The IP address of the network interface for the public service to listen on.
+# (string value)
+# Deprecated group/name - [DEFAULT]/bind_host
+# Deprecated group/name - [DEFAULT]/public_bind_host
+#public_bind_host = 0.0.0.0
+ 
+# The port number which the public service listens on. (integer value)
+# Deprecated group/name - [DEFAULT]/public_port
+#public_port = 5000
+ 
+# The IP address of the network interface for the admin service to listen on.
+# (string value)
+# Deprecated group/name - [DEFAULT]/bind_host
+# Deprecated group/name - [DEFAULT]/admin_bind_host
+#admin_bind_host = 0.0.0.0
+ 
+# The port number which the admin service listens on. (integer value)
+# Deprecated group/name - [DEFAULT]/admin_port
+#admin_port = 35357
+ 
+# Set this to true if you want to enable TCP_KEEPALIVE on server sockets, i.e.
+# sockets used by the Keystone wsgi server for client connections. (boolean
+# value)
+# Deprecated group/name - [DEFAULT]/tcp_keepalive
+#tcp_keepalive = false
+ 
+# Sets the value of TCP_KEEPIDLE in seconds for each server socket. Only
+# applies if tcp_keepalive is true. (integer value)
+# Deprecated group/name - [DEFAULT]/tcp_keepidle
+#tcp_keepidle = 600
+ 
+ 
+[eventlet_server_ssl]
+ 
+#
+# From keystone
+#
+ 
+# Toggle for SSL support on the Keystone eventlet servers. (boolean value)
+# Deprecated group/name - [ssl]/enable
+#enable = false
+ 
+# Path of the certfile for SSL. For non-production environments, you may be
+# interested in using `keystone-manage ssl_setup` to generate self-signed
+# certificates. (string value)
+# Deprecated group/name - [ssl]/certfile
+#certfile = /etc/keystone/ssl/certs/keystone.pem
+ 
+# Path of the keyfile for SSL. (string value)
+# Deprecated group/name - [ssl]/keyfile
+#keyfile = /etc/keystone/ssl/private/keystonekey.pem
+ 
+# Path of the CA cert file for SSL. (string value)
+# Deprecated group/name - [ssl]/ca_certs
+#ca_certs = /etc/keystone/ssl/certs/ca.pem
+ 
+# Require client certificate. (boolean value)
+# Deprecated group/name - [ssl]/cert_required
+#cert_required = false
+ 
+ 
 [federation]
-
+ 
 #
-# Options defined in keystone
+# From keystone
 #
-
+ 
 # Federation backend driver. (string value)
-#driver=keystone.contrib.federation.backends.sql.Federation
-
-# Value to be used when filtering assertion parameters from
-# the environment. (string value)
-#assertion_prefix=
-
-
-[identity]
-
-#
-# Options defined in keystone
+#driver = keystone.contrib.federation.backends.sql.Federation
+ 
+# Value to be used when filtering assertion parameters from the environment.
+# (string value)
+#assertion_prefix =
+ 
+# Value to be used to obtain the entity ID of the Identity Provider from the
+# environment (e.g. if using the mod_shib plugin this value is `Shib-Identity-
+# Provider`). (string value)
+#remote_id_attribute = <None>
+ 
+# A domain name that is reserved to allow federated ephemeral users to have a
+# domain concept. Note that an admin will not be able to create a domain with
+# this name or update an existing domain to this name. You are not advised to
+# change this value unless you really have to. Changing this option to empty
+# string or None will not have any impact and default name will be used.
+# (string value)
+#federated_domain_name = Federated
+ 
+# A list of trusted dashboard hosts. Before accepting a Single Sign-On request
+# to return a token, the origin host must be a member of the trusted_dashboard
+# list. This configuration option may be repeated for multiple values. For
+# example: trusted_dashboard=http://acme.com trusted_dashboard=http://beta.com
+# (multi valued)
+#trusted_dashboard =
+ 
+# Location of Single Sign-On callback handler, will return a token to a trusted
+# dashboard host. (string value)
+#sso_callback_template = /etc/keystone/sso_callback_template.html
+ 
+ 
+[fernet_tokens]
+ 
 #
-
-# This references the domain to use for all Identity API v2
-# requests (which are not aware of domains). A domain with
-# this ID will be created for you by keystone-manage db_sync
-# in migration 008. The domain referenced by this ID cannot be
-# deleted on the v3 API, to prevent accidentally breaking the
-# v2 API. There is nothing special about this domain, other
-# than the fact that it must exist to order to maintain
-# support for your v2 clients. (string value)
-#default_domain_id=default
-
-# A subset (or all) of domains can have their own identity
-# driver, each with their own partial configuration file in a
-# domain configuration directory. Only values specific to the
-# domain need to be placed in the domain specific
-# configuration file. This feature is disabled by default; set
-# to true to enable. (boolean value)
-#domain_specific_drivers_enabled=false
-
-# Path for Keystone to locate the domain specific identity
-# configuration files if domain_specific_drivers_enabled is
-# set to true. (string value)
-#domain_config_dir=/etc/keystone/domains
-
-# Identity backend driver. (string value)
-#driver=keystone.identity.backends.sql.Identity
-
-# Maximum supported length for user passwords; decrease to
-# improve performance. (integer value)
-#max_password_length=4096
-
-# Maximum number of entities that will be returned in an
-# identity collection. (integer value)
-#list_limit=<None>
-
-
-[identity_mapping]
-
+# From keystone
 #
-# Options defined in keystone
+ 
+# Directory containing Fernet token keys. (string value)
+#key_repository = /etc/keystone/fernet-keys/
+ 
+# This controls how many keys are held in rotation by keystone-manage
+# fernet_rotate before they are discarded. The default value of 3 means that
+# keystone will maintain one staged key, one primary key, and one secondary
+# key. Increasing this value means that additional secondary keys will be kept
+# in the rotation. (integer value)
+#max_active_keys = 3
+ 
+ 
+[identity]
+ 
 #
-
-# Keystone Identity Mapping backend driver. (string value)
-#driver=keystone.identity.mapping_backends.sql.Mapping
-
-# Public ID generator for user and group entities. The
-# Keystone identity mapper only supports generators that
-# produce no more than 64 characters. (string value)
-#generator=keystone.identity.id_generators.sha256.Generator
-
-# The format of user and group IDs changed in Juno for
-# backends that do not generate UUIDs (e.g. LDAP), with
-# keystone providing a hash mapping to the underlying
-# attribute in LDAP. By default this mapping is disabled,
-# which ensures that existing IDs will not change. Even when
-# the mapping is enabled by using domain specific drivers, any
-# users and groups from the default domain being handled by
-# LDAP will still not be mapped to ensure their IDs remain
-# backward compatible. Setting this value to False will enable
-# the mapping for even the default LDAP driver. It is only
-# safe to do this if you do not already have assignments for
-# users and groups from the default LDAP domain, and it is
-# acceptable for Keystone to provide the different IDs to
-# clients than it did previously.  Typically this means that
-# the only time you can set this value to False is when
-# configuring a fresh installation. (boolean value)
-#backward_compatible_ids=true
-
-
-[kvs]
-
-#
-# Options defined in keystone
+# From keystone
 #
-
-# Extra dogpile.cache backend modules to register with the
-# dogpile.cache library. (list value)
-#backends=
-
-# Prefix for building the configuration dictionary for the KVS
-# region. This should not need to be changed unless there is
-# another dogpile.cache region with the same configuration
-# name. (string value)
-#config_prefix=keystone.kvs
-
-# Toggle to disable using a key-mangling function to ensure
-# fixed length keys. This is toggle-able for debugging
-# purposes, it is highly recommended to always leave this set
-# to true. (boolean value)
-#enable_key_mangler=true
-
-# Default lock timeout for distributed locking. (integer
+ 
+# This references the domain to use for all Identity API v2 requests (which are
+# not aware of domains). A domain with this ID will be created for you by
+# keystone-manage db_sync in migration 008. The domain referenced by this ID
+# cannot be deleted on the v3 API, to prevent accidentally breaking the v2 API.
+# There is nothing special about this domain, other than the fact that it must
+# exist to order to maintain support for your v2 clients. (string value)
+default_domain_id = default
+ 
+# A subset (or all) of domains can have their own identity driver, each with
+# their own partial configuration options, stored in either the resource
+# backend or in a file in a domain configuration directory (depending on the
+# setting of domain_configurations_from_database). Only values specific to the
+# domain need to be specified in this manner. This feature is disabled by
+# default; set to true to enable. (boolean value)
+#domain_specific_drivers_enabled = false
+ 
+# Extract the domain specific configuration options from the resource backend
+# where they have been stored with the domain data. This feature is disabled by
+# default (in which case the domain specific options will be loaded from files
+# in the domain configuration directory); set to true to enable. (boolean
 # value)
-#default_lock_timeout=5
-
-
+#domain_configurations_from_database = false
+ 
+# Path for Keystone to locate the domain specific identity configuration files
+# if domain_specific_drivers_enabled is set to true. (string value)
+#domain_config_dir = /etc/keystone/domains
+ 
+# Identity backend driver. (string value)
+#driver = keystone.identity.backends.sql.Identity
+ 
+# Toggle for identity caching. This has no effect unless global caching is
+# enabled. (boolean value)
+#caching = true
+ 
+# Time to cache identity data (in seconds). This has no effect unless global
+# and identity caching are enabled. (integer value)
+#cache_time = 600
+ 
+# Maximum supported length for user passwords; decrease to improve performance.
+# (integer value)
+#max_password_length = 4096
+ 
+# Maximum number of entities that will be returned in an identity collection.
+# (integer value)
+#list_limit = <None>
+ 
+ 
+[identity_mapping]
+ 
+#
+# From keystone
+#
+ 
+# Keystone Identity Mapping backend driver. (string value)
+#driver = keystone.identity.mapping_backends.sql.Mapping
+ 
+# Public ID generator for user and group entities. The Keystone identity mapper
+# only supports generators that produce no more than 64 characters. (string
+# value)
+#generator = keystone.identity.id_generators.sha256.Generator
+ 
+# The format of user and group IDs changed in Juno for backends that do not
+# generate UUIDs (e.g. LDAP), with keystone providing a hash mapping to the
+# underlying attribute in LDAP. By default this mapping is disabled, which
+# ensures that existing IDs will not change. Even when the mapping is enabled
+# by using domain specific drivers, any users and groups from the default
+# domain being handled by LDAP will still not be mapped to ensure their IDs
+# remain backward compatible. Setting this value to False will enable the
+# mapping for even the default LDAP driver. It is only safe to do this if you
+# do not already have assignments for users and groups from the default LDAP
+# domain, and it is acceptable for Keystone to provide the different IDs to
+# clients than it did previously.  Typically this means that the only time you
+# can set this value to False is when configuring a fresh installation.
+# (boolean value)
+#backward_compatible_ids = true
+ 
+ 
+[kvs]
+ 
+#
+# From keystone
+#
+ 
+# Extra dogpile.cache backend modules to register with the dogpile.cache
+# library. (list value)
+#backends =
+ 
+# Prefix for building the configuration dictionary for the KVS region. This
+# should not need to be changed unless there is another dogpile.cache region
+# with the same configuration name. (string value)
+#config_prefix = keystone.kvs
+ 
+# Toggle to disable using a key-mangling function to ensure fixed length keys.
+# This is toggle-able for debugging purposes, it is highly recommended to
+# always leave this set to true. (boolean value)
+#enable_key_mangler = true
+ 
+# Default lock timeout (in seconds) for distributed locking. (integer value)
+#default_lock_timeout = 5
+ 
+ 
 [ldap]
-
+ 
 #
-# Options defined in keystone
+# From keystone
 #
-
+ 
 # URL for connecting to the LDAP server. (string value)
-#url=ldap://localhost
-
+#url = ldap://localhost
+ 
 # User BindDN to query the LDAP server. (string value)
-#user=<None>
-
-# Password for the BindDN to query the LDAP server. (string
-# value)
-#password=<None>
-
+#user = <None>
+ 
+# Password for the BindDN to query the LDAP server. (string value)
+#password = <None>
+ 
 # LDAP server suffix (string value)
-#suffix=cn=example,cn=com
-
-# If true, will add a dummy member to groups. This is required
-# if the objectclass for groups requires the "member"
-# attribute. (boolean value)
-#use_dumb_member=false
-
-# DN of the "dummy member" to use when "use_dumb_member" is
-# enabled. (string value)
-#dumb_member=cn=dumb,dc=nonexistent
-
-# Delete subtrees using the subtree delete control. Only
-# enable this option if your LDAP server supports subtree
-# deletion. (boolean value)
-#allow_subtree_delete=false
-
-# The LDAP scope for queries, this can be either "one"
-# (onelevel/singleLevel) or "sub" (subtree/wholeSubtree).
-# (string value)
-#query_scope=one
-
-# Maximum results per page; a value of zero ("0") disables
-# paging. (integer value)
-#page_size=0
-
-# The LDAP dereferencing option for queries. This can be
-# either "never", "searching", "always", "finding" or
-# "default". The "default" option falls back to using default
-# dereferencing configured by your ldap.conf. (string value)
-#alias_dereferencing=default
-
-# Sets the LDAP debugging level for LDAP calls. A value of 0
-# means that debugging is not enabled. This value is a
-# bitmask, consult your LDAP documentation for possible
-# values. (integer value)
-#debug_level=<None>
-
-# Override the system's default referral chasing behavior for
-# queries. (boolean value)
-#chase_referrals=<None>
-
+#suffix = cn=example,cn=com
+ 
+# If true, will add a dummy member to groups. This is required if the
+# objectclass for groups requires the "member" attribute. (boolean value)
+#use_dumb_member = false
+ 
+# DN of the "dummy member" to use when "use_dumb_member" is enabled. (string
+# value)
+#dumb_member = cn=dumb,dc=nonexistent
+ 
+# Delete subtrees using the subtree delete control. Only enable this option if
+# your LDAP server supports subtree deletion. (boolean value)
+#allow_subtree_delete = false
+ 
+# The LDAP scope for queries, this can be either "one" (onelevel/singleLevel)
+# or "sub" (subtree/wholeSubtree). (string value)
+#query_scope = one
+ 
+# Maximum results per page; a value of zero ("0") disables paging. (integer
+# value)
+#page_size = 0
+ 
+# The LDAP dereferencing option for queries. This can be either "never",
+# "searching", "always", "finding" or "default". The "default" option falls
+# back to using default dereferencing configured by your ldap.conf. (string
+# value)
+#alias_dereferencing = default
+ 
+# Sets the LDAP debugging level for LDAP calls. A value of 0 means that
+# debugging is not enabled. This value is a bitmask, consult your LDAP
+# documentation for possible values. (integer value)
+#debug_level = <None>
+ 
+# Override the system's default referral chasing behavior for queries. (boolean
+# value)
+#chase_referrals = <None>
+ 
 # Search base for users. (string value)
-#user_tree_dn=<None>
-
+#user_tree_dn = <None>
+ 
 # LDAP search filter for users. (string value)
-#user_filter=<None>
-
+#user_filter = <None>
+ 
 # LDAP objectclass for users. (string value)
-#user_objectclass=inetOrgPerson
-
-# LDAP attribute mapped to user id. WARNING: must not be a
-# multivalued attribute. (string value)
-#user_id_attribute=cn
-
+#user_objectclass = inetOrgPerson
+ 
+# LDAP attribute mapped to user id. WARNING: must not be a multivalued
+# attribute. (string value)
+#user_id_attribute = cn
+ 
 # LDAP attribute mapped to user name. (string value)
-#user_name_attribute=sn
-
+#user_name_attribute = sn
+ 
 # LDAP attribute mapped to user email. (string value)
-#user_mail_attribute=mail
-
+#user_mail_attribute = mail
+ 
 # LDAP attribute mapped to password. (string value)
-#user_pass_attribute=userPassword
-
+#user_pass_attribute = userPassword
+ 
 # LDAP attribute mapped to user enabled flag. (string value)
-#user_enabled_attribute=enabled
-
-# Invert the meaning of the boolean enabled values. Some LDAP
-# servers use a boolean lock attribute where "true" means an
-# account is disabled. Setting "user_enabled_invert = true"
-# will allow these lock attributes to be used. This setting
-# will have no effect if "user_enabled_mask" or
-# "user_enabled_emulation" settings are in use. (boolean
-# value)
-#user_enabled_invert=false
-
-# Bitmask integer to indicate the bit that the enabled value
-# is stored in if the LDAP server represents "enabled" as a
-# bit on an integer rather than a boolean. A value of "0"
-# indicates the mask is not used. If this is not set to "0"
-# the typical value is "2". This is typically used when
-# "user_enabled_attribute = userAccountControl". (integer
-# value)
-#user_enabled_mask=0
-
-# Default value to enable users. This should match an
-# appropriate int value if the LDAP server uses non-boolean
-# (bitmask) values to indicate if a user is enabled or
-# disabled. If this is not set to "True" the typical value is
-# "512". This is typically used when "user_enabled_attribute =
-# userAccountControl". (string value)
-#user_enabled_default=True
-
-# List of attributes stripped off the user on update. (list
-# value)
-#user_attribute_ignore=default_project_id,tenants
-
-# LDAP attribute mapped to default_project_id for users.
+#user_enabled_attribute = enabled
+ 
+# Invert the meaning of the boolean enabled values. Some LDAP servers use a
+# boolean lock attribute where "true" means an account is disabled. Setting
+# "user_enabled_invert = true" will allow these lock attributes to be used.
+# This setting will have no effect if "user_enabled_mask" or
+# "user_enabled_emulation" settings are in use. (boolean value)
+#user_enabled_invert = false
+ 
+# Bitmask integer to indicate the bit that the enabled value is stored in if
+# the LDAP server represents "enabled" as a bit on an integer rather than a
+# boolean. A value of "0" indicates the mask is not used. If this is not set to
+# "0" the typical value is "2". This is typically used when
+# "user_enabled_attribute = userAccountControl". (integer value)
+#user_enabled_mask = 0
+ 
+# Default value to enable users. This should match an appropriate int value if
+# the LDAP server uses non-boolean (bitmask) values to indicate if a user is
+# enabled or disabled. If this is not set to "True" the typical value is "512".
+# This is typically used when "user_enabled_attribute = userAccountControl".
 # (string value)
-#user_default_project_id_attribute=<None>
-
+#user_enabled_default = true
+ 
+# List of attributes stripped off the user on update. (list value)
+#user_attribute_ignore = default_project_id,tenants
+ 
+# LDAP attribute mapped to default_project_id for users. (string value)
+#user_default_project_id_attribute = <None>
+ 
 # Allow user creation in LDAP backend. (boolean value)
-#user_allow_create=true
-
+#user_allow_create = true
+ 
 # Allow user updates in LDAP backend. (boolean value)
-#user_allow_update=true
-
+#user_allow_update = true
+ 
 # Allow user deletion in LDAP backend. (boolean value)
-#user_allow_delete=true
-
-# If true, Keystone uses an alternative method to determine if
-# a user is enabled or not by checking if they are a member of
-# the "user_enabled_emulation_dn" group. (boolean value)
-#user_enabled_emulation=false
-
-# DN of the group entry to hold enabled users when using
-# enabled emulation. (string value)
-#user_enabled_emulation_dn=<None>
-
-# List of additional LDAP attributes used for mapping
-# additional attribute mappings for users. Attribute mapping
-# format is <ldap_attr>:<user_attr>, where ldap_attr is the
-# attribute in the LDAP entry and user_attr is the Identity
-# API attribute. (list value)
-#user_additional_attribute_mapping=
-
+#user_allow_delete = true
+ 
+# If true, Keystone uses an alternative method to determine if a user is
+# enabled or not by checking if they are a member of the
+# "user_enabled_emulation_dn" group. (boolean value)
+#user_enabled_emulation = false
+ 
+# DN of the group entry to hold enabled users when using enabled emulation.
+# (string value)
+#user_enabled_emulation_dn = <None>
+ 
+# List of additional LDAP attributes used for mapping additional attribute
+# mappings for users. Attribute mapping format is <ldap_attr>:<user_attr>,
+# where ldap_attr is the attribute in the LDAP entry and user_attr is the
+# Identity API attribute. (list value)
+#user_additional_attribute_mapping =
+ 
 # Search base for projects (string value)
 # Deprecated group/name - [ldap]/tenant_tree_dn
-#project_tree_dn=<None>
-
+#project_tree_dn = <None>
+ 
 # LDAP search filter for projects. (string value)
 # Deprecated group/name - [ldap]/tenant_filter
-#project_filter=<None>
-
+#project_filter = <None>
+ 
 # LDAP objectclass for projects. (string value)
 # Deprecated group/name - [ldap]/tenant_objectclass
-#project_objectclass=groupOfNames
-
+#project_objectclass = groupOfNames
+ 
 # LDAP attribute mapped to project id. (string value)
 # Deprecated group/name - [ldap]/tenant_id_attribute
-#project_id_attribute=cn
-
-# LDAP attribute mapped to project membership for user.
-# (string value)
+#project_id_attribute = cn
+ 
+# LDAP attribute mapped to project membership for user. (string value)
 # Deprecated group/name - [ldap]/tenant_member_attribute
-#project_member_attribute=member
-
+#project_member_attribute = member
+ 
 # LDAP attribute mapped to project name. (string value)
 # Deprecated group/name - [ldap]/tenant_name_attribute
-#project_name_attribute=ou
-
+#project_name_attribute = ou
+ 
 # LDAP attribute mapped to project description. (string value)
 # Deprecated group/name - [ldap]/tenant_desc_attribute
-#project_desc_attribute=description
-
+#project_desc_attribute = description
+ 
 # LDAP attribute mapped to project enabled. (string value)
 # Deprecated group/name - [ldap]/tenant_enabled_attribute
-#project_enabled_attribute=enabled
-
+#project_enabled_attribute = enabled
+ 
 # LDAP attribute mapped to project domain_id. (string value)
 # Deprecated group/name - [ldap]/tenant_domain_id_attribute
-#project_domain_id_attribute=businessCategory
-
-# List of attributes stripped off the project on update. (list
-# value)
+#project_domain_id_attribute = businessCategory
+ 
+# List of attributes stripped off the project on update. (list value)
 # Deprecated group/name - [ldap]/tenant_attribute_ignore
-#project_attribute_ignore=
-
+#project_attribute_ignore =
+ 
 # Allow project creation in LDAP backend. (boolean value)
 # Deprecated group/name - [ldap]/tenant_allow_create
-#project_allow_create=true
-
+#project_allow_create = true
+ 
 # Allow project update in LDAP backend. (boolean value)
 # Deprecated group/name - [ldap]/tenant_allow_update
-#project_allow_update=true
-
+#project_allow_update = true
+ 
 # Allow project deletion in LDAP backend. (boolean value)
 # Deprecated group/name - [ldap]/tenant_allow_delete
-#project_allow_delete=true
-
-# If true, Keystone uses an alternative method to determine if
-# a project is enabled or not by checking if they are a member
-# of the "project_enabled_emulation_dn" group. (boolean value)
+#project_allow_delete = true
+ 
+# If true, Keystone uses an alternative method to determine if a project is
+# enabled or not by checking if they are a member of the
+# "project_enabled_emulation_dn" group. (boolean value)
 # Deprecated group/name - [ldap]/tenant_enabled_emulation
-#project_enabled_emulation=false
-
-# DN of the group entry to hold enabled projects when using
-# enabled emulation. (string value)
+#project_enabled_emulation = false
+ 
+# DN of the group entry to hold enabled projects when using enabled emulation.
+# (string value)
 # Deprecated group/name - [ldap]/tenant_enabled_emulation_dn
-#project_enabled_emulation_dn=<None>
-
-# Additional attribute mappings for projects. Attribute
-# mapping format is <ldap_attr>:<user_attr>, where ldap_attr
-# is the attribute in the LDAP entry and user_attr is the
-# Identity API attribute. (list value)
+#project_enabled_emulation_dn = <None>
+ 
+# Additional attribute mappings for projects. Attribute mapping format is
+# <ldap_attr>:<user_attr>, where ldap_attr is the attribute in the LDAP entry
+# and user_attr is the Identity API attribute. (list value)
 # Deprecated group/name - [ldap]/tenant_additional_attribute_mapping
-#project_additional_attribute_mapping=
-
+#project_additional_attribute_mapping =
+ 
 # Search base for roles. (string value)
-#role_tree_dn=<None>
-
+#role_tree_dn = <None>
+ 
 # LDAP search filter for roles. (string value)
-#role_filter=<None>
-
+#role_filter = <None>
+ 
 # LDAP objectclass for roles. (string value)
-#role_objectclass=organizationalRole
-
+#role_objectclass = organizationalRole
+ 
 # LDAP attribute mapped to role id. (string value)
-#role_id_attribute=cn
-
+#role_id_attribute = cn
+ 
 # LDAP attribute mapped to role name. (string value)
-#role_name_attribute=ou
-
+#role_name_attribute = ou
+ 
 # LDAP attribute mapped to role membership. (string value)
-#role_member_attribute=roleOccupant
-
-# List of attributes stripped off the role on update. (list
-# value)
-#role_attribute_ignore=
-
+#role_member_attribute = roleOccupant
+ 
+# List of attributes stripped off the role on update. (list value)
+#role_attribute_ignore =
+ 
 # Allow role creation in LDAP backend. (boolean value)
-#role_allow_create=true
-
+#role_allow_create = true
+ 
 # Allow role update in LDAP backend. (boolean value)
-#role_allow_update=true
-
+#role_allow_update = true
+ 
 # Allow role deletion in LDAP backend. (boolean value)
-#role_allow_delete=true
-
-# Additional attribute mappings for roles. Attribute mapping
-# format is <ldap_attr>:<user_attr>, where ldap_attr is the
-# attribute in the LDAP entry and user_attr is the Identity
-# API attribute. (list value)
-#role_additional_attribute_mapping=
-
+#role_allow_delete = true
+ 
+# Additional attribute mappings for roles. Attribute mapping format is
+# <ldap_attr>:<user_attr>, where ldap_attr is the attribute in the LDAP entry
+# and user_attr is the Identity API attribute. (list value)
+#role_additional_attribute_mapping =
+ 
 # Search base for groups. (string value)
-#group_tree_dn=<None>
-
+#group_tree_dn = <None>
+ 
 # LDAP search filter for groups. (string value)
-#group_filter=<None>
-
+#group_filter = <None>
+ 
 # LDAP objectclass for groups. (string value)
-#group_objectclass=groupOfNames
-
+#group_objectclass = groupOfNames
+ 
 # LDAP attribute mapped to group id. (string value)
-#group_id_attribute=cn
-
+#group_id_attribute = cn
+ 
 # LDAP attribute mapped to group name. (string value)
-#group_name_attribute=ou
-
-# LDAP attribute mapped to show group membership. (string
-# value)
-#group_member_attribute=member
-
+#group_name_attribute = ou
+ 
+# LDAP attribute mapped to show group membership. (string value)
+#group_member_attribute = member
+ 
 # LDAP attribute mapped to group description. (string value)
-#group_desc_attribute=description
-
-# List of attributes stripped off the group on update. (list
-# value)
-#group_attribute_ignore=
-
+#group_desc_attribute = description
+ 
+# List of attributes stripped off the group on update. (list value)
+#group_attribute_ignore =
+ 
 # Allow group creation in LDAP backend. (boolean value)
-#group_allow_create=true
-
+#group_allow_create = true
+ 
 # Allow group update in LDAP backend. (boolean value)
-#group_allow_update=true
-
+#group_allow_update = true
+ 
 # Allow group deletion in LDAP backend. (boolean value)
-#group_allow_delete=true
-
-# Additional attribute mappings for groups. Attribute mapping
-# format is <ldap_attr>:<user_attr>, where ldap_attr is the
-# attribute in the LDAP entry and user_attr is the Identity
-# API attribute. (list value)
-#group_additional_attribute_mapping=
-
-# CA certificate file path for communicating with LDAP
-# servers. (string value)
-#tls_cacertfile=<None>
-
-# CA certificate directory path for communicating with LDAP
-# servers. (string value)
-#tls_cacertdir=<None>
-
-# Enable TLS for communicating with LDAP servers. (boolean
+#group_allow_delete = true
+ 
+# Additional attribute mappings for groups. Attribute mapping format is
+# <ldap_attr>:<user_attr>, where ldap_attr is the attribute in the LDAP entry
+# and user_attr is the Identity API attribute. (list value)
+#group_additional_attribute_mapping =
+ 
+# CA certificate file path for communicating with LDAP servers. (string value)
+#tls_cacertfile = <None>
+ 
+# CA certificate directory path for communicating with LDAP servers. (string
 # value)
-#use_tls=false
-
-# Valid options for tls_req_cert are demand, never, and allow.
-# (string value)
-#tls_req_cert=demand
-
+#tls_cacertdir = <None>
+ 
+# Enable TLS for communicating with LDAP servers. (boolean value)
+#use_tls = false
+ 
+# Valid options for tls_req_cert are demand, never, and allow. (string value)
+#tls_req_cert = demand
+ 
 # Enable LDAP connection pooling. (boolean value)
-#use_pool=false
-
+#use_pool = false
+ 
 # Connection pool size. (integer value)
-#pool_size=10
-
+#pool_size = 10
+ 
 # Maximum count of reconnect trials. (integer value)
-#pool_retry_max=3
-
-# Time span in seconds to wait between two reconnect trials.
-# (floating point value)
-#pool_retry_delay=0.1
-
-# Connector timeout in seconds. Value -1 indicates indefinite
-# wait for response. (integer value)
-#pool_connection_timeout=-1
-
+#pool_retry_max = 3
+ 
+# Time span in seconds to wait between two reconnect trials. (floating point
+# value)
+#pool_retry_delay = 0.1
+ 
+# Connector timeout in seconds. Value -1 indicates indefinite wait for
+# response. (integer value)
+#pool_connection_timeout = -1
+ 
 # Connection lifetime in seconds. (integer value)
-#pool_connection_lifetime=600
-
-# Enable LDAP connection pooling for end user authentication.
-# If use_pool is disabled, then this setting is meaningless
-# and is not used at all. (boolean value)
-#use_auth_pool=false
-
-# End user auth connection pool size. (integer value)
-#auth_pool_size=100
-
-# End user auth connection lifetime in seconds. (integer
+#pool_connection_lifetime = 600
+ 
+# Enable LDAP connection pooling for end user authentication. If use_pool is
+# disabled, then this setting is meaningless and is not used at all. (boolean
 # value)
-#auth_pool_connection_lifetime=60
-
-
+#use_auth_pool = false
+ 
+# End user auth connection pool size. (integer value)
+#auth_pool_size = 100
+ 
+# End user auth connection lifetime in seconds. (integer value)
+#auth_pool_connection_lifetime = 60
+ 
+ 
 [matchmaker_redis]
-
+ 
 #
-# Options defined in oslo.messaging
+# From oslo.messaging
 #
-
+ 
 # Host to locate redis. (string value)
-#host=127.0.0.1
-
+#host = 127.0.0.1
+ 
 # Use this port to connect to redis host. (integer value)
-#port=6379
-
+#port = 6379
+ 
 # Password for Redis server (optional). (string value)
-#password=<None>
-
-
+#password = <None>
+ 
+ 
 [matchmaker_ring]
-
+ 
 #
-# Options defined in oslo.messaging
+# From oslo.messaging
 #
-
+ 
 # Matchmaker ring file (JSON). (string value)
 # Deprecated group/name - [DEFAULT]/matchmaker_ringfile
-#ringfile=/etc/oslo/matchmaker_ring.json
-
-
+#ringfile = /etc/oslo/matchmaker_ring.json
+ 
+ 
 [memcache]
-
+ 
 #
-# Options defined in keystone
+# From keystone
 #
-
+ 
 # Memcache servers in the format of "host:port". (list value)
-#servers=localhost:11211
-
-# Number of seconds memcached server is considered dead before
-# it is tried again. This is used by the key value store
-# system (e.g. token pooled memcached persistence backend).
-# (integer value)
-#dead_retry=300
-
-# Timeout in seconds for every call to a server. This is used
-# by the key value store system (e.g. token pooled memcached
-# persistence backend). (integer value)
-#socket_timeout=3
-
-# Max total number of open connections to every memcached
-# server. This is used by the key value store system (e.g.
-# token pooled memcached persistence backend). (integer value)
-#pool_maxsize=10
-
-# Number of seconds a connection to memcached is held unused
-# in the pool before it is closed. This is used by the key
-# value store system (e.g. token pooled memcached persistence
+#servers = localhost:11211
+ 
+# Number of seconds memcached server is considered dead before it is tried
+# again. This is used by the key value store system (e.g. token pooled
+# memcached persistence backend). (integer value)
+#dead_retry = 300
+ 
+# Timeout in seconds for every call to a server. This is used by the key value
+# store system (e.g. token pooled memcached persistence backend). (integer
+# value)
+#socket_timeout = 3
+ 
+# Max total number of open connections to every memcached server. This is used
+# by the key value store system (e.g. token pooled memcached persistence
 # backend). (integer value)
-#pool_unused_timeout=60
-
-# Number of seconds that an operation will wait to get a
-# memcache client connection. This is used by the key value
-# store system (e.g. token pooled memcached persistence
-# backend). (integer value)
-#pool_connection_get_timeout=10
-
-
+#pool_maxsize = 10
+ 
+# Number of seconds a connection to memcached is held unused in the pool before
+# it is closed. This is used by the key value store system (e.g. token pooled
+# memcached persistence backend). (integer value)
+#pool_unused_timeout = 60
+ 
+# Number of seconds that an operation will wait to get a memcache client
+# connection. This is used by the key value store system (e.g. token pooled
+# memcached persistence backend). (integer value)
+#pool_connection_get_timeout = 10
+ 
+ 
 [oauth1]
-
+ 
+#
+# From keystone
+#
+ 
+# Credential backend driver. (string value)
+#driver = keystone.contrib.oauth1.backends.sql.OAuth1
+ 
+# Duration (in seconds) for the OAuth Request Token. (integer value)
+#request_token_duration = 28800
+ 
+# Duration (in seconds) for the OAuth Access Token. (integer value)
+#access_token_duration = 86400
+ 
+ 
+[os_inherit]
+ 
+#
+# From keystone
+#
+ 
+# role-assignment inheritance to projects from owning domain or from projects
+# higher in the hierarchy can be optionally enabled. (boolean value)
+#enabled = false
+ 
+ 
+[oslo_messaging_amqp]
+ 
+#
+# 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)
+# 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)
+# Deprecated group/name - [amqp1]/trace
+#trace = false
+ 
+# CA certificate PEM file for verifing 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)
+# Deprecated group/name - [amqp1]/allow_insecure_clients
+#allow_insecure_clients = false
+ 
+ 
+[oslo_messaging_qpid]
+ 
+#
+# From oslo.messaging
 #
-# Options defined in keystone
+ 
+# 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)
+# Deprecated group/name - [DEFAULT]/amqp_auto_delete
+#amqp_auto_delete = false
+ 
+# Size of RPC connection pool. (integer value)
+# Deprecated group/name - [DEFAULT]/rpc_conn_pool_size
+#rpc_conn_pool_size = 30
+ 
+# Qpid broker hostname. (string value)
+# Deprecated group/name - [DEFAULT]/qpid_hostname
+#qpid_hostname = localhost
+ 
+# Qpid broker port. (integer value)
+# Deprecated group/name - [DEFAULT]/qpid_port
+#qpid_port = 5672
+ 
+# Qpid HA cluster host:port pairs. (list value)
+# Deprecated group/name - [DEFAULT]/qpid_hosts
+#qpid_hosts = $qpid_hostname:$qpid_port
+ 
+# Username for Qpid connection. (string value)
+# Deprecated group/name - [DEFAULT]/qpid_username
+#qpid_username =
+ 
+# Password for Qpid connection. (string value)
+# Deprecated group/name - [DEFAULT]/qpid_password
+#qpid_password =
+ 
+# Space separated list of SASL mechanisms to use for auth. (string value)
+# Deprecated group/name - [DEFAULT]/qpid_sasl_mechanisms
+#qpid_sasl_mechanisms =
+ 
+# Seconds between connection keepalive heartbeats. (integer value)
+# Deprecated group/name - [DEFAULT]/qpid_heartbeat
+#qpid_heartbeat = 60
+ 
+# Transport to use, either 'tcp' or 'ssl'. (string value)
+# Deprecated group/name - [DEFAULT]/qpid_protocol
+#qpid_protocol = tcp
+ 
+# Whether to disable the Nagle algorithm. (boolean value)
+# Deprecated group/name - [DEFAULT]/qpid_tcp_nodelay
+#qpid_tcp_nodelay = true
+ 
+# The number of prefetched messages held by receiver. (integer value)
+# Deprecated group/name - [DEFAULT]/qpid_receiver_capacity
+#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)
+# Deprecated group/name - [DEFAULT]/qpid_topology_version
+#qpid_topology_version = 1
+ 
+ 
+[oslo_messaging_rabbit]
+ 
 #
-
-# Credential backend driver. (string value)
-#driver=keystone.contrib.oauth1.backends.sql.OAuth1
-
-# Duration (in seconds) for the OAuth Request Token. (integer
-# value)
-#request_token_duration=28800
-
-# Duration (in seconds) for the OAuth Access Token. (integer
-# value)
-#access_token_duration=86400
-
-
-[os_inherit]
-
-#
-# Options defined in keystone
+# From oslo.messaging
 #
-
-# role-assignment inheritance to projects from owning domain
-# can be optionally enabled. (boolean value)
-#enabled=false
-
-
-[paste_deploy]
-
-#
-# Options defined in keystone
+ 
+# 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)
+# Deprecated group/name - [DEFAULT]/amqp_auto_delete
+#amqp_auto_delete = false
+ 
+# Size of RPC connection pool. (integer value)
+# Deprecated group/name - [DEFAULT]/rpc_conn_pool_size
+#rpc_conn_pool_size = 30
+ 
+# SSL version to use (valid only if SSL enabled). Valid values are TLSv1 and
+# SSLv23. SSLv2, SSLv3, TLSv1_1, and TLSv1_2 may be available on some
+# distributions. (string value)
+# Deprecated group/name - [DEFAULT]/kombu_ssl_version
+#kombu_ssl_version =
+ 
+# SSL key file (valid only if SSL enabled). (string value)
+# Deprecated group/name - [DEFAULT]/kombu_ssl_keyfile
+#kombu_ssl_keyfile =
+ 
+# SSL cert file (valid only if SSL enabled). (string value)
+# Deprecated group/name - [DEFAULT]/kombu_ssl_certfile
+#kombu_ssl_certfile =
+ 
+# SSL certification authority file (valid only if SSL enabled). (string value)
+# Deprecated group/name - [DEFAULT]/kombu_ssl_ca_certs
+#kombu_ssl_ca_certs =
+ 
+# How long to wait before reconnecting in response to an AMQP consumer cancel
+# notification. (floating point value)
+# Deprecated group/name - [DEFAULT]/kombu_reconnect_delay
+#kombu_reconnect_delay = 1.0
+ 
+# The RabbitMQ broker address where a single node is used. (string value)
+# Deprecated group/name - [DEFAULT]/rabbit_host
+#rabbit_host = localhost
+ 
+# The RabbitMQ broker port where a single node is used. (integer value)
+# Deprecated group/name - [DEFAULT]/rabbit_port
+#rabbit_port = 5672
+ 
+# RabbitMQ HA cluster host:port pairs. (list value)
+# Deprecated group/name - [DEFAULT]/rabbit_hosts
+#rabbit_hosts = $rabbit_host:$rabbit_port
+ 
+# Connect over SSL for RabbitMQ. (boolean value)
+# Deprecated group/name - [DEFAULT]/rabbit_use_ssl
+#rabbit_use_ssl = false
+ 
+# The RabbitMQ userid. (string value)
+# Deprecated group/name - [DEFAULT]/rabbit_userid
+#rabbit_userid = guest
+ 
+# The RabbitMQ password. (string value)
+# Deprecated group/name - [DEFAULT]/rabbit_password
+#rabbit_password = guest
+ 
+# The RabbitMQ login method. (string value)
+# Deprecated group/name - [DEFAULT]/rabbit_login_method
+#rabbit_login_method = AMQPLAIN
+ 
+# The RabbitMQ virtual host. (string value)
+# Deprecated group/name - [DEFAULT]/rabbit_virtual_host
+#rabbit_virtual_host = /
+ 
+# How frequently to retry connecting with RabbitMQ. (integer 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 number of RabbitMQ connection retries. Default is 0 (infinite retry
+# count). (integer value)
+# Deprecated group/name - [DEFAULT]/rabbit_max_retries
+#rabbit_max_retries = 0
+ 
+# Use HA queues in RabbitMQ (x-ha-policy: all). If you change this option, you
+# must wipe the RabbitMQ database. (boolean value)
+# Deprecated group/name - [DEFAULT]/rabbit_ha_queues
+#rabbit_ha_queues = false
+ 
+# Number of seconds after which the Rabbit broker is considered down if
+# heartbeat's keep-alive fails (0 disable the heartbeat). (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
+ 
+ 
+[oslo_middleware]
+ 
 #
-
-# Name of the paste configuration file that defines the
-# available pipelines. (string value)
-#config_file=keystone-paste.ini
-
-
+# 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
+ 
+ 
+[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
+ 
+ 
+[paste_deploy]
+ 
+#
+# From keystone
+#
+ 
+# Name of the paste configuration file that defines the available pipelines.
+# (string value)
+#config_file = keystone-paste.ini
+ 
+ 
 [policy]
-
+ 
 #
-# Options defined in keystone
+# From keystone
 #
-
+ 
 # Policy backend driver. (string value)
-#driver=keystone.policy.backends.sql.Policy
-
-# Maximum number of entities that will be returned in a policy
-# collection. (integer value)
-#list_limit=<None>
-
-
-[revoke]
-
+#driver = keystone.policy.backends.sql.Policy
+ 
+# Maximum number of entities that will be returned in a policy collection.
+# (integer value)
+#list_limit = <None>
+ 
+ 
+[resource]
+ 
 #
-# Options defined in keystone
+# From keystone
 #
-
-# An implementation of the backend for persisting revocation
-# events. (string value)
-#driver=keystone.contrib.revoke.backends.sql.Revoke
-
-# This value (calculated in seconds) is added to token
-# expiration before a revocation event may be removed from the
-# backend. (integer value)
-#expiration_buffer=1800
-
-# Toggle for revocation event caching. This has no effect
-# unless global caching is enabled. (boolean value)
-#caching=true
-
-
-[saml]
-
+ 
+# Resource backend driver. If a resource driver is not specified, the
+# assignment driver will choose the resource driver. (string value)
+#driver = <None>
+ 
+# Toggle for resource caching. This has no effect unless global caching is
+# enabled. (boolean value)
+# Deprecated group/name - [assignment]/caching
+#caching = true
+ 
+# TTL (in seconds) to cache resource data. This has no effect unless global
+# caching is enabled. (integer value)
+# Deprecated group/name - [assignment]/cache_time
+#cache_time = <None>
+ 
+# Maximum number of entities that will be returned in a resource collection.
+# (integer value)
+# Deprecated group/name - [assignment]/list_limit
+#list_limit = <None>
+ 
+ 
+[revoke]
+ 
 #
-# Options defined in keystone
+# From keystone
 #
-
-# Default TTL, in seconds, for any generated SAML assertion
-# created by Keystone. (integer value)
-#assertion_expiration_time=3600
-
-# Binary to be called for XML signing. Install the appropriate
-# package, specify absolute path or adjust your PATH
-# environment variable if the binary cannot be found. (string
+ 
+# An implementation of the backend for persisting revocation events. (string
+# value)
+#driver = keystone.contrib.revoke.backends.sql.Revoke
+ 
+# This value (calculated in seconds) is added to token expiration before a
+# revocation event may be removed from the backend. (integer value)
+#expiration_buffer = 1800
+ 
+# Toggle for revocation event caching. This has no effect unless global caching
+# is enabled. (boolean value)
+#caching = true
+ 
+# Time to cache the revocation list and the revocation events (in seconds).
+# This has no effect unless global and token caching are enabled. (integer
 # value)
-#xmlsec1_binary=xmlsec1
-
-# Path of the certfile for SAML signing. For non-production
-# environments, you may be interested in using `keystone-
-# manage pki_setup` to generate self-signed certificates.
-# Note, the path cannot contain a comma. (string value)
-#certfile=/etc/keystone/ssl/certs/signing_cert.pem
-
-# Path of the keyfile for SAML signing. Note, the path cannot
-# contain a comma. (string value)
-#keyfile=/etc/keystone/ssl/private/signing_key.pem
-
-# Entity ID value for unique Identity Provider identification.
-# Usually FQDN is set with a suffix. A value is required to
-# generate IDP Metadata. For example:
-# https://keystone.example.com/v3/OS-FEDERATION/saml2/idp
-# (string value)
-#idp_entity_id=<None>
-
-# Identity Provider Single-Sign-On service value, required in
-# the Identity Provider's metadata. A value is required to
-# generate IDP Metadata. For example:
-# https://keystone.example.com/v3/OS-FEDERATION/saml2/sso
+# Deprecated group/name - [token]/revocation_cache_time
+#cache_time = 3600
+ 
+ 
+[role]
+ 
+#
+# From keystone
+#
+ 
+# Role backend driver. (string value)
+#driver = <None>
+ 
+# Toggle for role caching. This has no effect unless global caching is enabled.
+# (boolean value)
+#caching = true
+ 
+# TTL (in seconds) to cache role data. This has no effect unless global caching
+# is enabled. (integer value)
+#cache_time = <None>
+ 
+# Maximum number of entities that will be returned in a role collection.
+# (integer value)
+#list_limit = <None>
+ 
+ 
+[saml]
+ 
+#
+# From keystone
+#
+ 
+# Default TTL, in seconds, for any generated SAML assertion created by
+# Keystone. (integer value)
+#assertion_expiration_time = 3600
+ 
+# Binary to be called for XML signing. Install the appropriate package, specify
+# absolute path or adjust your PATH environment variable if the binary cannot
+# be found. (string value)
+#xmlsec1_binary = xmlsec1
+ 
+# Path of the certfile for SAML signing. For non-production environments, you
+# may be interested in using `keystone-manage pki_setup` to generate self-
+# signed certificates. Note, the path cannot contain a comma. (string value)
+#certfile = /etc/keystone/ssl/certs/signing_cert.pem
+ 
+# Path of the keyfile for SAML signing. Note, the path cannot contain a comma.
 # (string value)
-#idp_sso_endpoint=<None>
-
+#keyfile = /etc/keystone/ssl/private/signing_key.pem
+ 
+# Entity ID value for unique Identity Provider identification. Usually FQDN is
+# set with a suffix. A value is required to generate IDP Metadata. For example:
+# https://keystone.example.com/v3/OS-FEDERATION/saml2/idp (string value)
+#idp_entity_id = <None>
+ 
+# Identity Provider Single-Sign-On service value, required in the Identity
+# Provider's metadata. A value is required to generate IDP Metadata. For
+# example: https://keystone.example.com/v3/OS-FEDERATION/saml2/sso (string
+# value)
+#idp_sso_endpoint = <None>
+ 
 # Language used by the organization. (string value)
-#idp_lang=en
-
-# Organization name the installation belongs to. (string
-# value)
-#idp_organization_name=<None>
-
+#idp_lang = en
+ 
+# Organization name the installation belongs to. (string value)
+#idp_organization_name = <None>
+ 
 # Organization name to be displayed. (string value)
-#idp_organization_display_name=<None>
-
+#idp_organization_display_name = <None>
+ 
 # URL of the organization. (string value)
-#idp_organization_url=<None>
-
+#idp_organization_url = <None>
+ 
 # Company of contact person. (string value)
-#idp_contact_company=<None>
-
+#idp_contact_company = <None>
+ 
 # Given name of contact person (string value)
-#idp_contact_name=<None>
-
+#idp_contact_name = <None>
+ 
 # Surname of contact person. (string value)
-#idp_contact_surname=<None>
-
+#idp_contact_surname = <None>
+ 
 # Email address of contact person. (string value)
-#idp_contact_email=<None>
-
+#idp_contact_email = <None>
+ 
 # Telephone number of contact person. (string value)
-#idp_contact_telephone=<None>
-
-# Contact type. Allowed values are: technical, support,
-# administrative billing, and other (string value)
-#idp_contact_type=other
-
-# Path to the Identity Provider Metadata file. This file
-# should be generated with the keystone-manage
-# saml_idp_metadata command. (string value)
-#idp_metadata_path=/etc/keystone/saml2_idp_metadata.xml
-
-
+#idp_contact_telephone = <None>
+ 
+# Contact type. Allowed values are: technical, support, administrative billing,
+# and other (string value)
+#idp_contact_type = other
+ 
+# Path to the Identity Provider Metadata file. This file should be generated
+# with the keystone-manage saml_idp_metadata command. (string value)
+#idp_metadata_path = /etc/keystone/saml2_idp_metadata.xml
+ 
+# The prefix to use for the RelayState SAML attribute, used when generating ECP
+# wrapped assertions. (string value)
+#relay_state_prefix = ss:mem:
+ 
+ 
 [signing]
-
+ 
 #
-# Options defined in keystone
+# From keystone
 #
-
-# Deprecated in favor of provider in the [token] section.
-# (string value)
-#token_format=<None>
-
-# Path of the certfile for token signing. For non-production
-# environments, you may be interested in using `keystone-
-# manage pki_setup` to generate self-signed certificates.
-# (string value)
-#certfile=/etc/keystone/ssl/certs/signing_cert.pem
-
+ 
+# Path of the certfile for token signing. For non-production environments, you
+# may be interested in using `keystone-manage pki_setup` to generate self-
+# signed certificates. (string value)
+#certfile = /etc/keystone/ssl/certs/signing_cert.pem
+ 
 # Path of the keyfile for token signing. (string value)
-#keyfile=/etc/keystone/ssl/private/signing_key.pem
-
+#keyfile = /etc/keystone/ssl/private/signing_key.pem
+ 
 # Path of the CA for token signing. (string value)
-#ca_certs=/etc/keystone/ssl/certs/ca.pem
-
+#ca_certs = /etc/keystone/ssl/certs/ca.pem
+ 
 # Path of the CA key for token signing. (string value)
-#ca_key=/etc/keystone/ssl/private/cakey.pem
-
-# Key size (in bits) for token signing cert (auto generated
-# certificate). (integer value)
-#key_size=2048
-
-# Days the token signing cert is valid for (auto generated
-# certificate). (integer value)
-#valid_days=3650
-
-# Certificate subject (auto generated certificate) for token
-# signing. (string value)
-#cert_subject=/C=US/ST=Unset/L=Unset/O=Unset/CN=www.example.com
-
-
+#ca_key = /etc/keystone/ssl/private/cakey.pem
+ 
+# Key size (in bits) for token signing cert (auto generated certificate).
+# (integer value)
+#key_size = 2048
+ 
+# Days the token signing cert is valid for (auto generated certificate).
+# (integer value)
+#valid_days = 3650
+ 
+# Certificate subject (auto generated certificate) for token signing. (string
+# value)
+#cert_subject = /C=US/ST=Unset/L=Unset/O=Unset/CN=www.example.com
+ 
+ 
 [ssl]
-
-#
-# Options defined in keystone
+ 
 #
-
-# Toggle for SSL support on the Keystone eventlet servers.
-# (boolean value)
-#enable=false
-
-# Path of the certfile for SSL. For non-production
-# environments, you may be interested in using `keystone-
-# manage ssl_setup` to generate self-signed certificates.
-# (string value)
-#certfile=/etc/keystone/ssl/certs/keystone.pem
-
-# Path of the keyfile for SSL. (string value)
-#keyfile=/etc/keystone/ssl/private/keystonekey.pem
-
-# Path of the ca cert file for SSL. (string value)
-#ca_certs=/etc/keystone/ssl/certs/ca.pem
-
+# From keystone
+#
+ 
 # Path of the CA key file for SSL. (string value)
-#ca_key=/etc/keystone/ssl/private/cakey.pem
-
-# Require client certificate. (boolean value)
-#cert_required=false
-
-# SSL key length (in bits) (auto generated certificate).
+#ca_key = /etc/keystone/ssl/private/cakey.pem
+ 
+# SSL key length (in bits) (auto generated certificate). (integer value)
+#key_size = 1024
+ 
+# Days the certificate is valid for once signed (auto generated certificate).
 # (integer value)
-#key_size=1024
-
-# Days the certificate is valid for once signed (auto
-# generated certificate). (integer value)
-#valid_days=3650
-
-# SSL certificate subject (auto generated certificate).
-# (string value)
-#cert_subject=/C=US/ST=Unset/L=Unset/O=Unset/CN=localhost
-
-
-[stats]
-
+#valid_days = 3650
+ 
+# SSL certificate subject (auto generated certificate). (string value)
+#cert_subject = /C=US/ST=Unset/L=Unset/O=Unset/CN=localhost
+ 
+ 
+[token]
+ 
 #
-# Options defined in keystone
-#
-
-# Stats backend driver. (string value)
-#driver=keystone.contrib.stats.backends.kvs.Stats
-
-
-[token]
-
+# From keystone
 #
-# Options defined in keystone
-#
-
-# External auth mechanisms that should add bind information to
-# token, e.g., kerberos,x509. (list value)
-#bind=
-
-# Enforcement policy on tokens presented to Keystone with bind
-# information. One of disabled, permissive, strict, required
-# or a specifically required bind mode, e.g., kerberos or x509
-# to require binding to that authentication. (string value)
-#enforce_token_bind=permissive
-
-# Amount of time a token should remain valid (in seconds).
-# (integer value)
-#expiration=3600
-
-# Controls the token construction, validation, and revocation
-# operations. Core providers are
-# "keystone.token.providers.[pkiz|pki|uuid].Provider". The
-# default provider is uuid. (string value)
-#provider=<None>
-
+ 
+# External auth mechanisms that should add bind information to token, e.g.,
+# kerberos,x509. (list value)
+#bind =
+ 
+# Enforcement policy on tokens presented to Keystone with bind information. One
+# of disabled, permissive, strict, required or a specifically required bind
+# mode, e.g., kerberos or x509 to require binding to that authentication.
+# (string value)
+#enforce_token_bind = permissive
+ 
+# Amount of time a token should remain valid (in seconds). (integer value)
+#expiration = 3600
+ 
+# Controls the token construction, validation, and revocation operations. Core
+# providers are "keystone.token.providers.[fernet|pkiz|pki|uuid].Provider".
+# (string value)
+#provider = keystone.token.providers.uuid.Provider
+ 
 # Token persistence backend driver. (string value)
-#driver=keystone.token.persistence.backends.sql.Token
-
-# Toggle for token system caching. This has no effect unless
-# global caching is enabled. (boolean value)
-#caching=true
-
-# Time to cache the revocation list and the revocation events
-# if revoke extension is enabled (in seconds). This has no
-# effect unless global and token caching are enabled. (integer
-# value)
-#revocation_cache_time=3600
-
-# Time to cache tokens (in seconds). This has no effect unless
-# global and token caching are enabled. (integer value)
-#cache_time=<None>
-
-# Revoke token by token identifier. Setting revoke_by_id to
-# true enables various forms of enumerating tokens, e.g. `list
-# tokens for user`. These enumerations are processed to
-# determine the list of tokens to revoke. Only disable if you
-# are switching to using the Revoke extension with a backend
-# other than KVS, which stores events in memory. (boolean
+#driver = keystone.token.persistence.backends.sql.Token
+ 
+# Toggle for token system caching. This has no effect unless global caching is
+# enabled. (boolean value)
+#caching = true
+ 
+# Time to cache tokens (in seconds). This has no effect unless global and token
+# caching are enabled. (integer value)
+#cache_time = <None>
+ 
+# Revoke token by token identifier. Setting revoke_by_id to true enables
+# various forms of enumerating tokens, e.g. `list tokens for user`. These
+# enumerations are processed to determine the list of tokens to revoke. Only
+# disable if you are switching to using the Revoke extension with a backend
+# other than KVS, which stores events in memory. (boolean value)
+#revoke_by_id = true
+ 
+# Allow rescoping of scoped token. Setting allow_rescoped_scoped_token to false
+# prevents a user from exchanging a scoped token for any other token. (boolean
 # value)
-#revoke_by_id=true
-
-# The hash algorithm to use for PKI tokens. This can be set to
-# any algorithm that hashlib supports. WARNING: Before
-# changing this value, the auth_token middleware must be
-# configured with the hash_algorithms, otherwise token
+#allow_rescope_scoped_token = true
+ 
+# The hash algorithm to use for PKI tokens. This can be set to any algorithm
+# that hashlib supports. WARNING: Before changing this value, the auth_token
+# middleware must be configured with the hash_algorithms, otherwise token
 # revocation will not be processed correctly. (string value)
-#hash_algorithm=md5
-
-
+#hash_algorithm = md5
+ 
+ 
 [trust]
-
+ 
 #
-# Options defined in keystone
+# From keystone
 #
-
-# Delegation and impersonation features can be optionally
-# disabled. (boolean value)
-#enabled=true
-
+ 
+# Delegation and impersonation features can be optionally disabled. (boolean
+# value)
+#enabled = true
+ 
+# Enable redelegation feature. (boolean value)
+#allow_redelegation = false
+ 
+# Maximum depth of trust redelegation. (integer value)
+#max_redelegation_count = 3
+ 
 # Trust backend driver. (string value)
-#driver=keystone.trust.backends.sql.Trust
-
-
+#driver = keystone.trust.backends.sql.Trust
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/keystone/files/keystone.stencil	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,106 @@
+;
+;TLS macro for vhost blocks
+;
+$%define TLS {$%{config/use_tls:?
+    SSLEngine On
+
+    # Disable the known insecure SSLv3 protocol
+    SSLProtocol all -SSLv3
+
+    SSLCertificateFile $%{config/ssl_cert_file}
+    $%{config/ssl_ca_cert_file:^*SSLCACertificateFile }
+    SSLCertificateKeyFile $%{config/ssl_cert_key_file}
+}}
+;
+;vhost macro
+;
+$%define VHOST type port name {
+<VirtualHost *:$%port>
+$%[TLS]
+    WSGIDaemonProcess keystone-$%type processes=5 threads=1 user=keystone group=keystone display-name=%\{GROUP\}
+    WSGIScriptAlias / /usr/lib/python2.7/vendor-packages/keystone/httpd/$%name
+    WSGIProcessGroup keystone-$%type
+    WSGIApplicationGroup %\{GLOBAL\}
+    WSGIPassAuthorization On
+
+</VirtualHost>
+}
+;
+; Start of conf file stencil
+;
+# WARNING: THIS FILE GENERATED FROM SMF DATA.
+#     DO NOT EDIT THIS FILE.  EDITS WILL BE LOST.
+#
+
+ServerRoot "/usr/apache2/2.4"
+
+LoadModule authn_file_module libexec/mod_authn_file.so
+LoadModule authn_core_module libexec/mod_authn_core.so
+LoadModule authz_host_module libexec/mod_authz_host.so
+LoadModule authz_groupfile_module libexec/mod_authz_groupfile.so
+LoadModule authz_user_module libexec/mod_authz_user.so
+LoadModule authz_core_module libexec/mod_authz_core.so
+LoadModule access_compat_module libexec/mod_access_compat.so
+LoadModule auth_basic_module libexec/mod_auth_basic.so
+LoadModule reqtimeout_module libexec/mod_reqtimeout.so
+LoadModule filter_module libexec/mod_filter.so
+LoadModule log_config_module libexec/mod_log_config.so
+LoadModule env_module libexec/mod_env.so
+LoadModule headers_module libexec/mod_headers.so
+LoadModule version_module libexec/mod_version.so
+LoadModule slotmem_shm_module libexec/mod_slotmem_shm.so
+<IfDefine prefork>
+    LoadModule mpm_prefork_module libexec/mod_mpm_prefork.so
+</IfDefine>
+<IfDefine worker>
+    LoadModule mpm_worker_module libexec/mod_mpm_worker.so
+</IfDefine>
+<IfDefine !prefork>
+    <IfDefine !worker>
+        LoadModule mpm_event_module libexec/mod_mpm_event.so
+    </IfDefine>
+</IfDefine>
+LoadModule unixd_module libexec/mod_unixd.so
+LoadModule status_module libexec/mod_status.so
+LoadModule alias_module libexec/mod_alias.so
+LoadModule wsgi_module libexec/mod_wsgi-2.7.so
+$%{config/use_tls:?
+LoadModule ssl_module libexec\/mod_ssl.so
+}
+
+<IfModule unixd_module>
+    User keystone
+    Group keystone
+</IfModule>
+
+PidFile /var/lib/keystone/keystone.httpd.pid
+
+ServerName 127.0.0.1
+Listen $%{config/public_port}
+Listen $%{config/admin_port}
+
+<Directory />
+    AllowOverride none
+    Require all denied
+</Directory>
+
+ErrorLogFormat "%{cu}t %M"
+ErrorLog "$%{config/error_log}"
+LogLevel warn
+
+<IfModule log_config_module>
+    LogFormat "%h %u %t \\"%r\\" %p %>s %b \\"%{Referer}i\\" \\"%{User-Agent}i\\"" combined
+</IfModule>
+
+CustomLog $%{config/access_log} combined
+
+<Directory /usr/lib/python2.7/vendor-packages/keystone/httpd>
+    Options Indexes FollowSymLinks MultiViews
+    AllowOverride None
+    Require all granted
+</Directory>
+
+WSGISocketPrefix /var/run/keystone_wsgi_
+
+$%[VHOST public $%{config/public_port} main]
+$%[VHOST admin $%{config/admin_port} admin]
--- a/components/openstack/keystone/files/keystone.xml	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/keystone/files/keystone.xml	Fri Feb 05 17:54:17 2016 -0500
@@ -53,14 +53,31 @@
 
     <logfile_attributes permissions='600'/>
 
-    <exec_method timeout_seconds="600" type="method" name="start"
+    <exec_method timeout_seconds="60" type="method" name="start"
+      exec="/lib/svc/method/keystone %m">
+      <method_context>
+        <method_credential user='keystone' group='keystone'
+          privileges='basic,{zone}:/system/volatile/keystone_wsgi_*'/>
+      </method_context>
+    </exec_method>
+
+    <exec_method timeout_seconds="60" type="method" name="stop"
+      exec="/lib/svc/method/keystone %m">
+      <method_context>
+        <method_credential user='keystone' group='keystone'/>
+      </method_context>
+    </exec_method>
+
+    <exec_method timeout_seconds="60" type="method" name="restart"
       exec="/lib/svc/method/keystone %m">
       <method_context>
         <method_credential user='keystone' group='keystone' />
       </method_context>
     </exec_method>
-    <exec_method timeout_seconds="60" type="method" name="stop"
-      exec=":kill"/>
+
+    <property_group type="framework" name="startd">
+      <propval type="astring" name="ignore_error" value="core,signal"/>
+    </property_group>
 
     <instance name='default' enabled='false'>
       <!-- to start/stop/refresh the service -->
@@ -70,6 +87,25 @@
         <propval name='value_authorization' type='astring'
                  value='solaris.smf.value.keystone' />
       </property_group>
+
+      <property_group name='keystone_stencil' type='configfile'>
+        <propval name='path' type='astring'
+          value='/var/lib/keystone/keystone.httpd.conf'/>
+        <propval name='stencil' type='astring' value='keystone.stencil'/>
+        <propval name='mode' type='astring' value='0444'/>
+        <propval name='owner' type='astring' value='keystone'/>
+        <propval name='group' type='astring' value='keystone'/>
+      </property_group>
+
+      <property_group name='config' type='application'>
+        <propval name='admin_port' type='count' value='35357'/>
+        <propval name='access_log' type='astring'
+          value='/var/log/keystone/keystone_access.log'/>
+        <propval name='error_log' type='astring'
+          value='/var/log/keystone/keystone_error.log'/>
+        <propval name='public_port' type='count' value='5000'/>
+        <propval name='use_tls' type='boolean' value='false'/>
+      </property_group>
     </instance>
 
     <template>
@@ -85,6 +121,75 @@
           services for OpenStack.
         </loctext>
       </description>
+
+      <pg_pattern required='true' type='application' name='config'>
+        <prop_pattern required='true' type='count' name='admin_port'>
+          <description>
+            <loctext xml:lang='C'>
+              The port for admin requests.  Default value is 35357.
+            </loctext>
+          </description>
+        </prop_pattern>
+
+        <prop_pattern required='true' type='astring' name='access_log'>
+          <description>
+            <loctext xml:lang='C'>
+              The absolute path for the Apache access log file.  Defaults to
+              /var/log/keystone/keystone_access.log
+            </loctext>
+          </description>
+        </prop_pattern>
+
+        <prop_pattern required='true' type='astring' name='error_log'>
+          <description>
+            <loctext xml:lang='C'>
+              The absolute path for the Apache error log file.  Defaults to
+              /var/log/keystone/keystone_error.log
+            </loctext>
+          </description>
+        </prop_pattern>
+
+        <prop_pattern required='true' type='count' name='public_port'>
+          <description>
+            <loctext xml:lang='C'>
+              The port for public requests.  Default value is 5000.
+            </loctext>
+          </description>
+        </prop_pattern>
+
+        <prop_pattern required='false' type='astring' name='ssl_cert_file'>
+          <description>
+            <loctext xml:lang='C'>
+              Server PEM-encoded X.509 Certificate file.
+            </loctext>
+          </description>
+        </prop_pattern>
+
+        <prop_pattern required='false' type='astring' name='ssl_ca_cert_file'>
+          <description>
+            <loctext xml:lang='C'>
+              File of concatenated PEM-encoded CA Certificates for Client Auth.
+            </loctext>
+          </description>
+        </prop_pattern>
+
+        <prop_pattern required='false' type='astring' name='ssl_cert_key_file'>
+          <description>
+            <loctext xml:lang='C'>
+              Server PEM-encoded Private Key file.
+            </loctext>
+          </description>
+        </prop_pattern>
+
+        <prop_pattern required='true' type='boolean' name='use_tls'>
+          <description>
+            <loctext xml:lang='C'>
+              Boolean property to indicate usage of TLS.  Defaults to 'false'.
+            </loctext>
+          </description>
+        </prop_pattern>
+
+      </pg_pattern>
     </template>
   </service>
 
--- a/components/openstack/keystone/keystone.license	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/keystone/keystone.license	Fri Feb 05 17:54:17 2016 -0500
@@ -209,3 +209,45 @@
    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.
+
+============================================================
+
+# Copyright (c) 2013, Nebula, Inc.
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+#
+# Colorizer Code is borrowed from Twisted:
+# Copyright (c) 2001-2010 Twisted Matrix Laboratories.
+#
+#    Permission is hereby granted, free of charge, to any person obtaining
+#    a copy of this software and associated documentation files (the
+#    "Software"), to deal in the Software without restriction, including
+#    without limitation the rights to use, copy, modify, merge, publish,
+#    distribute, sublicense, and/or sell copies of the Software, and to
+#    permit persons to whom the Software is furnished to do so, subject to
+#    the following conditions:
+#
+#    The above copyright notice and this permission notice shall be
+#    included in all copies or substantial portions of the Software.
+#
+#    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+#    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+#    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+#    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+#    LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+#    OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+#    WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+============================================================
--- a/components/openstack/keystone/keystone.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/keystone/keystone.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,7 @@
 #
 
 #
-# Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 set name=pkg.fmri \
@@ -28,7 +28,7 @@
 set name=pkg.summary value="OpenStack Keystone (Identity Service)"
 set name=pkg.description \
     value="OpenStack Keystone is a service that provides Identity, Token, Catalog, and Policy services for use specifically by projects in the OpenStack family."
-set name=pkg.human-version value="Juno $(COMPONENT_VERSION)"
+set name=pkg.human-version value="Kilo $(COMPONENT_VERSION)"
 set name=com.oracle.info.description \
     value="Keystone, the OpenStack identity service"
 set name=com.oracle.info.tpno value=$(TPNO)
@@ -42,7 +42,7 @@
 set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
 set name=openstack.upgrade-id reboot-needed=true value=$(COMPONENT_BE_VERSION)
 set name=org.opensolaris.arc-caseid value=PSARC/2013/350 value=PSARC/2014/048 \
-    value=PSARC/2014/209 value=PSARC/2015/110
+    value=PSARC/2014/209 value=PSARC/2015/110 value=PSARC/2015/535
 set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
 #
 dir  path=etc/keystone owner=keystone group=keystone mode=0700
@@ -70,6 +70,7 @@
 file path=lib/svc/manifest/application/openstack/keystone.xml
 file files/keystone path=lib/svc/method/keystone
 file files/keystone-upgrade path=lib/svc/method/keystone-upgrade
+file files/keystone.stencil path=lib/svc/stencils/keystone.stencil
 file path=usr/bin/keystone-manage
 file tools/sample_data.sh path=usr/demo/openstack/keystone/sample_data.sh \
     mode=0555
@@ -85,17 +86,20 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/assignment/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/assignment/backends/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/assignment/backends/kvs.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/assignment/backends/ldap.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/assignment/backends/sql.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/assignment/controllers.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/assignment/core.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/assignment/role_backends/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/assignment/role_backends/ldap.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/assignment/role_backends/sql.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/assignment/routers.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/assignment/schema.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/auth/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/auth/controllers.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/auth/core.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/auth/plugins/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/auth/plugins/core.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/auth/plugins/external.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/auth/plugins/mapped.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/auth/plugins/oauth1.py
@@ -146,24 +150,13 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/openssl.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/pemutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/router.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/serializer.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/core.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/README
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/manage.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/migrate.cfg
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/034_havana.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/035_add_compound_revoked_token_index.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/036_token_drop_valid_index.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/037_add_region_table.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/038_add_assignment_table.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/039_grant_to_assignment.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/040_drop_grant_tables.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/041_add_remaining_uses_count_to_trusts.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/042_endpoint_enabled.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/043_fixup_region_description.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/044_service_enabled.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/044_icehouse.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/045_placeholder.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/046_placeholder.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/047_placeholder.py
@@ -175,6 +168,18 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/053_endpoint_to_region_association.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/054_add_actor_id_index.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/055_add_indexes_to_token_table.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/056_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/057_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/058_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/059_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/060_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/061_add_parent_project.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/062_drop_assignment_role_fk.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/063_drop_region_auth_url.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/064_drop_user_and_group_fk.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/065_add_domain_config.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/066_fixup_service_name_value.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/067_drop_redundant_mysql_index.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migrate_repo/versions/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/sql/migration_helpers.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/utils.py
@@ -184,8 +189,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/common/wsgi.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/config.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/access/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/access/core.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/admin_crud/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/admin_crud/core.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/ec2/__init__.py
@@ -204,6 +207,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/endpoint_filter/migrate_repo/versions/002_add_endpoint_groups.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/endpoint_filter/migrate_repo/versions/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/endpoint_filter/routers.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/endpoint_filter/schema.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/endpoint_policy/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/endpoint_policy/backends/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/endpoint_policy/backends/sql.py
@@ -234,6 +238,11 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/federation/migrate_repo/versions/001_add_identity_provider_table.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/federation/migrate_repo/versions/002_add_mapping_tables.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/federation/migrate_repo/versions/003_mapping_id_nullable_false.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/federation/migrate_repo/versions/004_add_remote_id_column.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/federation/migrate_repo/versions/005_add_service_provider_table.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/federation/migrate_repo/versions/006_fixup_service_provider_attributes.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/federation/migrate_repo/versions/007_add_remote_id_table.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/federation/migrate_repo/versions/008_add_relay_state_to_sp.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/federation/migrate_repo/versions/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/federation/routers.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/federation/schema.py
@@ -272,10 +281,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/simple_cert/controllers.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/simple_cert/core.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/simple_cert/routers.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/stats/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/stats/backends/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/stats/backends/kvs.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/stats/core.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/user_crud/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/contrib/user_crud/core.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/controllers.py
@@ -289,10 +294,14 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/exception.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/hacking/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/hacking/checks.py
+link path=usr/lib/python$(PYVER)/vendor-packages/keystone/httpd/admin \
+    target=keystone.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/httpd/keystone.py
+link path=usr/lib/python$(PYVER)/vendor-packages/keystone/httpd/main \
+    target=keystone.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/i18n.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/identity/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/identity/backends/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/identity/backends/kvs.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/identity/backends/ldap.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/identity/backends/sql.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/identity/controllers.py
@@ -304,6 +313,28 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/identity/mapping_backends/mapping.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/identity/mapping_backends/sql.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/identity/routers.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/locale/de/LC_MESSAGES/keystone-log-critical.po
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/locale/en_AU/LC_MESSAGES/keystone-log-critical.po
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/locale/es/LC_MESSAGES/keystone-log-critical.po
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/locale/fr/LC_MESSAGES/keystone-log-critical.po
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/locale/fr/LC_MESSAGES/keystone-log-error.po
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/locale/fr/LC_MESSAGES/keystone-log-info.po
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/locale/hu/LC_MESSAGES/keystone-log-critical.po
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/locale/it/LC_MESSAGES/keystone-log-critical.po
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/locale/ja/LC_MESSAGES/keystone-log-critical.po
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/locale/keystone-log-critical.pot
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/locale/keystone-log-error.pot
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/locale/keystone-log-info.pot
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/locale/keystone-log-warning.pot
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/locale/keystone.pot
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/locale/ko_KR/LC_MESSAGES/keystone-log-critical.po
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/locale/pl_PL/LC_MESSAGES/keystone-log-critical.po
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/locale/pt_BR/LC_MESSAGES/keystone-log-critical.po
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/locale/ru/LC_MESSAGES/keystone-log-critical.po
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/locale/zh_CN/LC_MESSAGES/keystone-log-critical.po
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/locale/zh_CN/LC_MESSAGES/keystone-log-error.po
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/locale/zh_CN/LC_MESSAGES/keystone-log-info.po
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/locale/zh_TW/LC_MESSAGES/keystone-log-critical.po
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/middleware/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/middleware/core.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/middleware/ec2_token.py
@@ -313,24 +344,13 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/openstack/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/openstack/common/README
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/openstack/common/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/openstack/common/config/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/openstack/common/config/generator.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/openstack/common/_i18n.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/openstack/common/eventlet_backdoor.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/openstack/common/excutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/openstack/common/fileutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/openstack/common/gettextutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/openstack/common/importutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/openstack/common/jsonutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/openstack/common/local.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/openstack/common/log.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/openstack/common/loopingcall.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/openstack/common/policy.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/openstack/common/processutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/openstack/common/service.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/openstack/common/strutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/openstack/common/systemd.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/openstack/common/threadgroup.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/openstack/common/timeutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/openstack/common/versionutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/policy/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/policy/backends/__init__.py
@@ -340,15 +360,24 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/policy/core.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/policy/routers.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/policy/schema.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/resource/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/resource/backends/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/resource/backends/ldap.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/resource/backends/sql.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/resource/config_backends/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/resource/config_backends/sql.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/resource/controllers.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/resource/core.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/resource/routers.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/resource/schema.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/routers.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/server/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/server/common.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/server/eventlet.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/server/wsgi.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/service.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/token/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/token/backends/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/token/backends/kvs.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/token/backends/memcache.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/token/backends/sql.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/token/controllers.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/token/core.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/token/persistence/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/token/persistence/backends/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/token/persistence/backends/kvs.py
@@ -359,13 +388,16 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/token/provider.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/token/providers/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/token/providers/common.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/token/providers/fernet/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/token/providers/fernet/core.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/token/providers/fernet/token_formatters.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystone/token/providers/fernet/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/token/providers/pki.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/token/providers/pkiz.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/token/providers/uuid.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/token/routers.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/trust/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/trust/backends/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystone/trust/backends/kvs.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/trust/backends/sql.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/trust/controllers.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystone/trust/core.py
@@ -380,23 +412,14 @@
 #
 license keystone.license license="Apache v2.0"
 
-# force a group dependency on the optional anyjson; pkgdepend work is needed to
-# flush this out.
-depend type=group fmri=library/python/anyjson-$(PYV)
-
-# force a group dependency on the optional netaddr; pkgdepend work is needed to
-# flush this out.
-depend type=group fmri=library/python/netaddr-$(PYV)
-
-# force a group dependency on the optional simplejson; pkgdepend work is needed
-# to flush this out.
-depend type=group fmri=library/python/simplejson-$(PYV)
+# To upgrade to Kilo version, Juno version of the package must be on the system
+depend type=origin fmri=pkg:/cloud/openstack/[email protected] root-image=true
 
 # force a dependency on package delivering openssl(1OPENSSL)
 depend type=require fmri=__TBD pkg.debug.depend.file=usr/bin/openssl
 
-# force a dependency on babel; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/babel-$(PYV)
+# force a dependency on cryptography; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/cryptography-$(PYV)
 
 # force a dependency on dogpile.cache; pkgdepend work is needed to flush this
 # out.
@@ -432,19 +455,40 @@
 # force a dependency on lxml; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/lxml-$(PYV)
 
+# force a dependency on msgpack; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/msgpack-$(PYV)
+
 # force a dependency on oauthlib; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/oauthlib-$(PYV)
 
+# force a dependency on the openstackclient module
+depend type=require fmri=library/python/openstackclient-$(PYV)
+
+# force a dependency on oslo.concurrency; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/oslo.concurrency-$(PYV)
+
 # force a dependency on oslo.db; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/oslo.db-$(PYV)
 
 # 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.serialization; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/oslo.serialization-$(PYV)
+
 # force a dependency on oslo.utils; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/oslo.utils-$(PYV)
 
@@ -455,8 +499,11 @@
 # out.
 depend type=require fmri=library/python/paste.deploy-$(PYV)
 
+# force a dependency on pbr; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/pbr-$(PYV)
+
 # force a dependency on pycadf; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/pycadf-$(PYV)
+depend type=require fmri=library/python/pycadf-$(PYV)@0.8.0,$(BUILD_VERSION)
 
 # force a dependency on python-ldap; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/python-ldap-$(PYV)
@@ -479,3 +526,11 @@
 
 # force a dependency on webob; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/webob-$(PYV)
+# force a dependency on the Apache web server
+depend type=require fmri=web/server/apache-24
+
+# force a dependency on the mod_ssl module
+depend type=require fmri=web/server/apache-24/module/apache-ssl
+
+# force a dependency on the mod_wsgi module
+depend type=require fmri=web/server/apache-24/module/apache-wsgi-$(PYV)
--- a/components/openstack/keystone/patches/CVE-2015-3646.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-Errata patch for CVE-2015-3646
-https://review.openstack.org/173034
-git fetch https://review.openstack.org/openstack/keystone refs/changes/34/173034/2 && git checkout FETCH_HEAD
-Fixed upstream and in a future release.
----
-From 695153a523faa9310e2e20d0333c33a47334208a Mon Sep 17 00:00:00 2001
-From: Eric Brown <[email protected]>
-Date: Mon, 13 Apr 2015 11:37:53 -0700
-Subject: [PATCH] backend_argument should be marked secret
-
-Since the backend_argument can potentially contain a password,
-it should be marked secret to avoid leakage into the logs.
-
-Closes-Bug: #1443598
-
-Change-Id: I55663db4cf2df84a66de8f64fba4b4f129ae827d
-(cherry picked from commit f9db1a65bd4d83d12c572ba4d5807845996ef410)
----
- keystone/common/config.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/keystone/common/config.py b/keystone/common/config.py
-index d7f9dd8..d953e49 100644
---- a/keystone/common/config.py
-+++ b/keystone/common/config.py
-@@ -313,7 +313,7 @@ FILE_OPTIONS = {
-                         'deployments.  Small workloads (single process) '
-                         'like devstack can use the dogpile.cache.memory '
-                         'backend.'),
--        cfg.MultiStrOpt('backend_argument', default=[],
-+        cfg.MultiStrOpt('backend_argument', default=[], secret=True,
-                         help='Arguments supplied to the backend module. '
-                              'Specify this option once per argument to be '
-                              'passed to the dogpile.cache backend. Example '
--- 
-1.9.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/keystone/patches/CVE-2015-7546.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,195 @@
+From 9c9c1331e0c004897d5f4c5847f7143b56373f10 Mon Sep 17 00:00:00 2001
+From: Brant Knudson <[email protected]>
+Date: Tue, 1 Dec 2015 11:09:14 -0600
+Subject: [PATCH] Add audit IDs to revocation events
+
+The revoked tokens' audit ID is now included in the data returned in
+the revocation list.
+
+Closes-Bug: 1490804
+Change-Id: Ifcf88f1158bebddc4f927121fbf4136fb53b659f
+(cherry picked from commit d5378f173da14a34ca010271477337879002d6d0)
+Conflicts:
+	keystone/tests/unit/test_backend.py
+---
+ keystone/tests/unit/test_backend.py        | 39 ++++++++++++++++++++----------
+ keystone/tests/unit/test_backend_sql.py    |  3 ++-
+ keystone/token/persistence/backends/kvs.py |  9 +++++++
+ keystone/token/persistence/backends/sql.py | 12 ++++++++-
+ 4 files changed, 48 insertions(+), 15 deletions(-)
+
+diff --git a/keystone/tests/unit/test_backend.py b/keystone/tests/unit/test_backend.py
+index 6cf0649..9c82502 100644
+--- a/keystone/tests/unit/test_backend.py
++++ b/keystone/tests/unit/test_backend.py
+@@ -3778,7 +3778,9 @@ class TokenTests(object):
+         token_id = self._create_token_id()
+         data = {'id': token_id, 'a': 'b',
+                 'trust_id': None,
+-                'user': {'id': 'testuserid'}}
++                'user': {'id': 'testuserid'},
++                'token_data': {'access': {'token': {
++                    'audit_ids': [uuid.uuid4().hex]}}}}
+         data_ref = self.token_provider_api._persistence.create_token(token_id,
+                                                                      data)
+         expires = data_ref.pop('expires')
+@@ -3813,7 +3815,8 @@ class TokenTests(object):
+         # FIXME(morganfainberg): These tokens look nothing like "Real" tokens.
+         # This should be fixed when token issuance is cleaned up.
+         data = {'id': token_id, 'a': 'b',
+-                'user': {'id': user_id}}
++                'user': {'id': user_id},
++                'access': {'token': {'audit_ids': [uuid.uuid4().hex]}}}
+         if tenant_id is not None:
+             data['tenant'] = {'id': tenant_id, 'name': tenant_id}
+         if tenant_id is NULL_OBJECT:
+@@ -3822,7 +3825,7 @@ class TokenTests(object):
+             data['expires'] = expires
+         if trust_id is not None:
+             data['trust_id'] = trust_id
+-            data.setdefault('access', {}).setdefault('trust', {})
++            data['access'].setdefault('trust', {})
+             # Testuserid2 is used here since a trustee will be different in
+             # the cases of impersonation and therefore should not match the
+             # token's user_id.
+@@ -3988,17 +3991,21 @@ class TokenTests(object):
+ 
+         self.assertEqual(data_ref, new_data_ref)
+ 
+-    def check_list_revoked_tokens(self, token_ids):
+-        revoked_ids = [x['id']
+-                       for x in self.token_provider_api.list_revoked_tokens()]
++    def check_list_revoked_tokens(self, token_infos):
++        revocation_list = self.token_provider_api.list_revoked_tokens()
++        revoked_ids = [x['id'] for x in revocation_list]
++        revoked_audit_ids = [x['audit_id'] for x in revocation_list]
+         self._assert_revoked_token_list_matches_token_persistence(revoked_ids)
+-        for token_id in token_ids:
++        for token_id, audit_id in token_infos:
+             self.assertIn(token_id, revoked_ids)
++            self.assertIn(audit_id, revoked_audit_ids)
+ 
+     def delete_token(self):
+         token_id = uuid.uuid4().hex
++        audit_id = uuid.uuid4().hex
+         data = {'id_hash': token_id, 'id': token_id, 'a': 'b',
+-                'user': {'id': 'testuserid'}}
++                'user': {'id': 'testuserid'},
++                'token_data': {'token': {'audit_ids': [audit_id]}}}
+         data_ref = self.token_provider_api._persistence.create_token(token_id,
+                                                                      data)
+         self.token_provider_api._persistence.delete_token(token_id)
+@@ -4010,7 +4017,7 @@ class TokenTests(object):
+             exception.TokenNotFound,
+             self.token_provider_api._persistence.delete_token,
+             data_ref['id'])
+-        return token_id
++        return (token_id, audit_id)
+ 
+     def test_list_revoked_tokens_returns_empty_list(self):
+         revoked_ids = [x['id']
+@@ -4061,12 +4068,16 @@ class TokenTests(object):
+         token_data = {'id_hash': token_id, 'id': token_id, 'a': 'b',
+                       'expires': expire_time,
+                       'trust_id': None,
+-                      'user': {'id': 'testuserid'}}
++                      'user': {'id': 'testuserid'},
++                      'token_data': {'token': {
++                          'audit_ids': [uuid.uuid4().hex]}}}
+         token2_id = uuid.uuid4().hex
+         token2_data = {'id_hash': token2_id, 'id': token2_id, 'a': 'b',
+                        'expires': expire_time,
+                        'trust_id': None,
+-                       'user': {'id': 'testuserid'}}
++                       'user': {'id': 'testuserid'},
++                       'token_data': {'token': {
++                           'audit_ids': [uuid.uuid4().hex]}}}
+         # Create 2 Tokens.
+         self.token_provider_api._persistence.create_token(token_id,
+                                                           token_data)
+@@ -4101,7 +4112,8 @@ class TokenTests(object):
+     def _test_predictable_revoked_pki_token_id(self, hash_fn):
+         token_id = self._create_token_id()
+         token_id_hash = hash_fn(token_id).hexdigest()
+-        token = {'user': {'id': uuid.uuid4().hex}}
++        token = {'user': {'id': uuid.uuid4().hex},
++                 'token_data': {'token': {'audit_ids': [uuid.uuid4().hex]}}}
+ 
+         self.token_provider_api._persistence.create_token(token_id, token)
+         self.token_provider_api._persistence.delete_token(token_id)
+@@ -4123,7 +4135,8 @@ class TokenTests(object):
+ 
+     def test_predictable_revoked_uuid_token_id(self):
+         token_id = uuid.uuid4().hex
+-        token = {'user': {'id': uuid.uuid4().hex}}
++        token = {'user': {'id': uuid.uuid4().hex},
++                 'token_data': {'token': {'audit_ids': [uuid.uuid4().hex]}}}
+ 
+         self.token_provider_api._persistence.create_token(token_id, token)
+         self.token_provider_api._persistence.delete_token(token_id)
+diff --git a/keystone/tests/unit/test_backend_sql.py b/keystone/tests/unit/test_backend_sql.py
+index a7c63bf..7adc936 100644
+--- a/keystone/tests/unit/test_backend_sql.py
++++ b/keystone/tests/unit/test_backend_sql.py
+@@ -441,7 +441,8 @@ class SqlToken(SqlTests, test_backend.TokenTests):
+         # necessary.
+ 
+         expected_query_args = (token_sql.TokenModel.id,
+-                               token_sql.TokenModel.expires)
++                               token_sql.TokenModel.expires,
++                               token_sql.TokenModel.extra,)
+ 
+         with mock.patch.object(token_sql, 'sql') as mock_sql:
+             tok = token_sql.Token()
+diff --git a/keystone/token/persistence/backends/kvs.py b/keystone/token/persistence/backends/kvs.py
+index b4807bf..9a7ccea 100644
+--- a/keystone/token/persistence/backends/kvs.py
++++ b/keystone/token/persistence/backends/kvs.py
+@@ -211,6 +211,15 @@ class Token(token.persistence.Driver):
+                                                           subsecond=True)
+         revoked_token_data['id'] = data['id']
+ 
++        token_data = data['token_data']
++        if 'access' in token_data:
++            # It's a v2 token.
++            audit_ids = token_data['access']['token']['audit_ids']
++        else:
++            # It's a v3 token.
++            audit_ids = token_data['token']['audit_ids']
++        revoked_token_data['audit_id'] = audit_ids[0]
++
+         token_list = self._get_key_or_default(self.revocation_key, default=[])
+         if not isinstance(token_list, list):
+             # NOTE(morganfainberg): In the case that the revocation list is not
+diff --git a/keystone/token/persistence/backends/sql.py b/keystone/token/persistence/backends/sql.py
+index 08c3a21..7c5c11d 100644
+--- a/keystone/token/persistence/backends/sql.py
++++ b/keystone/token/persistence/backends/sql.py
+@@ -228,13 +228,23 @@ class Token(token.persistence.Driver):
+         session = sql.get_session()
+         tokens = []
+         now = timeutils.utcnow()
+-        query = session.query(TokenModel.id, TokenModel.expires)
++        query = session.query(TokenModel.id, TokenModel.expires,
++                              TokenModel.extra)
+         query = query.filter(TokenModel.expires > now)
+         token_references = query.filter_by(valid=False)
+         for token_ref in token_references:
++            token_data = token_ref[2]['token_data']
++            if 'access' in token_data:
++                # It's a v2 token.
++                audit_ids = token_data['access']['token']['audit_ids']
++            else:
++                # It's a v3 token.
++                audit_ids = token_data['token']['audit_ids']
++
+             record = {
+                 'id': token_ref[0],
+                 'expires': token_ref[1],
++                'audit_id': audit_ids[0],
+             }
+             tokens.append(record)
+         return tokens
+-- 
+1.9.1
+
--- a/components/openstack/keystone/patches/launchpad-1384775.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-commit 8bd0f6ecd882a3119acb5fd7a760122c8931db94
-Author: wanghong <[email protected]>
-Date:   Sat Oct 25 10:26:55 2014 +0800
-
-    default revoke driver should be the non-deprecated driver
-    
-    Have checked other config options that default is not the deprecated
-    option, others are OK.
-    
-    Change-Id: Ie6e7351114d79eb25b392faaa0e6376c24c45fa0
-    Closes-Bug: #1384775
-
---- keystone-2014.2.2/etc/keystone.conf.sample.~1~	2014-12-04 21:03:56.000000000 -0800
-+++ keystone-2014.2.2/etc/keystone.conf.sample	2015-01-25 17:25:46.677132074 -0800
-@@ -1332,7 +1332,7 @@
- 
- # An implementation of the backend for persisting revocation
- # events. (string value)
--#driver=keystone.contrib.revoke.backends.kvs.Revoke
-+#driver=keystone.contrib.revoke.backends.sql.Revoke
- 
- # This value (calculated in seconds) is added to token
- # expiration before a revocation event may be removed from the
---- keystone-2014.2.2/keystone/common/config.py.~1~	2014-12-04 21:03:56.000000000 -0800
-+++ keystone-2014.2.2/keystone/common/config.py	2015-01-25 17:25:46.677474875 -0800
-@@ -275,7 +275,7 @@ FILE_OPTIONS = {
-     ],
-     'revoke': [
-         cfg.StrOpt('driver',
--                   default='keystone.contrib.revoke.backends.kvs.Revoke',
-+                   default='keystone.contrib.revoke.backends.sql.Revoke',
-                    help='An implementation of the backend for persisting '
-                         'revocation events.'),
-         cfg.IntOpt('expiration_buffer', default=1800,
--- a/components/openstack/keystone/patches/launchpad-1404354.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-commit 600c236e2111a770e478040a8a78bb62ef27ac39
-Author: Brant Knudson <[email protected]>
-Date:   Fri Dec 19 14:11:00 2014 -0600
-
-    Fix to not use empty IN clause
-    
-    When an empty IN clause is used with sqlalchemy, a warning is
-    printed:
-    
-     SAWarning: The IN-predicate on "assignment.actor_id" was invoked
-     with an empty sequence. ...
-    
-    With this fix, these warnings should no longer be printed.
-    
-    The tests are changed to convert these warnings into errors.
-    
-    Change-Id: I58c7e5f11fdac9bbc1e9a970ce690ea113e2bd95
-    Closes-Bug: #1404354
-
---- keystone-2014.2.2/keystone/assignment/backends/sql.py.orig	2014-12-04 21:03:56.000000000 -0800
-+++ keystone-2014.2.2/keystone/assignment/backends/sql.py	2015-01-25 20:44:40.377007906 -0800
-@@ -356,6 +356,10 @@ class Assignment(keystone_assignment.Dri
-
-     def _get_group_project_roles(self, session, groups, project_id,
-                                  project_domain_id):
-+        if not groups:
-+            # If there's no groups then there will be no project roles.
-+            return []
-+
-         sql_constraints = sqlalchemy.and_(
-             RoleAssignment.type == AssignmentType.GROUP_PROJECT,
-             RoleAssignment.target_id == project_id)
--- a/components/openstack/keystone/patches/requirements.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/keystone/patches/requirements.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,56 +1,40 @@
 In-house patch to remove unnecessary dependencies from Keystone's
 requirements files. The specific reasons are as follows:
 
-oslo.serialization	Not applicable
-
 paste			Not applicable
 
 posix_ipc		Not applicable
 
---- keystone-2014.2.2/keystone.egg-info/requires.txt.~1~	2015-02-05 06:56:18.000000000 -0800
-+++ keystone-2014.2.2/keystone.egg-info/requires.txt	2015-02-24 22:46:53.872644685 -0800
-@@ -4,7 +4,6 @@ eventlet>=0.15.1,<0.16.0
+--- keystone-2015.1.2/keystone.egg-info/requires.txt.orig      2015-10-13 13:44:44.730755549 -0600
++++ keystone-2015.1.2/keystone.egg-info/requires.txt        2015-10-13 13:44:50.161960656 -0600
+@@ -4,7 +4,6 @@ eventlet!=0.17.0,>=0.16.1
  greenlet>=0.3.2
  netaddr>=0.7.12
  PasteDeploy>=1.5.0
 -Paste
- Routes>=1.12.3,!=2.0
- six>=1.7.0
- SQLAlchemy>=0.8.4,<=0.9.99,!=0.9.0,!=0.9.1,!=0.9.2,!=0.9.3,!=0.9.4,!=0.9.5,!=0.9.6
-@@ -17,11 +16,9 @@ oslo.config>=1.4.0  # Apache-2.0
- oslo.messaging>=1.4.0,!=1.5.0,<1.6.0
- oslo.db>=1.0.0,<1.1  # Apache-2.0
- oslo.i18n>=1.0.0  # Apache-2.0
--oslo.serialization>=1.0.0               # Apache-2.0
- oslo.utils>=1.0.0                       # Apache-2.0
- Babel>=1.3
- oauthlib>=0.6
+ Routes!=2.0,>=1.12.3
+ cryptography>=0.8 # Apache-2.0
+ six>=1.9.0
+@@ -29,5 +28,4 @@ pysaml2
  dogpile.cache>=0.5.3
- jsonschema>=2.0.0,<3.0.0
--pycadf>=0.6.0
--posix_ipc
-+pycadf>=0.6.0
-\ No newline at end of file
---- keystone-2014.2.2/requirements.txt.~1~	2015-02-05 06:53:51.000000000 -0800
-+++ keystone-2014.2.2/requirements.txt	2015-02-24 22:46:14.319449987 -0800
-@@ -9,7 +9,6 @@ eventlet>=0.15.1,<0.16.0
+ jsonschema<3.0.0,>=2.0.0
+ pycadf<0.9.0,>=0.8.0
+-posix-ipc
+ msgpack-python>=0.4.0
+
+--- keystone-2015.1.2/requirements.txt.orig  2015-10-13 13:43:45.598126189 -0600
++++ keystone-2015.1.2/requirements.txt    2015-10-13 13:43:57.481207228 -0600
+@@ -8,7 +8,6 @@ eventlet!=0.17.0,>=0.16.1
  greenlet>=0.3.2
  netaddr>=0.7.12
  PasteDeploy>=1.5.0
 -Paste
- Routes>=1.12.3,!=2.0
- six>=1.7.0
- SQLAlchemy>=0.8.4,<=0.9.99,!=0.9.0,!=0.9.1,!=0.9.2,!=0.9.3,!=0.9.4,!=0.9.5,!=0.9.6
-@@ -22,12 +21,9 @@ oslo.config>=1.4.0  # Apache-2.0
- oslo.messaging>=1.4.0,!=1.5.0,<1.6.0
- oslo.db>=1.0.0,<1.1  # Apache-2.0
- oslo.i18n>=1.0.0  # Apache-2.0
--# only for Keystone tests running against keystoneclient master
--oslo.serialization>=1.0.0               # Apache-2.0
- oslo.utils>=1.0.0                       # Apache-2.0
- Babel>=1.3
- oauthlib>=0.6
+ Routes!=2.0,>=1.12.3
+ cryptography>=0.8 # Apache-2.0
+ six>=1.9.0
+@@ -33,5 +32,4 @@ pysaml2
  dogpile.cache>=0.5.3
- jsonschema>=2.0.0,<3.0.0
- pycadf>=0.6.0
--posix_ipc
+ jsonschema<3.0.0,>=2.0.0
+ pycadf<0.9.0,>=0.8.0
+-posix-ipc
+ msgpack-python>=0.4.0
--- a/components/openstack/keystone/patches/sample-data.sh.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/keystone/patches/sample-data.sh.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,28 +1,53 @@
-In-house patch to the sample_data.sh script installed in
-/usr/demo/openstack/keystone in order to support all of the standard
-services and to allow customization of the individual service
-endpoints.  Solaris-specific patch and is not suitable for upstream
+Update the upstream sample-data.sh script for Solaris shell tools,
+additional OpenStack components, and the deprecation of keystone(1) in
+lieu of openstack(1) in Kilo.
 
-It also includes a change to use the standard Solaris tr(1) rather than
-GNU sed.
-
---- keystone-2014.2.rc1/tools/sample_data.sh.~1~	2014-09-30 00:14:14.000000000 -0700
-+++ keystone-2014.2.rc1/tools/sample_data.sh	2014-10-13 00:53:30.614564163 -0700
+This patch is Solaris-specific and not suitable for upstream
+contribution.
+--- keystone-2015.1.2/tools/sample_data.sh.orig	2016-01-12 14:41:47.118476961 -0500
++++ keystone-2015.1.2/tools/sample_data.sh	2016-01-12 14:49:03.317361531 -0500
 @@ -2,6 +2,8 @@
  
  # Copyright 2013 OpenStack Foundation
  #
-+# Copyright (c) 2014, 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
  # a copy of the License at
-@@ -36,22 +38,47 @@
- # service              nova      admin
- # service              ec2       admin
- # service              swift     admin
-+# service              cinder    admin
-+# service              neutron   admin
+@@ -19,8 +21,8 @@
+ # This script is based on the original DevStack keystone_data.sh script.
+ #
+ # It demonstrates how to bootstrap Keystone with an administrative user
+-# using the OS_SERVICE_TOKEN and OS_SERVICE_ENDPOINT environment variables
+-# and the administrative API.  It will get the admin_token (OS_SERVICE_TOKEN)
++# using the OS_TOKEN and OS_URL environment variables
++# and the administrative API.  It will get the admin_token (OS_TOKEN)
+ # and admin_port from keystone.conf if available.
+ #
+ # Disable creation of endpoints by setting DISABLE_ENDPOINTS environment variable.
+@@ -29,29 +31,67 @@
+ # A EC2-compatible credential is created for the admin user and
+ # placed in etc/ec2rc.
+ #
+-# Tenant               User      Roles
+-# -------------------------------------------------------
+-# demo                 admin     admin
+-# service              glance    admin
+-# service              nova      admin
+-# service              ec2       admin
+-# service              swift     admin
++# Tenant               User       Roles
++# --------------------------------------------------------
++# demo                 admin      admin
++# service              glance     admin
++# service              nova       admin
++# service              ec2        admin
++# service              swift      admin
++# service              cinder     admin
++# service              neutron    admin
++# service              heat       admin
++# service              ironic     admin
  
  # By default, passwords used are those in the OpenStack Install and Deploy Manual.
  # One can override these (publicly known, and hence, insecure) passwords by setting the appropriate
@@ -39,6 +64,8 @@
 +SWIFT_PASSWORD=${SWIFT_PASSWORD:-${SERVICE_PASSWORD:-swift}}
 +CINDER_PASSWORD=${CINDER_PASSWORD:-${SERVICE_PASSWORD:-cinder}}
 +NEUTRON_PASSWORD=${NEUTRON_PASSWORD:-${SERVICE_PASSWORD:-neutron}}
++HEAT_PASSWORD=${HEAT_PASSWORD:-${SERVICE_PASSWORD:-heat}}
++IRONIC_PASSWORD=${IRONIC_PASSWORD:-${SERVICE_PASSWORD:-ironic}}
  
  CONTROLLER_PUBLIC_ADDRESS=${CONTROLLER_PUBLIC_ADDRESS:-localhost}
  CONTROLLER_ADMIN_ADDRESS=${CONTROLLER_ADMIN_ADDRESS:-localhost}
@@ -62,138 +89,352 @@
 +NEUTRON_PUBLIC_ADDRESS=${NEUTRON_PUBLIC_ADDRESS:-$CONTROLLER_PUBLIC_ADDRESS}
 +NEUTRON_ADMIN_ADDRESS=${NEUTRON_ADMIN_ADDRESS:-$CONTROLLER_ADMIN_ADDRESS}
 +NEUTRON_INTERNAL_ADDRESS=${NEUTRON_INTERNAL_ADDRESS:-$CONTROLLER_INTERNAL_ADDRESS}
++IRONIC_PUBLIC_ADDRESS=${IRONIC_PUBLIC_ADDRESS:-$CONTROLLER_PUBLIC_ADDRESS}
++IRONIC_ADMIN_ADDRESS=${IRONIC_ADMIN_ADDRESS:-$CONTROLLER_ADMIN_ADDRESS}
++IRONIC_INTERNAL_ADDRESS=${IRONIC_INTERNAL_ADDRESS:-$CONTROLLER_INTERNAL_ADDRESS}
++HEAT_CFN_PUBLIC_ADDRESS=${HEAT_CFN_PUBLIC_ADDRESS:-$CONTROLLER_PUBLIC_ADDRESS}
++HEAT_CFN_ADMIN_ADDRESS=${HEAT_CFN_ADMIN_ADDRESS:-$CONTROLLER_ADMIN_ADDRESS}
++HEAT_CFN_INTERNAL_ADDRESS=${HEAT_CFN_INTERNAL_ADDRESS:-$CONTROLLER_INTERNAL_ADDRESS}
++HEAT_PUBLIC_ADDRESS=${HEAT_PUBLIC_ADDRESS:-$CONTROLLER_PUBLIC_ADDRESS}
++HEAT_ADMIN_ADDRESS=${HEAT_ADMIN_ADDRESS:-$CONTROLLER_ADMIN_ADDRESS}
++HEAT_INTERNAL_ADDRESS=${HEAT_INTERNAL_ADDRESS:-$CONTROLLER_INTERNAL_ADDRESS}
 +
  TOOLS_DIR=$(cd $(dirname "$0") && pwd)
  KEYSTONE_CONF=${KEYSTONE_CONF:-/etc/keystone/keystone.conf}
  if [[ -r "$KEYSTONE_CONF" ]]; then
-@@ -67,8 +94,8 @@ fi
+@@ -67,169 +107,221 @@
  
  # Extract some info from Keystone's configuration file
  if [[ -r "$KEYSTONE_CONF" ]]; then
 -    CONFIG_SERVICE_TOKEN=$(sed 's/[[:space:]]//g' $KEYSTONE_CONF | grep ^admin_token= | cut -d'=' -f2)
+-    if [[ -z "${CONFIG_SERVICE_TOKEN}" ]]; then
+-        # default config options are commented out, so lets try those
+-        CONFIG_SERVICE_TOKEN=$(sed 's/[[:space:]]//g' $KEYSTONE_CONF | grep ^\#admin_token= | cut -d'=' -f2)
+-    fi
 -    CONFIG_ADMIN_PORT=$(sed 's/[[:space:]]//g' $KEYSTONE_CONF | grep ^admin_port= | cut -d'=' -f2)
+-    if [[ -z "${CONFIG_ADMIN_PORT}" ]]; then
+-        # default config options are commented out, so lets try those
+-        CONFIG_ADMIN_PORT=$(sed 's/[[:space:]]//g' $KEYSTONE_CONF | grep ^\#admin_port= | cut -d'=' -f2)
+-    fi
+-fi
+-
+-export OS_SERVICE_TOKEN=${OS_SERVICE_TOKEN:-$CONFIG_SERVICE_TOKEN}
+-if [[ -z "$OS_SERVICE_TOKEN" ]]; then
+-    echo "No service token found."
+-    echo "Set OS_SERVICE_TOKEN manually from keystone.conf admin_token."
+-    exit 1
 +    CONFIG_SERVICE_TOKEN=$(tr -d '[\t ]' < $KEYSTONE_CONF | grep ^admin_token= | cut -d'=' -f2)
 +    CONFIG_ADMIN_PORT=$(tr -d '[\t ]' < $KEYSTONE_CONF | grep ^admin_port= | cut -d'=' -f2)
  fi
  
- export OS_SERVICE_TOKEN=${OS_SERVICE_TOKEN:-$CONFIG_SERVICE_TOKEN}
-@@ -136,6 +163,22 @@ keystone user-role-add --user-id $SWIFT_
-                        --role-id $ADMIN_ROLE \
-                        --tenant-id $SERVICE_TENANT
+-export OS_SERVICE_ENDPOINT=${OS_SERVICE_ENDPOINT:-http://$CONTROLLER_PUBLIC_ADDRESS:${CONFIG_ADMIN_PORT:-35357}/v2.0}
++export OS_TOKEN=${OS_TOKEN:-$CONFIG_SERVICE_TOKEN}
++if [[ -z "$OS_TOKEN" ]]; then
++    echo "No authentication token found."
++    echo "Set OS_TOKEN manually from keystone.conf admin_token."
++    exit 1
++fi
+ 
+-function get_id () {
+-    echo `"$@" | grep ' id ' | awk '{print $4}'`
+-}
++export OS_URL=${OS_URL:-http://$CONTROLLER_PUBLIC_ADDRESS:${CONFIG_ADMIN_PORT:-35357}/v2.0}
+ 
+ #
+ # Default tenant
+ #
+-DEMO_TENANT=$(get_id keystone tenant-create --name=demo \
+-                                            --description "Default Tenant")
+-
+-ADMIN_USER=$(get_id keystone user-create --name=admin \
+-                                         --pass="${ADMIN_PASSWORD}")
++openstack project create --description "Default Tenant" demo
+ 
+-ADMIN_ROLE=$(get_id keystone role-create --name=admin)
+-
+-keystone user-role-add --user-id $ADMIN_USER \
+-                       --role-id $ADMIN_ROLE \
+-                       --tenant-id $DEMO_TENANT
++# Admin user/role
++openstack user create --project demo --password "${ADMIN_PASSWORD}" admin
++openstack role create admin
++openstack role add --user admin --project demo admin
  
-+CINDER_USER=$(get_id keystone user-create --name=cinder \
-+                                          --pass="${CINDER_PASSWORD}" \
-+                                          --tenant-id $SERVICE_TENANT)
+ #
+ # Service tenant
+ #
+-SERVICE_TENANT=$(get_id keystone tenant-create --name=service \
+-                                               --description "Service Tenant")
+-
+-GLANCE_USER=$(get_id keystone user-create --name=glance \
+-                                          --pass="${GLANCE_PASSWORD}")
++openstack project create --description "Service Tenant" service
+ 
+-keystone user-role-add --user-id $GLANCE_USER \
+-                       --role-id $ADMIN_ROLE \
+-                       --tenant-id $SERVICE_TENANT
+-
+-NOVA_USER=$(get_id keystone user-create --name=nova \
+-                                        --pass="${NOVA_PASSWORD}" \
+-                                        --tenant-id $SERVICE_TENANT)
+-
+-keystone user-role-add --user-id $NOVA_USER \
+-                       --role-id $ADMIN_ROLE \
+-                       --tenant-id $SERVICE_TENANT
+-
+-EC2_USER=$(get_id keystone user-create --name=ec2 \
+-                                       --pass="${EC2_PASSWORD}" \
+-                                       --tenant-id $SERVICE_TENANT)
+-
+-keystone user-role-add --user-id $EC2_USER \
+-                       --role-id $ADMIN_ROLE \
+-                       --tenant-id $SERVICE_TENANT
+-
+-SWIFT_USER=$(get_id keystone user-create --name=swift \
+-                                         --pass="${SWIFT_PASSWORD}" \
+-                                         --tenant-id $SERVICE_TENANT)
+-
+-keystone user-role-add --user-id $SWIFT_USER \
+-                       --role-id $ADMIN_ROLE \
+-                       --tenant-id $SERVICE_TENANT
++# Glance user
++openstack user create --project service --password "${GLANCE_PASSWORD}" glance
++openstack role add --user glance --project service admin
 +
-+keystone user-role-add --user-id $CINDER_USER \
-+                       --role-id $ADMIN_ROLE \
-+                       --tenant-id $SERVICE_TENANT
++# Nova user
++openstack user create --project service --password "${NOVA_PASSWORD}" nova
++openstack role add --user nova --project service admin
++
++# EC2 user
++openstack user create --project service --password "${EC2_PASSWORD}" ec2
++openstack role add --user ec2 --project service admin
++
++# Swift user
++openstack user create --project service --password "${SWIFT_PASSWORD}" swift
++openstack role add --user swift --project service admin
 +
-+NEUTRON_USER=$(get_id keystone user-create --name=neutron \
-+                                           --pass="${NEUTRON_PASSWORD}" \
-+                                           --tenant-id $SERVICE_TENANT)
++# Cinder user
++openstack user create --project service --password "${CINDER_PASSWORD}"  cinder
++openstack role add --user cinder --project service admin
++
++# Neutron user
++openstack user create --project service --password "${NEUTRON_PASSWORD}" neutron
++openstack role add --user neutron --project service admin
 +
-+keystone user-role-add --user-id $NEUTRON_USER \
-+                       --role-id $ADMIN_ROLE \
-+                       --tenant-id $SERVICE_TENANT
++# Ironic user
++openstack user create --project service --password "${IRONIC_PASSWORD}" ironic
++openstack role add --user ironic --project service admin
 +
++# Heat user
++openstack user create --project service --password "${HEAT_PASSWORD}" heat
++openstack role add --user heat --project service admin
+ 
  #
  # Keystone service
  #
-@@ -159,23 +202,23 @@ keystone service-create --name=nova \
-                         --description="Nova Compute Service")
+-KEYSTONE_SERVICE=$(get_id \
+-keystone service-create --name=keystone \
+-                        --type=identity \
+-                        --description="Keystone Identity Service")
++openstack service create --name keystone \
++                         --description "Keystone Identity Service" \
++                        identity
  if [[ -z "$DISABLE_ENDPOINTS" ]]; then
-     keystone endpoint-create --region RegionOne --service-id $NOVA_SERVICE \
+-    keystone endpoint-create --region RegionOne --service-id $KEYSTONE_SERVICE \
++    openstack endpoint create --region RegionOne \
+         --publicurl "http://$CONTROLLER_PUBLIC_ADDRESS:\$(public_port)s/v2.0" \
+         --adminurl "http://$CONTROLLER_ADMIN_ADDRESS:\$(admin_port)s/v2.0" \
+-        --internalurl "http://$CONTROLLER_INTERNAL_ADDRESS:\$(public_port)s/v2.0"
++        --internalurl "http://$CONTROLLER_INTERNAL_ADDRESS:\$(public_port)s/v2.0" \
++       keystone
+ fi
+ 
++
+ #
+ # Nova service
+ #
+-NOVA_SERVICE=$(get_id \
+-keystone service-create --name=nova \
+-                        --type=compute \
+-                        --description="Nova Compute Service")
++openstack service create --name nova \
++                         --description="Nova Compute Service" \
++                         compute
+ if [[ -z "$DISABLE_ENDPOINTS" ]]; then
+-    keystone endpoint-create --region RegionOne --service-id $NOVA_SERVICE \
 -        --publicurl "http://$CONTROLLER_PUBLIC_ADDRESS:8774/v2/\$(tenant_id)s" \
 -        --adminurl "http://$CONTROLLER_ADMIN_ADDRESS:8774/v2/\$(tenant_id)s" \
 -        --internalurl "http://$CONTROLLER_INTERNAL_ADDRESS:8774/v2/\$(tenant_id)s"
++    openstack endpoint create --region RegionOne \
 +        --publicurl "http://$NOVA_PUBLIC_ADDRESS:8774/v2/\$(tenant_id)s" \
 +        --adminurl "http://$NOVA_ADMIN_ADDRESS:8774/v2/\$(tenant_id)s" \
-+        --internalurl "http://$NOVA_INTERNAL_ADDRESS:8774/v2/\$(tenant_id)s"
++        --internalurl "http://$NOVA_INTERNAL_ADDRESS:8774/v2/\$(tenant_id)s" \
++       nova
  fi
  
++
  #
- # Volume service
+-# Volume service
++# Volume service - v1 and v2
  #
- VOLUME_SERVICE=$(get_id \
+-VOLUME_SERVICE=$(get_id \
 -keystone service-create --name=volume \
-+keystone service-create --name=cinder \
-                         --type=volume \
+-                        --type=volume \
 -                        --description="Nova Volume Service")
-+                        --description="Cinder Volume Service")
++openstack service create --name cinder \
++                         --description "Cinder Volume Service" \
++                        volume
++openstack service create --name cinderv2 \
++                         --description "Cinder Volume Service version 2" \
++                        volumev2
  if [[ -z "$DISABLE_ENDPOINTS" ]]; then
-     keystone endpoint-create --region RegionOne --service-id $VOLUME_SERVICE \
+-    keystone endpoint-create --region RegionOne --service-id $VOLUME_SERVICE \
 -        --publicurl "http://$CONTROLLER_PUBLIC_ADDRESS:8776/v1/\$(tenant_id)s" \
 -        --adminurl "http://$CONTROLLER_ADMIN_ADDRESS:8776/v1/\$(tenant_id)s" \
 -        --internalurl "http://$CONTROLLER_INTERNAL_ADDRESS:8776/v1/\$(tenant_id)s"
++    openstack endpoint create --region RegionOne \
 +        --publicurl "http://$CINDER_PUBLIC_ADDRESS:8776/v1/\$(tenant_id)s" \
 +        --adminurl "http://$CINDER_ADMIN_ADDRESS:8776/v1/\$(tenant_id)s" \
-+        --internalurl "http://$CINDER_INTERNAL_ADDRESS:8776/v1/\$(tenant_id)s"
++        --internalurl "http://$CINDER_INTERNAL_ADDRESS:8776/v1/\$(tenant_id)s" \
++       cinder
  fi
++if [[ -z "$DISABLE_ENDPOINTS" ]]; then
++    openstack endpoint create --region RegionOne \
++        --publicurl "http://$CINDER_PUBLIC_ADDRESS:8776/v2/\$(tenant_id)s" \
++        --adminurl "http://$CINDER_ADMIN_ADDRESS:8776/v2/\$(tenant_id)s" \
++        --internalurl "http://$CINDER_INTERNAL_ADDRESS:8776/v2/\$(tenant_id)s" \
++       cinderv2
++fi
++
  
  #
-@@ -187,9 +230,9 @@ keystone service-create --name=glance \
-                         --description="Glance Image Service")
- if [[ -z "$DISABLE_ENDPOINTS" ]]; then
-     keystone endpoint-create --region RegionOne --service-id $GLANCE_SERVICE \
+ # Image service
+ #
+-GLANCE_SERVICE=$(get_id \
+-keystone service-create --name=glance \
+-                        --type=image \
+-                        --description="Glance Image Service")
+-if [[ -z "$DISABLE_ENDPOINTS" ]]; then
+-    keystone endpoint-create --region RegionOne --service-id $GLANCE_SERVICE \
 -        --publicurl "http://$CONTROLLER_PUBLIC_ADDRESS:9292" \
 -        --adminurl "http://$CONTROLLER_ADMIN_ADDRESS:9292" \
 -        --internalurl "http://$CONTROLLER_INTERNAL_ADDRESS:9292"
++openstack service create --name glance \
++                         --description "Glance Image Service" \
++                        image
++if [[ -z "$DISABLE_ENDPOINTS" ]]; then
++    openstack endpoint create --region RegionOne \
 +        --publicurl "http://$GLANCE_PUBLIC_ADDRESS:9292" \
 +        --adminurl "http://$GLANCE_ADMIN_ADDRESS:9292" \
-+        --internalurl "http://$GLANCE_INTERNAL_ADDRESS:9292"
++        --internalurl "http://$GLANCE_INTERNAL_ADDRESS:9292" \
++       glance
  fi
  
++
  #
-@@ -201,9 +244,9 @@ keystone service-create --name=ec2 \
-                         --description="EC2 Compatibility Layer")
- if [[ -z "$DISABLE_ENDPOINTS" ]]; then
-     keystone endpoint-create --region RegionOne --service-id $EC2_SERVICE \
+ # EC2 service
+ #
+-EC2_SERVICE=$(get_id \
+-keystone service-create --name=ec2 \
+-                        --type=ec2 \
+-                        --description="EC2 Compatibility Layer")
+-if [[ -z "$DISABLE_ENDPOINTS" ]]; then
+-    keystone endpoint-create --region RegionOne --service-id $EC2_SERVICE \
 -        --publicurl "http://$CONTROLLER_PUBLIC_ADDRESS:8773/services/Cloud" \
 -        --adminurl "http://$CONTROLLER_ADMIN_ADDRESS:8773/services/Admin" \
 -        --internalurl "http://$CONTROLLER_INTERNAL_ADDRESS:8773/services/Cloud"
++openstack service create --name ec2 \
++                         --description "EC2 Compatibility Layer" \
++                        ec2
++if [[ -z "$DISABLE_ENDPOINTS" ]]; then
++    openstack endpoint create --region RegionOne \
 +        --publicurl "http://$EC2_PUBLIC_ADDRESS:8773/services/Cloud" \
 +        --adminurl "http://$EC2_ADMIN_ADDRESS:8773/services/Admin" \
-+        --internalurl "http://$EC2_INTERNAL_ADDRESS:8773/services/Cloud"
++        --internalurl "http://$EC2_INTERNAL_ADDRESS:8773/services/Cloud" \
++       ec2
  fi
  
++
  #
-@@ -212,15 +255,34 @@ fi
- SWIFT_SERVICE=$(get_id \
- keystone service-create --name=swift \
-                         --type="object-store" \
+ # Swift service
+ #
+-SWIFT_SERVICE=$(get_id \
+-keystone service-create --name=swift \
+-                        --type="object-store" \
 -                        --description="Swift Service")
-+                        --description="Swift Object Store Service")
- if [[ -z "$DISABLE_ENDPOINTS" ]]; then
-     keystone endpoint-create --region RegionOne --service-id $SWIFT_SERVICE \
+-if [[ -z "$DISABLE_ENDPOINTS" ]]; then
+-    keystone endpoint-create --region RegionOne --service-id $SWIFT_SERVICE \
 -        --publicurl   "http://$CONTROLLER_PUBLIC_ADDRESS:8080/v1/AUTH_\$(tenant_id)s" \
 -        --adminurl    "http://$CONTROLLER_ADMIN_ADDRESS:8080/v1" \
 -        --internalurl "http://$CONTROLLER_INTERNAL_ADDRESS:8080/v1/AUTH_\$(tenant_id)s"
++openstack service create --name swift \
++                         --description "Swift Object Store Service" \
++                        object-store
++if [[ -z "$DISABLE_ENDPOINTS" ]]; then
++    openstack endpoint create --region RegionOne \
 +        --publicurl "http://$SWIFT_PUBLIC_ADDRESS:8080/v1/AUTH_\$(tenant_id)s" \
 +        --adminurl "http://$SWIFT_ADMIN_ADDRESS:8080/v1" \
-+        --internalurl "http://$SWIFT_INTERNAL_ADDRESS:8080/v1/AUTH_\$(tenant_id)s"
++        --internalurl "http://$SWIFT_INTERNAL_ADDRESS:8080/v1/AUTH_\$(tenant_id)s" \
++       swift
 +fi
 +
++
 +#
 +# Neutron service
 +#
-+NEUTRON_SERVICE=$(get_id \
-+keystone service-create --name=neutron \
-+                        --type=network \
-+                        --description="Neutron Network Service")
++openstack service create --name neutron \
++                         --description "Neutron Network Service" \
++                        network
 +if [[ -z "$DISABLE_ENDPOINTS" ]]; then
-+    keystone endpoint-create --region RegionOne --service-id $NEUTRON_SERVICE \
++    openstack endpoint create --region RegionOne \
 +        --publicurl "http://$NEUTRON_PUBLIC_ADDRESS:9696/" \
 +        --adminurl "http://$NEUTRON_ADMIN_ADDRESS:9696/" \
-+        --internalurl "http://$NEUTRON_INTERNAL_ADDRESS:9696/"
++        --internalurl "http://$NEUTRON_INTERNAL_ADDRESS:9696/" \
++       neutron
++fi
++
++#
++# Ironic service
++#
++openstack service create --name ironic \
++                        --description "Bare Metal Provisioning Service" \
++                        baremetal
++if [[ -z "$DISABLE_ENDPOINTS" ]]; then
++    openstack endpoint create --region RegionOne \
++        --publicurl "http://$IRONIC_PUBLIC_ADDRESS:6385/" \
++        --adminurl "http://$IRONIC_ADMIN_ADDRESS:6385/" \
++        --internalurl "http://$IRONIC_INTERNAL_ADDRESS:6385/" \
++       ironic
++fi
++
++#
++# Heat services
++#
++openstack service create --name heat-cfn \
++                        --description "Heat CloudFormation API" \
++                        cloudformation
++
++openstack service create --name heat \
++                        --description "Heat API" \
++                        orchestration
++
++if [[ -z "$DISABLE_ENDPOINTS" ]]; then
++    openstack endpoint create --region RegionOne \
++        --publicurl "http://$HEAT_CFN_PUBLIC_ADDRESS:8000/v1" \
++        --adminurl "http://$HEAT_CFN_ADMIN_ADDRESS:8000/v1" \
++        --internalurl "http://$HEAT_CFN_INTERNAL_ADDRESS:8000/v1" \
++       heat-cfn
++
++    openstack endpoint create --region RegionOne \
++        --publicurl "http://$HEAT_PUBLIC_ADDRESS:8004/v1/\$(tenant_id)s" \
++        --adminurl "http://$HEAT_ADMIN_ADDRESS:8004/v1/\$(tenant_id)s" \
++        --internalurl "http://$HEAT_INTERNAL_ADDRESS:8004/v1/\$(tenant_id)s" \
++       heat
  fi
  
  # create ec2 creds and parse the secret and access key returned
-+unset SERVICE_ENDPOINT SERVICE_TOKEN
-+export OS_AUTH_URL=http://localhost:5000/v2.0
-+export OS_PASSWORD="${ADMIN_PASSWORD}"
-+export OS_TENANT_NAME=demo
-+export OS_USERNAME=admin
- RESULT=$(keystone ec2-credentials-create --tenant-id=$SERVICE_TENANT --user-id=$ADMIN_USER)
+-RESULT=$(keystone ec2-credentials-create --tenant-id=$SERVICE_TENANT --user-id=$ADMIN_USER)
++RESULT=$(openstack ec2 credentials create --project service --user admin)
  ADMIN_ACCESS=`echo "$RESULT" | grep access | awk '{print $4}'`
  ADMIN_SECRET=`echo "$RESULT" | grep secret | awk '{print $4}'`
+ 
--- a/components/openstack/neutron/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/neutron/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,26 +20,42 @@
 #
 
 #
-# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
+include ../../../make-rules/shared-targets.mk
 
 COMPONENT_NAME=		neutron
-COMPONENT_CODENAME=	juno
-COMPONENT_VERSION=	2014.2.2
-COMPONENT_BE_VERSION=	2014.2
+COMPONENT_CODENAME=	kilo
+COMPONENT_VERSION=	2015.1.2
+COMPONENT_BE_VERSION=	2015.1
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:6b0509f7bc12a52ef4e90e1464720cd240eb93f0db2eef7d109d51fdb836a412
+    sha256:3ff282d75e86ea25f64e97e24b2960e7ffaeef7cf4a69c16d20ffe18065d0ef0
 COMPONENT_ARCHIVE_URL=	http://launchpad.net/$(COMPONENT_NAME)/$(COMPONENT_CODENAME)/$(COMPONENT_VERSION)/+download/$(COMPONENT_ARCHIVE)
 COMPONENT_SIG_URL=	$(COMPONENT_ARCHIVE_URL).asc
 COMPONENT_PROJECT_URL=	http://www.openstack.org/
 COMPONENT_BUGDB=	service/neutron
 IPS_COMPONENT_VERSION=	0.$(COMPONENT_VERSION)
+IPS_PKG_NAME=		cloud/openstack/neutron
 
-TPNO=			21824
+TPNO=			25791
+TPNO_VPNAAS=		27275
+
+NUM_EXTRA_ARCHIVES=	1
+
+COMPONENT_NAME_1=	neutron-vpnaas
+COMPONENT_SRC_1=	$(COMPONENT_NAME_1)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE_1=	$(COMPONENT_SRC_1).tar.gz
+COMPONENT_ARCHIVE_HASH_1=	\
+    sha256:969d0d098db2d5df33d3008d3139821330bafcc7d7e684472db8b4c23b2126e6
+COMPONENT_ARCHIVE_URL_1=	http://launchpad.net/neutron/$(COMPONENT_CODENAME)/$(COMPONENT_VERSION)/+download/$(COMPONENT_ARCHIVE_1)
+COMPONENT_SIG_URL_1=	$(COMPONENT_ARCHIVE_URL_1).asc
+SOURCE_DIR_1=		$(COMPONENT_DIR)/$(COMPONENT_SRC_1)
+DEVICE_DRIVERS=		neutron_vpnaas/services/vpn/device_drivers
+DEVICE_TEMPLATE=	$(DEVICE_DRIVERS)/template/solaris
 
 include $(WS_MAKE_RULES)/prep.mk
 include $(WS_MAKE_RULES)/setup.py.mk
@@ -57,37 +73,63 @@
 
 # move all the proper files into place and construct .pyc files for them
 COMPONENT_POST_BUILD_ACTION += \
-	($(MKDIR) $(PROTO_DIR)/lib/svc/manifest/application/openstack; \
-	 $(CP) \
-             files/neutron-dhcp-agent.xml \
-             files/neutron-l3-agent.xml \
-             files/neutron-metadata-agent.xml \
-             files/neutron-server.xml \
-             files/neutron-upgrade.xml \
-             $(PROTO_DIR)/lib/svc/manifest/application/openstack; \
-         $(MKDIR) $(PROTO_DIR)/usr/lib/neutron; \
-         $(CP) files/evs/migrate/evs-neutron-migration.py \
-	     $(PROTO_DIR)/usr/lib/neutron/evs-neutron-migration; \
-         $(MKDIR) $(PROTO_DIR)/usr/lib/python$(PYTHON_VERSION)/vendor-packages/neutron/agent; \
-	 $(CP) files/agent/evs_l3_agent.py $(PROTO_DIR)/usr/lib/python$(PYTHON_VERSION)/vendor-packages/neutron/agent; \
-	 $(MKDIR) $(PROTO_DIR)/usr/lib/python$(PYTHON_VERSION)/vendor-packages/neutron/agent/solaris; \
-	 $(CP) \
-	     files/agent/solaris/__init__.py \
-	     files/agent/solaris/dhcp.py \
-	     files/agent/solaris/interface.py \
-	     files/agent/solaris/ipfilters_manager.py \
-	     files/agent/solaris/net_lib.py \
-	     files/agent/solaris/ra.py \
-	     $(PROTO_DIR)/usr/lib/python$(PYTHON_VERSION)/vendor-packages/neutron/agent/solaris; \
-	 $(MKDIR) $(PROTO_DIR)/usr/lib/python$(PYTHON_VERSION)/vendor-packages/neutron/plugins/evs; \
-	 $(TOUCH) $(PROTO_DIR)/usr/lib/python$(PYTHON_VERSION)/vendor-packages/neutron/plugins/evs/__init__.py; \
-	 $(CP) files/evs/plugin.py $(PROTO_DIR)/usr/lib/python$(PYTHON_VERSION)/vendor-packages/neutron/plugins/evs; \
-         $(MKDIR) $(PROTO_DIR)/usr/lib/python$(PYTHON_VERSION)/vendor-packages/neutron/plugins/evs/migrate; \
-         $(CP) files/evs/migrate/__init__.py $(PROTO_DIR)/usr/lib/python$(PYTHON_VERSION)/vendor-packages/neutron/plugins/evs/migrate; \
-         $(CP) files/evs/migrate/havana_api.py $(PROTO_DIR)/usr/lib/python$(PYTHON_VERSION)/vendor-packages/neutron/plugins/evs/migrate)
+    $(GPATCH) -d $(SOURCE_DIR_1) $(GPATCH_FLAGS) \
+	< vpnaas_patches/01-vpn_db_add_solaris.patch; \
+    (cd $(SOURCE_DIR_1) ; \
+	$(ENV) PROTO_DIR=$(PYTHON_VERSIONS:%=$(BUILD_DIR)/$(MACH)-%) \
+	    HOME=$(BUILD_DIR)/config-$* $(COMPONENT_BUILD_ENV) \
+	    $(PYTHON.$(BITS)) ./setup.py build \
+		--build-base $(PYTHON_VERSIONS:%=$(BUILD_DIR)/$(MACH)-%); \
+	$(ENV) PROTO_DIR=$(PYTHON_VERSIONS:%=$(BUILD_DIR)/$(MACH)-%) \
+	    HOME=$(BUILD_DIR)/config-$* $(COMPONENT_BUILD_ENV) \
+	    $(PYTHON.$(BITS)) ./setup.py install_data \
+		--install-dir $(PROTO_DIR)); \
+    $(MKDIR) $(PROTO_DIR)/lib/svc/manifest/application/openstack; \
+    $(CP) \
+	 files/neutron-dhcp-agent.xml \
+	 files/neutron-l3-agent.xml \
+	 files/neutron-metadata-agent.xml \
+	 files/neutron-server.xml \
+	 files/neutron-upgrade.xml \
+	 $(PROTO_DIR)/lib/svc/manifest/application/openstack; \
+    $(MKDIR) $(PROTO_DIR)/usr/lib/neutron; \
+    $(CP) files/evs/migrate/evs-neutron-migration.py \
+	 $(PROTO_DIR)/usr/lib/neutron/evs-neutron-migration; \
+    $(CP) files/evs/migrate/neutron-kilo-migration.py \
+	 $(PROTO_DIR)/usr/lib/neutron/neutron-kilo-migration; \
+    $(MKDIR) $(PROTO_DIR)/$(PYTHON_LIB)/neutron/agent; \
+    $(CP) files/agent/evs_l3_agent.py \
+	 $(PROTO_DIR)/$(PYTHON_LIB)/neutron/agent; \
+    $(MKDIR) $(PROTO_DIR)/$(PYTHON_LIB)/neutron/agent/solaris; \
+    $(CP) \
+	 files/agent/solaris/__init__.py \
+	 files/agent/solaris/dhcp.py \
+	 files/agent/solaris/interface.py \
+	 files/agent/solaris/ipfilters_manager.py \
+	 files/agent/solaris/net_lib.py \
+	 files/agent/solaris/ra.py \
+	 $(PROTO_DIR)/$(PYTHON_LIB)/neutron/agent/solaris; \
+    $(MKDIR) $(PROTO_DIR)/$(PYTHON_LIB)/neutron/plugins/evs; \
+    $(TOUCH) $(PROTO_DIR)/$(PYTHON_LIB)/neutron/plugins/evs/__init__.py; \
+    $(CP) files/evs/plugin.py $(PROTO_DIR)/$(PYTHON_LIB)/neutron/plugins/evs; \
+    $(MKDIR) $(PROTO_DIR)/$(PYTHON_LIB)/neutron/plugins/evs/migrate; \
+    $(CP) \
+	 files/evs/migrate/__init__.py \
+	 files/evs/migrate/havana_api.py \
+	 $(PROTO_DIR)/$(PYTHON_LIB)/neutron/plugins/evs/migrate; \
+    $(MKDIR) $(PROTO_DIR)/$(PYTHON_LIB)/$(DEVICE_TEMPLATE); \
+    $(CP) files/services/vpn/device_drivers/solaris_ipsec.py \
+	$(PROTO_DIR)/$(PYTHON_LIB)/$(DEVICE_DRIVERS); \
+    $(CP) \
+	files/services/vpn/device_drivers/template/solaris/ikev2.secret.template \
+	files/services/vpn/device_drivers/template/solaris/ike.template \
+	files/services/vpn/device_drivers/template/solaris/ikev2.template \
+	files/services/vpn/device_drivers/template/solaris/ipsecinit.conf.template \
+	files/services/vpn/device_drivers/template/solaris/ike.secret.template \
+	$(PROTO_DIR)/$(PYTHON_LIB)/$(DEVICE_TEMPLATE)
 
 COMPONENT_POST_INSTALL_ACTION += \
-	$(PYTHON) -m compileall $(PROTO_DIR)/$(PYTHON_VENDOR_PACKAGES)
+    $(PYTHON) -m compileall $(PROTO_DIR)/$(PYTHON_VENDOR_PACKAGES)
 
 # common targets
 build:		$(BUILD_NO_ARCH)
@@ -100,12 +142,12 @@
 
 
 REQUIRED_PACKAGES += cloud/openstack/openstack-common
+REQUIRED_PACKAGES += library/python/alembic-27
 REQUIRED_PACKAGES += library/python/eventlet-27
 REQUIRED_PACKAGES += library/python/iniparse-27
 REQUIRED_PACKAGES += library/python/netaddr-27
 REQUIRED_PACKAGES += library/python/oslo.config-27
 REQUIRED_PACKAGES += library/python/oslo.db-27
-REQUIRED_PACKAGES += library/python/python-mysql-27
 REQUIRED_PACKAGES += library/python/simplejson-27
 REQUIRED_PACKAGES += library/python/six-27
 REQUIRED_PACKAGES += library/python/sqlalchemy-27
--- a/components/openstack/neutron/files/agent/evs_l3_agent.py	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/neutron/files/agent/evs_l3_agent.py	Fri Feb 05 17:54:17 2016 -0500
@@ -2,7 +2,7 @@
 
 # Copyright 2012 VMware, Inc.  All rights reserved.
 #
-# 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
@@ -25,18 +25,27 @@
 import netaddr
 
 from oslo.config import cfg
+from oslo_log import log as logging
 
-from neutron.agent.common import config
-from neutron.agent import l3_agent
-from neutron.agent.linux import external_process
+from neutron.agent.l3 import agent as l3_agent
+from neutron.agent.l3 import router_info as router
 from neutron.agent.linux import utils
 from neutron.agent.solaris import interface
+from neutron.agent.solaris import ipfilters_manager
 from neutron.agent.solaris import net_lib
 from neutron.agent.solaris import ra
+from neutron.callbacks import events
+from neutron.callbacks import registry
+from neutron.callbacks import resources
 from neutron.common import constants as l3_constants
+from neutron.common import exceptions as n_exc
 from neutron.common import utils as common_utils
-from neutron.openstack.common import log as logging
+from oslo_utils import importutils
+from oslo_log import log as logging
 
+import neutron_vpnaas.services.vpn.agent as neutron_vpnaas
+from neutron_vpnaas.extensions import vpnaas
+from neutron_vpnaas.services.vpn import vpn_service
 
 LOG = logging.getLogger(__name__)
 INTERNAL_DEV_PREFIX = 'l3i'
@@ -44,279 +53,28 @@
 FLOATING_IP_CIDR_SUFFIX = '/32'
 
 
-class EVSL3NATAgent(l3_agent.L3NATAgentWithStateReport):
-    OPTS = [
-        cfg.StrOpt('external_network_datalink', default='net0',
-                   help=_("Name of the datalink that connects to "
-                          "an external network.")),
-        cfg.BoolOpt('allow_forwarding_between_networks', default=False,
-                    help=_("Allow forwarding of packets between tenant's "
-                           "networks")),
-    ]
-
-    def __init__(self, host, conf=None):
-        cfg.CONF.register_opts(self.OPTS)
-        cfg.CONF.register_opts(interface.OPTS)
-        super(EVSL3NATAgent, self).__init__(host=host, conf=conf)
-
-    def _router_added(self, router_id, router):
-        ri = l3_agent.RouterInfo(router_id, None,
-                                 self.conf.use_namespaces, router)
-        self.router_info[router_id] = ri
-
-        if self.conf.enable_metadata_proxy:
-            self._spawn_metadata_proxy(ri.router_id, ri.ns_name)
-
-    def _router_removed(self, router_id):
-        ri = self.router_info.get(router_id)
-        if ri is None:
-            LOG.warn(_("Info for router %s were not found. "
-                       "Skipping router removal"), router_id)
-            return
-        ri.router['gw_port'] = None
-        ri.router[l3_constants.INTERFACE_KEY] = []
-        ri.router[l3_constants.FLOATINGIP_KEY] = []
-        self.process_router(ri)
-        if self.conf.enable_metadata_proxy:
-            self._destroy_metadata_proxy(ri.router_id, ri.ns_name)
-        ra.disable_ipv6_ra(ri.router_id)
-        del self.router_info[router_id]
-
-    def _get_metadata_proxy_process_manager(self, router_id, ns_name):
-        return external_process.ProcessManager(
-            self.conf,
-            router_id,
-            root_helper=None,
-            namespace=ns_name)
-
-    def _get_metadata_proxy_callback(self, router_id):
-        """Need to override this since we need to pass the absolute
-        path to neutron-ns-metadata-proxy binary.
-        """
-        def callback(pid_file):
-            metadata_proxy_socket = cfg.CONF.metadata_proxy_socket
-            proxy_cmd = ['/usr/lib/neutron/neutron-ns-metadata-proxy',
-                         '--pid_file=%s' % pid_file,
-                         '--metadata_proxy_socket=%s' % metadata_proxy_socket,
-                         '--router_id=%s' % router_id,
-                         '--state_path=%s' % self.conf.state_path,
-                         '--metadata_port=%s' % self.conf.metadata_port]
-            proxy_cmd.extend(config.get_log_args(
-                cfg.CONF, 'neutron-ns-metadata-proxy-%s.log' %
-                router_id))
-            return proxy_cmd
-
-        return callback
+class SolarisRouterInfo(router.RouterInfo):
 
-    def external_gateway_snat_rules(self, ex_gw_ip, internal_cidrs,
-                                    interface_name):
-        rules = []
-        for cidr in internal_cidrs:
-            rules.append('map %s %s -> %s/32' %
-                         (interface_name, cidr, ex_gw_ip))
-        return rules
-
-    def _handle_router_snat_rules(self, ri, ex_gw_port, internal_cidrs,
-                                  interface_name, action):
-        assert not ri.router['distributed']
-
-        # Remove all the old SNAT rules
-        # This is safe because if use_namespaces is set as False
-        # then the agent can only configure one router, otherwise
-        # each router's SNAT rules will be in their own namespace
-
-        # get only the SNAT rules
-        old_snat_rules = [rule for rule in ri.ipfilters_manager.ipv4['nat']
-                          if rule.startswith('map')]
-        ri.ipfilters_manager.remove_nat_rules(old_snat_rules)
-
-        # And add them back if the action is add_rules
-        if action == 'add_rules' and ex_gw_port:
-            # NAT rules are added only if ex_gw_port has an IPv4 address
-            for ip_addr in ex_gw_port['fixed_ips']:
-                ex_gw_ip = ip_addr['ip_address']
-                if netaddr.IPAddress(ex_gw_ip).version == 4:
-                    rules = self.external_gateway_snat_rules(ex_gw_ip,
-                                                             internal_cidrs,
-                                                             interface_name)
-                    ri.ipfilters_manager.add_nat_rules(rules)
-                    break
-
-    @common_utils.exception_logger()
-    def process_router(self, ri):
-        # TODO(mrsmith) - we shouldn't need to check here
-        if 'distributed' not in ri.router:
-            ri.router['distributed'] = False
-        ex_gw_port = self._get_ex_gw_port(ri)
-        internal_ports = ri.router.get(l3_constants.INTERFACE_KEY, [])
-        existing_port_ids = set([p['id'] for p in ri.internal_ports])
-        current_port_ids = set([p['id'] for p in internal_ports
-                                if p['admin_state_up']])
-        new_ports = [p for p in internal_ports if
-                     p['id'] in current_port_ids and
-                     p['id'] not in existing_port_ids]
-        old_ports = [p for p in ri.internal_ports if
-                     p['id'] not in current_port_ids]
-        new_ipv6_port = False
-        old_ipv6_port = False
-        for p in new_ports:
-            self._set_subnet_info(p)
-            self.internal_network_added(ri, p)
-            ri.internal_ports.append(p)
-            if (not new_ipv6_port and
-                    netaddr.IPNetwork(p['subnet']['cidr']).version == 6):
-                new_ipv6_port = True
-
-        for p in old_ports:
-            self.internal_network_removed(ri, p)
-            ri.internal_ports.remove(p)
-            if (not old_ipv6_port and
-                    netaddr.IPNetwork(p['subnet']['cidr']).version == 6):
-                old_ipv6_port = True
-
-        if new_ipv6_port or old_ipv6_port:
-            # refresh ndpd daemon after filling in ndpd.conf
-            # with the right entries
-            ra.enable_ipv6_ra(ri.router_id,
-                              internal_ports,
-                              self.get_internal_device_name)
+    def __init__(self, router_id, router, agent_conf, interface_driver,
+                 use_ipv6=False):
+        super(SolarisRouterInfo, self).__init__(router_id, router, agent_conf,
+                                                interface_driver, use_ipv6)
+        self.ipfilters_manager = ipfilters_manager.IPfiltersManager()
+        self.iptables_manager = None
+        self.remove_route = False
 
-        # remove any internal stale router interfaces (i.e., l3i.. VNICs)
-        existing_devices = net_lib.Datalink.show_vnic()
-        current_internal_devs = set([n for n in existing_devices
-                                     if n.startswith(INTERNAL_DEV_PREFIX)])
-        current_port_devs = set([self.get_internal_device_name(id) for
-                                 id in current_port_ids])
-        stale_devs = current_internal_devs - current_port_devs
-        for stale_dev in stale_devs:
-            LOG.debug(_('Deleting stale internal router device: %s'),
-                      stale_dev)
-            self.driver.fini_l3(stale_dev)
-            self.driver.unplug(stale_dev)
-
-        # TODO(salv-orlando): RouterInfo would be a better place for
-        # this logic too
-        ex_gw_port_id = (ex_gw_port and ex_gw_port['id'] or
-                         ri.ex_gw_port and ri.ex_gw_port['id'])
-
-        interface_name = None
-        if ex_gw_port_id:
-            interface_name = self.get_external_device_name(ex_gw_port_id)
-        if ex_gw_port:
-            def _gateway_ports_equal(port1, port2):
-                def _get_filtered_dict(d, ignore):
-                    return dict((k, v) for k, v in d.iteritems()
-                                if k not in ignore)
-
-                keys_to_ignore = set(['binding:host_id'])
-                port1_filtered = _get_filtered_dict(port1, keys_to_ignore)
-                port2_filtered = _get_filtered_dict(port2, keys_to_ignore)
-                return port1_filtered == port2_filtered
-
-            self._set_subnet_info(ex_gw_port)
-            if not ri.ex_gw_port:
-                self.external_gateway_added(ri, ex_gw_port, interface_name)
-            elif not _gateway_ports_equal(ex_gw_port, ri.ex_gw_port):
-                self.external_gateway_updated(ri, ex_gw_port, interface_name)
-        elif not ex_gw_port and ri.ex_gw_port:
-            self.external_gateway_removed(ri, ri.ex_gw_port, interface_name)
-
-        # Remove any external stale router interfaces (i.e., l3e.. VNICs)
-        stale_devs = [dev for dev in existing_devices
-                      if dev.startswith(EXTERNAL_DEV_PREFIX)
-                      and dev != interface_name]
-        for stale_dev in stale_devs:
-            LOG.debug(_('Deleting stale external router device: %s'),
-                      stale_dev)
-            self.driver.fini_l3(stale_dev)
-            self.driver.unplug(stale_dev)
-
-        # Process static routes for router
-        self.routes_updated(ri)
-
-        # Process SNAT rules for external gateway
-        if (not ri.router['distributed'] or
-                ex_gw_port and self.get_gw_port_host(ri.router) == self.host):
-            # Get IPv4 only internal CIDRs
-            internal_cidrs = [p['ip_cidr'] for p in ri.internal_ports
-                              if netaddr.IPNetwork(p['ip_cidr']).version == 4]
-            ri.perform_snat_action(self._handle_router_snat_rules,
-                                   internal_cidrs, interface_name)
+    def initialize(self, process_monitor):
+        """Initialize the router on the system.
 
-        # Process SNAT/DNAT rules for floating IPs
-        fip_statuses = {}
-        if ex_gw_port:
-            existing_floating_ips = ri.floating_ips
-            fip_statuses = self.process_router_floating_ips(ri, ex_gw_port)
-            # Identify floating IPs which were disabled
-            ri.floating_ips = set(fip_statuses.keys())
-            for fip_id in existing_floating_ips - ri.floating_ips:
-                fip_statuses[fip_id] = l3_constants.FLOATINGIP_STATUS_DOWN
-            # Update floating IP status on the neutron server
-            self.plugin_rpc.update_floatingip_statuses(
-                self.context, ri.router_id, fip_statuses)
-
-        # Update ex_gw_port and enable_snat on the router info cache
-        ri.ex_gw_port = ex_gw_port
-        ri.enable_snat = ri.router.get('enable_snat')
-
-    def process_router_floating_ips(self, ri, ex_gw_port):
-        """Configure the router's floating IPs
-        Configures floating ips using ipnat(1m) on the router's gateway device.
-
-        Cleans up floating ips that should not longer be configured.
-        """
-        ifname = self.get_external_device_name(ex_gw_port['id'])
-        ipintf = net_lib.IPInterface(ifname)
-        ipaddr_list = ipintf.ipaddr_list()['static']
-
-        existing_cidrs = set(ipaddr_list)
-        new_cidrs = set()
-
-        existing_nat_rules = [nat_rule for nat_rule in
-                              ri.ipfilters_manager.ipv4['nat']]
-        new_nat_rules = []
+        This differs from __init__ in that this method actually affects the
+        system creating namespaces, starting processes, etc.  The other merely
+        initializes the python object.  This separates in-memory object
+        initialization from methods that actually go do stuff to the system.
 
-        # Loop once to ensure that floating ips are configured.
-        fip_statuses = {}
-        for fip in ri.router.get(l3_constants.FLOATINGIP_KEY, []):
-            fip_ip = fip['floating_ip_address']
-            fip_cidr = str(fip_ip) + FLOATING_IP_CIDR_SUFFIX
-            new_cidrs.add(fip_cidr)
-            fixed_cidr = str(fip['fixed_ip_address']) + '/32'
-            nat_rule = 'bimap %s %s -> %s' % (ifname, fixed_cidr, fip_cidr)
-
-            if fip_cidr not in existing_cidrs:
-                try:
-                    ipintf.create_address(fip_cidr)
-                    ri.ipfilters_manager.add_nat_rules([nat_rule])
-                except Exception as err:
-                    # TODO(gmoodalb): If we fail in add_nat_rules(), then
-                    # we need to remove the fip_cidr address
-
-                    # any exception occurred here should cause the floating IP
-                    # to be set in error state
-                    fip_statuses[fip['id']] = (
-                        l3_constants.FLOATINGIP_STATUS_ERROR)
-                    LOG.warn(_("Unable to configure IP address for "
-                               "floating IP: %s: %s") % (fip['id'], err))
-                    continue
-            fip_statuses[fip['id']] = (
-                l3_constants.FLOATINGIP_STATUS_ACTIVE)
-            new_nat_rules.append(nat_rule)
-
-        # remove all the old NAT rules
-        old_nat_rules = list(set(existing_nat_rules) - set(new_nat_rules))
-        # Filter out 'bimap' NAT rules as we don't want to remove NAT rules
-        # that were added for Metadata server
-        old_nat_rules = [rule for rule in old_nat_rules if "bimap" in rule]
-        ri.ipfilters_manager.remove_nat_rules(old_nat_rules)
-
-        # Clean up addresses that no longer belong on the gateway interface.
-        for ip_cidr in existing_cidrs - new_cidrs:
-            if ip_cidr.endswith(FLOATING_IP_CIDR_SUFFIX):
-                ipintf.delete_address(ip_cidr)
-        return fip_statuses
+        :param process_monitor: The agent's process monitor instance.
+        """
+        self.process_monitor = process_monitor
+        self.radvd = ra.NDPD(self.router_id, self.get_internal_device_name)
 
     def get_internal_device_name(self, port_id):
         # Because of the way how dnsmasq works on Solaris, the length
@@ -334,7 +92,272 @@
         dname += '_0'
         return dname.replace('-', '_')
 
-    def external_gateway_added(self, ri, ex_gw_port, external_dlname):
+    def routes_updated(self):
+        pass
+
+    def _get_existing_devices(self):
+        return net_lib.Datalink.show_vnic()
+
+    def internal_network_added(self, port):
+        internal_dlname = self.get_internal_device_name(port['id'])
+        # driver just returns if datalink and IP interface already exists
+        self.driver.plug(port['tenant_id'], port['network_id'], port['id'],
+                         internal_dlname)
+        ip_cidrs = common_utils.fixed_ip_cidrs(port['fixed_ips'])
+        self.driver.init_l3(internal_dlname, ip_cidrs)
+
+        # Since we support shared router model, we need to block the new
+        # internal port from reaching other tenant's ports
+        block_pname = self._get_ippool_name(port['mac_address'])
+        self.ipfilters_manager.add_ippool(block_pname, None)
+        if self.agent_conf.allow_forwarding_between_networks:
+            # If allow_forwarding_between_networks is set, then we need to
+            # allow forwarding of packets between same tenant's ports.
+            allow_pname = self._get_ippool_name(port['mac_address'], '0')
+            self.ipfilters_manager.add_ippool(allow_pname, None)
+
+        # walk through the other internal ports and retrieve their
+        # cidrs and at the same time add the new internal port's
+        # cidr to them
+        port_subnet = port['subnets'][0]['cidr']
+        block_subnets = []
+        allow_subnets = []
+        for internal_port in self.internal_ports:
+            if internal_port['mac_address'] == port['mac_address']:
+                continue
+            if (self.agent_conf.allow_forwarding_between_networks and
+                    internal_port['tenant_id'] == port['tenant_id']):
+                allow_subnets.append(internal_port['subnets'][0]['cidr'])
+                # we need to add the port's subnet to this internal_port's
+                # allowed_subnet_pool
+                iport_allow_pname = \
+                    self._get_ippool_name(internal_port['mac_address'], '0')
+                self.ipfilters_manager.add_ippool(iport_allow_pname,
+                                                  [port_subnet])
+            else:
+                block_subnets.append(internal_port['subnets'][0]['cidr'])
+                iport_block_pname = \
+                    self._get_ippool_name(internal_port['mac_address'])
+                self.ipfilters_manager.add_ippool(iport_block_pname,
+                                                  [port_subnet])
+        # update the new port's pool with other ports' subnet
+        self.ipfilters_manager.add_ippool(block_pname, block_subnets)
+        if self.agent_conf.allow_forwarding_between_networks:
+            self.ipfilters_manager.add_ippool(allow_pname, allow_subnets)
+
+        # now setup the IPF rules
+        rules = ['block in quick on %s from %s to pool/%d' %
+                 (internal_dlname, port_subnet, block_pname)]
+        # pass in packets between networks that belong to same tenant
+        if self.agent_conf.allow_forwarding_between_networks:
+            rules.append('pass in quick on %s from %s to pool/%d' %
+                         (internal_dlname, port_subnet, allow_pname))
+        # if the external gateway is already setup for the shared router,
+        # then we need to add Policy Based Routing (PBR) for this internal
+        # network
+        ex_gw_port = self.ex_gw_port
+        ex_gw_ip = (ex_gw_port['subnets'][0]['gateway_ip']
+                    if ex_gw_port else None)
+        if ex_gw_ip:
+            external_dlname = self.get_external_device_name(ex_gw_port['id'])
+            rules.append('pass in on %s to %s:%s from any to !%s' %
+                         (internal_dlname, external_dlname, ex_gw_ip,
+                          port_subnet))
+
+        ipversion = netaddr.IPNetwork(port_subnet).version
+        self.ipfilters_manager.add_ipf_rules(rules, ipversion)
+        if self.agent_conf.enable_metadata_proxy and ipversion == 4:
+            rdr_rule = ['rdr %s 169.254.169.254/32 port 80 -> %s port %d tcp' %
+                        (internal_dlname, port['fixed_ips'][0]['ip_address'],
+                         self.agent_conf.metadata_port)]
+            self.ipfilters_manager.add_nat_rules(rdr_rule)
+
+    def internal_network_removed(self, port):
+        internal_dlname = self.get_internal_device_name(port['id'])
+        port_subnet = port['subnets'][0]['cidr']
+        # remove all the IP filter rules that we added during
+        # internal network addition
+        block_pname = self._get_ippool_name(port['mac_address'])
+        rules = ['block in quick on %s from %s to pool/%d' %
+                 (internal_dlname, port_subnet, block_pname)]
+        if self.agent_conf.allow_forwarding_between_networks:
+            allow_pname = self._get_ippool_name(port['mac_address'], '0')
+            rules.append('pass in quick on %s from %s to pool/%d' %
+                         (internal_dlname, port_subnet, allow_pname))
+
+        # remove all the IP filter rules that we added during
+        # external network addition
+        ex_gw_port = self.ex_gw_port
+        ex_gw_ip = (ex_gw_port['subnets'][0]['gateway_ip']
+                    if ex_gw_port else None)
+        if ex_gw_ip:
+            external_dlname = self.get_external_device_name(ex_gw_port['id'])
+            rules.append('pass in on %s to %s:%s from any to !%s' %
+                         (internal_dlname, external_dlname, ex_gw_ip,
+                          port_subnet))
+        ipversion = netaddr.IPNetwork(port['subnets'][0]['cidr']).version
+        self.ipfilters_manager.remove_ipf_rules(rules, ipversion)
+
+        # remove the ippool
+        self.ipfilters_manager.remove_ippool(block_pname, None)
+        if self.agent_conf.allow_forwarding_between_networks:
+            self.ipfilters_manager.remove_ippool(allow_pname, None)
+
+        for internal_port in self.internal_ports:
+            if (self.agent_conf.allow_forwarding_between_networks and
+                    internal_port['tenant_id'] == port['tenant_id']):
+                iport_allow_pname = \
+                    self._get_ippool_name(internal_port['mac_address'], '0')
+                self.ipfilters_manager.remove_ippool(iport_allow_pname,
+                                                     [port_subnet])
+            else:
+                iport_block_pname = \
+                    self._get_ippool_name(internal_port['mac_address'])
+                self.ipfilters_manager.remove_ippool(iport_block_pname,
+                                                     [port_subnet])
+        if self.agent_conf.enable_metadata_proxy and ipversion == 4:
+            rdr_rule = ['rdr %s 169.254.169.254/32 port 80 -> %s port %d tcp' %
+                        (internal_dlname, port['fixed_ips'][0]['ip_address'],
+                         self.agent_conf.metadata_port)]
+            self.ipfilters_manager.remove_nat_rules(rdr_rule)
+
+        if net_lib.Datalink.datalink_exists(internal_dlname):
+            self.driver.fini_l3(internal_dlname)
+            self.driver.unplug(internal_dlname)
+
+    def _process_internal_ports(self):
+        existing_port_ids = set([p['id'] for p in self.internal_ports])
+
+        internal_ports = self.router.get(l3_constants.INTERFACE_KEY, [])
+        current_port_ids = set([p['id'] for p in internal_ports
+                                if p['admin_state_up']])
+
+        new_port_ids = current_port_ids - existing_port_ids
+        new_ports = [p for p in internal_ports if p['id'] in new_port_ids]
+        old_ports = [p for p in self.internal_ports if
+                     p['id'] not in current_port_ids]
+#         updated_ports = self._get_updated_ports(self.internal_ports,
+#                                                 internal_ports)
+
+        enable_ra = False
+        for p in new_ports:
+            self.internal_network_added(p)
+            self.internal_ports.append(p)
+            enable_ra = enable_ra or self._port_has_ipv6_subnet(p)
+
+        for p in old_ports:
+            self.internal_network_removed(p)
+            self.internal_ports.remove(p)
+            enable_ra = enable_ra or self._port_has_ipv6_subnet(p)
+
+#         if updated_ports:
+#             for index, p in enumerate(internal_ports):
+#                 if not updated_ports.get(p['id']):
+#                     continue
+#                 self.internal_ports[index] = updated_ports[p['id']]
+#                 interface_name = self.get_internal_device_name(p['id'])
+#                 ip_cidrs = common_utils.fixed_ip_cidrs(p['fixed_ips'])
+#                 self.driver.init_l3(interface_name, ip_cidrs=ip_cidrs,
+#                         namespace=self.ns_name)
+#                 enable_ra = enable_ra or self._port_has_ipv6_subnet(p)
+
+        # Enable RA
+        if enable_ra:
+            self.radvd.enable(internal_ports)
+
+        # remove any internal stale router interfaces (i.e., l3i.. VNICs)
+        existing_devices = self._get_existing_devices()
+        current_internal_devs = set(n for n in existing_devices
+                                    if n.startswith(INTERNAL_DEV_PREFIX))
+        current_port_devs = set(self.get_internal_device_name(port_id)
+                                for port_id in current_port_ids)
+        stale_devs = current_internal_devs - current_port_devs
+        for stale_dev in stale_devs:
+            LOG.debug(_('Deleting stale internal router device: %s'),
+                      stale_dev)
+            self.driver.fini_l3(stale_dev)
+            self.driver.unplug(stale_dev)
+
+    def _get_ippool_name(self, mac_address, suffix=None):
+        # Generate a unique-name for ippool(1m) from that last 3
+        # bytes of mac-address. It is called pool name, but it is
+        # actually a 32 bit integer
+        name = mac_address.split(':')[3:]
+        if suffix:
+            name.append(suffix)
+        return int("".join(name), 16)
+
+    def process_floating_ip_addresses(self, interface_name):
+        """Configure IP addresses on router's external gateway interface.
+
+        Ensures addresses for existing floating IPs and cleans up
+        those that should not longer be configured.
+        """
+
+        fip_statuses = {}
+        if interface_name is None:
+            LOG.debug('No Interface for floating IPs router: %s',
+                      self.router['id'])
+            return fip_statuses
+
+        ipintf = net_lib.IPInterface(interface_name)
+        ipaddr_list = ipintf.ipaddr_list()['static']
+
+        existing_cidrs = set(ipaddr_list)
+        new_cidrs = set()
+
+        existing_nat_rules = [nat_rule for nat_rule in
+                              self.ipfilters_manager.ipv4['nat']]
+        new_nat_rules = []
+
+        floating_ips = self.get_floating_ips()
+        # Loop once to ensure that floating ips are configured.
+        for fip in floating_ips:
+            fip_ip = fip['floating_ip_address']
+            fip_cidr = str(fip_ip) + FLOATING_IP_CIDR_SUFFIX
+            new_cidrs.add(fip_cidr)
+            fixed_cidr = str(fip['fixed_ip_address']) + '/32'
+            nat_rule = 'bimap %s %s -> %s' % (interface_name, fixed_cidr,
+                                              fip_cidr)
+
+            if fip_cidr not in existing_cidrs:
+                try:
+                    ipintf.create_address(fip_cidr)
+                    self.ipfilters_manager.add_nat_rules([nat_rule])
+                except Exception as err:
+                    # TODO(gmoodalb): If we fail in add_nat_rules(), then
+                    # we need to remove the fip_cidr address
+
+                    # any exception occurred here should cause the floating IP
+                    # to be set in error state
+                    fip_statuses[fip['id']] = (
+                        l3_constants.FLOATINGIP_STATUS_ERROR)
+                    LOG.warn(_("Unable to configure IP address for "
+                               "floating IP: %s: %s") % (fip['id'], err))
+                    continue
+            fip_statuses[fip['id']] = (
+                l3_constants.FLOATINGIP_STATUS_ACTIVE)
+            LOG.debug("Floating ip %(id)s added, status %(status)s",
+                      {'id': fip['id'],
+                       'status': fip_statuses.get(fip['id'])})
+
+            new_nat_rules.append(nat_rule)
+
+        # remove all the old NAT rules
+        old_nat_rules = list(set(existing_nat_rules) - set(new_nat_rules))
+        # Filter out 'bimap' NAT rules as we don't want to remove NAT rules
+        # that were added for Metadata server
+        old_nat_rules = [rule for rule in old_nat_rules if "bimap" in rule]
+        self.ipfilters_manager.remove_nat_rules(old_nat_rules)
+
+        # Clean up addresses that no longer belong on the gateway interface.
+        for ip_cidr in existing_cidrs - new_cidrs:
+            if ip_cidr.endswith(FLOATING_IP_CIDR_SUFFIX):
+                ipintf.delete_address(ip_cidr)
+        return fip_statuses
+
+    # Todo(gmoodalb): need to do more work on ipv6 gateway
+    def external_gateway_added(self, ex_gw_port, external_dlname):
 
         if not net_lib.Datalink.datalink_exists(external_dlname):
             dl = net_lib.Datalink(external_dlname)
@@ -357,7 +380,7 @@
                             "create an external gateway port"))
                 return
             elif (l2type == 'vlan' and
-                  self.conf.get("external_network_datalink", None)):
+                  self.agent_conf.get("external_network_datalink", None)):
                 LOG.warning(_("external_network_datalink is deprecated in "
                               "Juno and will be removed in the next release "
                               "of Solaris OpenStack. Please use the evsadm "
@@ -365,52 +388,53 @@
                               "uplink-port for an external network"))
                 # proceed with the old-style of doing things
                 mac_address = ex_gw_port['mac_address']
-                dl.create_vnic(self.conf.external_network_datalink,
+                dl.create_vnic(self.agent_conf.external_network_datalink,
                                mac_address=mac_address, vid=vid)
             else:
                 self.driver.plug(ex_gw_port['tenant_id'],
                                  ex_gw_port['network_id'],
                                  ex_gw_port['id'], external_dlname)
 
-        self.driver.init_l3(external_dlname, [ex_gw_port['ip_cidr']])
+        ip_cidrs = common_utils.fixed_ip_cidrs(ex_gw_port['fixed_ips'])
+        self.driver.init_l3(external_dlname, ip_cidrs)
 
-        # TODO(gmoodalb): wrap route(1m) command within a class in net_lib.py
-        gw_ip = ex_gw_port['subnet']['gateway_ip']
+        gw_ip = ex_gw_port['subnets'][0]['gateway_ip']
         if gw_ip:
             cmd = ['/usr/bin/pfexec', '/usr/sbin/route', 'add', 'default',
                    gw_ip]
             stdout = utils.execute(cmd, extra_ok_codes=[errno.EEXIST])
-            ri.remove_route = True
-            if 'entry exists' in stdout:
-                ri.remove_route = False
+            if 'entry exists' not in stdout:
+                self.remove_route = True
 
             # for each of the internal ports, add Policy Based
             # Routing (PBR) rule
-            for port in ri.internal_ports:
+            for port in self.internal_ports:
                 internal_dlname = self.get_internal_device_name(port['id'])
                 rules = ['pass in on %s to %s:%s from any to !%s' %
                          (internal_dlname, external_dlname, gw_ip,
-                          port['subnet']['cidr'])]
-                ipversion = netaddr.IPNetwork(port['subnet']['cidr']).version
-                ri.ipfilters_manager.add_ipf_rules(rules, ipversion)
+                          port['subnets'][0]['cidr'])]
+                ipversion = \
+                    netaddr.IPNetwork(port['subnets'][0]['cidr']).version
+                self.ipfilters_manager.add_ipf_rules(rules, ipversion)
 
-    def external_gateway_updated(self, ri, ex_gw_port, external_dlname):
+    def external_gateway_updated(self, ex_gw_port, external_dlname):
         # There is nothing to do on Solaris
         pass
 
-    def external_gateway_removed(self, ri, ex_gw_port, external_dlname):
-        gw_ip = ex_gw_port['subnet']['gateway_ip']
+    def external_gateway_removed(self, ex_gw_port, external_dlname):
+        gw_ip = ex_gw_port['subnets'][0]['gateway_ip']
         if gw_ip:
             # remove PBR rules
-            for port in ri.internal_ports:
+            for port in self.internal_ports:
                 internal_dlname = self.get_internal_device_name(port['id'])
                 rules = ['pass in on %s to %s:%s from any to !%s' %
                          (internal_dlname, external_dlname, gw_ip,
-                          port['subnet']['cidr'])]
-                ipversion = netaddr.IPNetwork(port['subnet']['cidr']).version
-                ri.ipfilters_manager.remove_ipf_rules(rules, ipversion)
+                          port['subnets'][0]['cidr'])]
+                ipversion = \
+                    netaddr.IPNetwork(port['subnets'][0]['cidr']).version
+                self.ipfilters_manager.remove_ipf_rules(rules, ipversion)
 
-            if ri.remove_route:
+            if self.remove_route:
                 cmd = ['/usr/bin/pfexec', '/usr/sbin/route', 'delete',
                        'default', gw_ip]
                 utils.execute(cmd, check_exit_code=False)
@@ -419,149 +443,135 @@
             self.driver.fini_l3(external_dlname)
             self.driver.unplug(external_dlname)
 
-    def _get_ippool_name(self, mac_address, suffix=None):
-        # Generate a unique-name for ippool(1m) from that last 3
-        # bytes of mac-address. It is called pool name, but it is
-        # actually a 32 bit integer
-        name = mac_address.split(':')[3:]
-        if suffix:
-            name.append(suffix)
-        return int("".join(name), 16)
+    def _process_external_gateway(self, ex_gw_port):
+        # TODO(Carl) Refactor to clarify roles of ex_gw_port vs self.ex_gw_port
+        ex_gw_port_id = (ex_gw_port and ex_gw_port['id'] or
+                         self.ex_gw_port and self.ex_gw_port['id'])
 
-    def internal_network_added(self, ri, port):
-        internal_dlname = self.get_internal_device_name(port['id'])
-        # driver just returns if datalink and IP interface already exists
-        self.driver.plug(port['tenant_id'], port['network_id'], port['id'],
-                         internal_dlname)
-        self.driver.init_l3(internal_dlname, [port['ip_cidr']])
+        interface_name = None
+        if ex_gw_port_id:
+            interface_name = self.get_external_device_name(ex_gw_port_id)
+        if ex_gw_port:
+            def _gateway_ports_equal(port1, port2):
+                def _get_filtered_dict(d, ignore):
+                    return dict((k, v) for k, v in d.iteritems()
+                                if k not in ignore)
 
-        # Since we support shared router model, we need to block the new
-        # internal port from reaching other tenant's ports
-        block_pname = self._get_ippool_name(port['mac_address'])
-        ri.ipfilters_manager.add_ippool(block_pname, None)
-        if self.conf.allow_forwarding_between_networks:
-            # If allow_forwarding_between_networks is set, then we need to
-            # allow forwarding of packets between same tenant's ports.
-            allow_pname = self._get_ippool_name(port['mac_address'], '0')
-            ri.ipfilters_manager.add_ippool(allow_pname, None)
+                keys_to_ignore = set(['binding:host_id'])
+                port1_filtered = _get_filtered_dict(port1, keys_to_ignore)
+                port2_filtered = _get_filtered_dict(port2, keys_to_ignore)
+                return port1_filtered == port2_filtered
+
+            if not self.ex_gw_port:
+                self.external_gateway_added(ex_gw_port, interface_name)
+            elif not _gateway_ports_equal(ex_gw_port, self.ex_gw_port):
+                self.external_gateway_updated(ex_gw_port, interface_name)
+        elif not ex_gw_port and self.ex_gw_port:
+            self.external_gateway_removed(self.ex_gw_port, interface_name)
 
-        # walk through the other internal ports and retrieve their
-        # cidrs and at the same time add the new internal port's
-        # cidr to them
-        port_subnet = port['subnet']['cidr']
-        block_subnets = []
-        allow_subnets = []
-        for internal_port in ri.internal_ports:
-            if internal_port['mac_address'] == port['mac_address']:
-                continue
-            if (self.conf.allow_forwarding_between_networks and
-                    internal_port['tenant_id'] == port['tenant_id']):
-                allow_subnets.append(internal_port['subnet']['cidr'])
-                # we need to add the port's subnet to this internal_port's
-                # allowed_subnet_pool
-                iport_allow_pname = \
-                    self._get_ippool_name(internal_port['mac_address'], '0')
-                ri.ipfilters_manager.add_ippool(iport_allow_pname,
-                                                [port_subnet])
-            else:
-                block_subnets.append(internal_port['subnet']['cidr'])
-                iport_block_pname = \
-                    self._get_ippool_name(internal_port['mac_address'])
-                ri.ipfilters_manager.add_ippool(iport_block_pname,
-                                                [port_subnet])
-        # update the new port's pool with other ports' subnet
-        ri.ipfilters_manager.add_ippool(block_pname, block_subnets)
-        if self.conf.allow_forwarding_between_networks:
-            ri.ipfilters_manager.add_ippool(allow_pname, allow_subnets)
+        # Remove any external stale router interfaces (i.e., l3e.. VNICs)
+        existing_devices = self._get_existing_devices()
+        stale_devs = [dev for dev in existing_devices
+                      if dev.startswith(EXTERNAL_DEV_PREFIX) and
+                      dev != interface_name]
+        for stale_dev in stale_devs:
+            LOG.debug(_('Deleting stale external router device: %s'),
+                      stale_dev)
+            self.driver.fini_l3(stale_dev)
+            self.driver.unplug(stale_dev)
+
+        # Process SNAT rules for external gateway
+        self.perform_snat_action(self._handle_router_snat_rules,
+                                 interface_name)
 
-        # now setup the IPF rules
-        rules = ['block in quick on %s from %s to pool/%d' %
-                 (internal_dlname, port_subnet, block_pname)]
-        # pass in packets between networks that belong to same tenant
-        if self.conf.allow_forwarding_between_networks:
-            rules.append('pass in quick on %s from %s to pool/%d' %
-                         (internal_dlname, port_subnet, allow_pname))
-        # if the external gateway is already setup for the shared router,
-        # then we need to add Policy Based Routing (PBR) for this internal
-        # network
-        ex_gw_port = ri.ex_gw_port
-        ex_gw_ip = (ex_gw_port['subnet']['gateway_ip'] if ex_gw_port else None)
-        if ex_gw_ip:
-            external_dlname = self.get_external_device_name(ex_gw_port['id'])
-            rules.append('pass in on %s to %s:%s from any to !%s' %
-                         (internal_dlname, external_dlname, ex_gw_ip,
-                          port_subnet))
+    def external_gateway_snat_rules(self, ex_gw_ip, interface_name):
+        rules = []
+        ip_cidrs = []
+        for port in self.internal_ports:
+            if netaddr.IPNetwork(port['subnets'][0]['cidr']).version == 4:
+                ip_cidrs.extend(common_utils.fixed_ip_cidrs(port['fixed_ips']))
+
+        for ip_cidr in ip_cidrs:
+            rules.append('map %s %s -> %s/32' %
+                         (interface_name, ip_cidr, ex_gw_ip))
+        return rules
+
+    def _handle_router_snat_rules(self, ex_gw_port, interface_name, action):
+        # Remove all the old SNAT rules
+        # This is safe because if use_namespaces is set as False
+        # then the agent can only configure one router, otherwise
+        # each router's SNAT rules will be in their own namespace
+
+        # get only the SNAT rules
+        old_snat_rules = [rule for rule in self.ipfilters_manager.ipv4['nat']
+                          if rule.startswith('map')]
+        self.ipfilters_manager.remove_nat_rules(old_snat_rules)
 
-        ipversion = netaddr.IPNetwork(port_subnet).version
-        ri.ipfilters_manager.add_ipf_rules(rules, ipversion)
+        # And add them back if the action is add_rules
+        if action == 'add_rules' and ex_gw_port:
+            # NAT rules are added only if ex_gw_port has an IPv4 address
+            for ip_addr in ex_gw_port['fixed_ips']:
+                ex_gw_ip = ip_addr['ip_address']
+                if netaddr.IPAddress(ex_gw_ip).version == 4:
+                    rules = self.external_gateway_snat_rules(ex_gw_ip,
+                                                             interface_name)
+                    self.ipfilters_manager.add_nat_rules(rules)
+                    break
 
-        # if metadata proxy is enabled, then add the necessary
-        # IP NAT rules to forward the metadata requests to the
-        # metadata proxy server
-        if self.conf.enable_metadata_proxy and ipversion == 4:
-            # TODO(gmoodalb): when IP Filter allows redirection of packets
-            # to loopback IP address, then we need to add an IPF rule allowing
-            # only packets destined to 127.0.0.1:9697 to
-            # neutron-ns-metadata-proxy server
-            rules = ['rdr %s 169.254.169.254/32 port 80 -> %s port %d tcp' %
-                     (internal_dlname, port['fixed_ips'][0]['ip_address'],
-                      self.conf.metadata_port)]
-            ri.ipfilters_manager.add_nat_rules(rules)
+    def process_external(self, agent):
+        existing_floating_ips = self.floating_ips
+        try:
+            ex_gw_port = self.get_ex_gw_port()
+            self._process_external_gateway(ex_gw_port)
+            # TODO(Carl) Return after setting existing_floating_ips and
+            # still call update_fip_statuses?
+            if not ex_gw_port:
+                return
 
-    def internal_network_removed(self, ri, port):
-        internal_dlname = self.get_internal_device_name(port['id'])
-        port_subnet = port['subnet']['cidr']
-        # remove all the IP filter rules that we added during
-        # internal network addition
-        block_pname = self._get_ippool_name(port['mac_address'])
-        rules = ['block in quick on %s from %s to pool/%d' %
-                 (internal_dlname, port_subnet, block_pname)]
-        if self.conf.allow_forwarding_between_networks:
-            allow_pname = self._get_ippool_name(port['mac_address'], '0')
-            rules.append('pass in quick on %s from %s to pool/%d' %
-                         (internal_dlname, port_subnet, allow_pname))
+            # Once NAT rules for floating IPs are safely in place
+            # configure their addresses on the external gateway port
+            interface_name = self.get_external_device_name(ex_gw_port['id'])
+            fip_statuses = self.configure_fip_addresses(interface_name)
+        except (n_exc.FloatingIpSetupException,
+                n_exc.IpTablesApplyException) as e:
+                # All floating IPs must be put in error state
+                LOG.exception(e)
+                fip_statuses = self.put_fips_in_error_state()
+
+        agent.update_fip_statuses(self, existing_floating_ips, fip_statuses)
+
 
-        # remove all the IP filter rules that we added during
-        # external network addition
-        ex_gw_port = ri.ex_gw_port
-        ex_gw_ip = (ex_gw_port['subnet']['gateway_ip'] if ex_gw_port else None)
-        if ex_gw_ip:
-            external_dlname = self.get_external_device_name(ex_gw_port['id'])
-            rules.append('pass in on %s to %s:%s from any to !%s' %
-                         (internal_dlname, external_dlname, ex_gw_ip,
-                          port_subnet))
-        ipversion = netaddr.IPNetwork(port['subnet']['cidr']).version
-        ri.ipfilters_manager.remove_ipf_rules(rules, ipversion)
-
-        # remove the ippool
-        ri.ipfilters_manager.remove_ippool(block_pname, None)
-        if self.conf.allow_forwarding_between_networks:
-            ri.ipfilters_manager.remove_ippool(allow_pname, None)
+class EVSL3NATAgent(l3_agent.L3NATAgentWithStateReport):
+    OPTS = [
+        cfg.StrOpt('external_network_datalink', default='net0',
+                   help=_("Name of the datalink that connects to "
+                          "an external network.")),
+        cfg.BoolOpt('allow_forwarding_between_networks', default=False,
+                    help=_("Allow forwarding of packets between tenant's "
+                           "networks")),
+    ]
 
-        for internal_port in ri.internal_ports:
-            if (self.conf.allow_forwarding_between_networks and
-                    internal_port['tenant_id'] == port['tenant_id']):
-                iport_allow_pname = \
-                    self._get_ippool_name(internal_port['mac_address'], '0')
-                ri.ipfilters_manager.remove_ippool(iport_allow_pname,
-                                                   [port_subnet])
-            else:
-                iport_block_pname = \
-                    self._get_ippool_name(internal_port['mac_address'])
-                ri.ipfilters_manager.remove_ippool(iport_block_pname,
-                                                   [port_subnet])
+    def __init__(self, host, conf=None):
+        cfg.CONF.register_opts(self.OPTS)
+        cfg.CONF.register_opts(interface.OPTS)
+        super(EVSL3NATAgent, self).__init__(host=host, conf=conf)
+        cfg.CONF.register_opts(neutron_vpnaas.vpn_agent_opts, 'vpnagent')
+        self.service = vpn_service.VPNService(self)
+        self.device_drivers = self.service.load_device_drivers(host)
 
-        # if metadata proxy is enabled, then remove the IP NAT rules that
-        # were added while adding the internal network
-        if self.conf.enable_metadata_proxy and ipversion == 4:
-            rules = ['rdr %s 169.254.169.254/32 port 80 -> %s port %d tcp' %
-                     (internal_dlname, port['fixed_ips'][0]['ip_address'],
-                      self.conf.metadata_port)]
-            ri.ipfilters_manager.remove_nat_rules(rules)
+    def _router_added(self, router_id, router):
+        args = []
+        kwargs = {
+            'router_id': router_id,
+            'router': router,
+            'use_ipv6': self.use_ipv6,
+            'agent_conf': self.conf,
+            'interface_driver': self.driver,
+        }
+        ri = SolarisRouterInfo(*args, **kwargs)
+        registry.notify(resources.ROUTER, events.BEFORE_CREATE,
+                        self, router=ri)
 
-        if net_lib.Datalink.datalink_exists(internal_dlname):
-            self.driver.fini_l3(internal_dlname)
-            self.driver.unplug(internal_dlname)
+        self.router_info[router_id] = ri
 
-    def routes_updated(self, ri):
-        pass
+        ri.initialize(self.process_monitor)
--- a/components/openstack/neutron/files/agent/solaris/dhcp.py	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/neutron/files/agent/solaris/dhcp.py	Fri Feb 05 17:54:17 2016 -0500
@@ -16,346 +16,34 @@
 #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 #    License for the specific language governing permissions and limitations
 #    under the License.
-#
-# @author: Girish Moodalbail, Oracle, Inc.
 
 import abc
-import collections
-import os
-import re
-import shutil
-import socket
-import sys
-import uuid
+import netaddr
 
-import netaddr
 from oslo.config import cfg
-import six
+from oslo_log import log as logging
 
 from neutron.agent.linux import utils
+from neutron.agent.linux import dhcp
 from neutron.agent.solaris import net_lib
 from neutron.common import constants
 from neutron.common import exceptions
 from neutron.common import ipv6_utils
-from neutron.openstack.common import importutils
-from neutron.openstack.common import jsonutils
-from neutron.openstack.common import log as logging
-from neutron.openstack.common import uuidutils
+
 
 LOG = logging.getLogger(__name__)
 
-OPTS = [
-    cfg.StrOpt('dhcp_confs',
-               default='$state_path/dhcp',
-               help=_('Location to store DHCP server config files')),
-    cfg.StrOpt('dhcp_domain',
-               default='openstacklocal',
-               help=_('Domain to use for building the hostnames')),
-    cfg.StrOpt('dnsmasq_config_file',
-               default='',
-               help=_('Override the default dnsmasq settings with this file')),
-    cfg.ListOpt('dnsmasq_dns_servers',
-                help=_('Comma-separated list of the DNS servers which will be '
-                       'used as forwarders.'),
-                deprecated_name='dnsmasq_dns_server'),
-    cfg.BoolOpt('dhcp_delete_namespaces', default=False,
-                help=_("Delete namespace after removing a dhcp server.")),
-    cfg.IntOpt(
-        'dnsmasq_lease_max',
-        default=(2 ** 24),
-        help=_('Limit number of leases to prevent a denial-of-service.')),
-]
 
-IPV4 = 4
-IPV6 = 6
-UDP = 'udp'
-TCP = 'tcp'
-DNS_PORT = 53
-DHCPV4_PORT = 67
-DHCPV6_PORT = 547
-METADATA_DEFAULT_PREFIX = 16
-METADATA_DEFAULT_IP = '169.254.169.254'
-METADATA_DEFAULT_CIDR = '%s/%d' % (METADATA_DEFAULT_IP,
-                                   METADATA_DEFAULT_PREFIX)
-METADATA_PORT = 80
-WIN2k3_STATIC_DNS = 249
-
-
-class DictModel(dict):
-    """Convert dict into an object that provides attribute access to values."""
-
-    def __init__(self, *args, **kwargs):
-        """Convert dict values to DictModel values."""
-        super(DictModel, self).__init__(*args, **kwargs)
-
-        def needs_upgrade(item):
-            """Check if `item` is a dict and needs to be changed to DictModel.
-            """
-            return isinstance(item, dict) and not isinstance(item, DictModel)
-
-        def upgrade(item):
-            """Upgrade item if it needs to be upgraded."""
-            if needs_upgrade(item):
-                return DictModel(item)
-            else:
-                return item
-
-        for key, value in self.iteritems():
-            if isinstance(value, (list, tuple)):
-                # Keep the same type but convert dicts to DictModels
-                self[key] = type(value)(
-                    (upgrade(item) for item in value)
-                )
-            elif needs_upgrade(value):
-                # Change dict instance values to DictModel instance values
-                self[key] = DictModel(value)
-
-    def __getattr__(self, name):
-        try:
-            return self[name]
-        except KeyError as e:
-            raise AttributeError(e)
-
-    def __setattr__(self, name, value):
-        self[name] = value
-
-    def __delattr__(self, name):
-        del self[name]
-
-
-class NetModel(DictModel):
-
-    def __init__(self, use_namespaces, d):
-        super(NetModel, self).__init__(d)
-
-        self._ns_name = None
-
-    @property
-    def namespace(self):
-        return self._ns_name
-
-
[email protected]_metaclass(abc.ABCMeta)
-class DhcpBase(object):
-
-    def __init__(self, conf, network, root_helper='sudo',
-                 version=None, plugin=None):
-        self.conf = conf
-        self.network = network
-        self.root_helper = None
-        self.device_manager = DeviceManager(self.conf,
-                                            self.root_helper, plugin)
-        self.version = version
-
-    @abc.abstractmethod
-    def enable(self):
-        """Enables DHCP for this network."""
-
-    @abc.abstractmethod
-    def disable(self, retain_port=False):
-        """Disable dhcp for this network."""
-
-    def restart(self):
-        """Restart the dhcp service for the network."""
-        self.disable(retain_port=True)
-        self.enable()
-
-    @abc.abstractproperty
-    def active(self):
-        """Boolean representing the running state of the DHCP server."""
-
-    @abc.abstractmethod
-    def reload_allocations(self):
-        """Force the DHCP server to reload the assignment database."""
-
-    @classmethod
-    def existing_dhcp_networks(cls, conf, root_helper):
-        """Return a list of existing networks ids that we have configs for."""
-
-        raise NotImplementedError()
-
-    @classmethod
-    def check_version(cls):
-        """Execute version checks on DHCP server."""
-
-        raise NotImplementedError()
-
-    @classmethod
-    def get_isolated_subnets(cls, network):
-        """Returns a dict indicating whether or not a subnet is isolated"""
-        raise NotImplementedError()
-
-    @classmethod
-    def should_enable_metadata(cls, conf, network):
-        """True if the metadata-proxy should be enabled for the network."""
-        raise NotImplementedError()
-
-
-class DhcpLocalProcess(DhcpBase):
-    PORTS = []
+class Dnsmasq(dhcp.Dnsmasq):
+    """ Wrapper around Linux implementation of Dnsmasq."""
 
-    def _enable_dhcp(self):
-        """check if there is a subnet within the network with dhcp enabled."""
-        for subnet in self.network.subnets:
-            if subnet.enable_dhcp:
-                return True
-        return False
-
-    def enable(self):
-        """Enables DHCP for this network by spawning a local process."""
-        if self.active:
-            self.restart()
-        elif self._enable_dhcp():
-            interface_name = self.device_manager.setup(self.network)
-            self.interface_name = interface_name
-            self.spawn_process()
-
-    def disable(self, retain_port=False):
-        """Disable DHCP for this network by killing the local process."""
-        pid = self.pid
-
-        if pid:
-            if self.active:
-                cmd = ['kill', '-9', pid]
-                utils.execute(cmd, self.root_helper)
-            else:
-                LOG.debug(_('DHCP for %(net_id)s is stale, pid %(pid)d '
-                            'does not exist, performing cleanup'),
-                          {'net_id': self.network.id, 'pid': pid})
-            if not retain_port:
-                self.device_manager.destroy(self.network,
-                                            self.interface_name)
-        else:
-            LOG.debug(_('No DHCP started for %s'), self.network.id)
-
-        self._remove_config_files()
-
-    def _remove_config_files(self):
-        confs_dir = os.path.abspath(os.path.normpath(self.conf.dhcp_confs))
-        conf_dir = os.path.join(confs_dir, self.network.id)
-        shutil.rmtree(conf_dir, ignore_errors=True)
-
-    def get_conf_file_name(self, kind, ensure_conf_dir=False):
-        """Returns the file name for a given kind of config file."""
-        confs_dir = os.path.abspath(os.path.normpath(self.conf.dhcp_confs))
-        conf_dir = os.path.join(confs_dir, self.network.id)
-        if ensure_conf_dir:
-            if not os.path.isdir(conf_dir):
-                os.makedirs(conf_dir, 0o755)
-
-        return os.path.join(conf_dir, kind)
-
-    def _get_value_from_conf_file(self, kind, converter=None):
-        """A helper function to read a value from one of the state files."""
-        file_name = self.get_conf_file_name(kind)
-        msg = _('Error while reading %s')
-
-        try:
-            with open(file_name, 'r') as f:
-                try:
-                    return converter and converter(f.read()) or f.read()
-                except ValueError:
-                    msg = _('Unable to convert value in %s')
-        except IOError:
-            msg = _('Unable to access %s')
-
-        LOG.debug(msg % file_name)
-        return None
-
-    @property
-    def pid(self):
-        """Last known pid for the DHCP process spawned for this network."""
-        return self._get_value_from_conf_file('pid', int)
-
-    @property
-    def active(self):
-        pid = self.pid
-        if pid is None:
-            return False
+    def __init__(self, conf, network, process_monitor, version=None,
+                 plugin=None):
+        super(Dnsmasq, self).__init__(conf, network, process_monitor,
+                                      version, plugin)
+        self.device_manager = DeviceManager(self.conf, plugin)
 
-        cmd = ['/usr/bin/pargs', pid]
-        try:
-            return self.network.id in utils.execute(cmd)
-        except RuntimeError:
-            return False
-
-    @property
-    def interface_name(self):
-        return self._get_value_from_conf_file('interface')
-
-    @interface_name.setter
-    def interface_name(self, value):
-        interface_file_path = self.get_conf_file_name('interface',
-                                                      ensure_conf_dir=True)
-        utils.replace_file(interface_file_path, value)
-
-    @abc.abstractmethod
-    def spawn_process(self):
-        pass
-
-
-class Dnsmasq(DhcpLocalProcess):
-    # The ports that need to be opened when security policies are active
-    # on the Neutron port used for DHCP.  These are provided as a convenience
-    # for users of this class.
-    PORTS = {IPV4: [(UDP, DNS_PORT), (TCP, DNS_PORT), (UDP, DHCPV4_PORT)],
-             IPV6: [(UDP, DNS_PORT), (TCP, DNS_PORT), (UDP, DHCPV6_PORT)],
-             }
-
-    _TAG_PREFIX = 'tag%d'
-
-    NEUTRON_NETWORK_ID_KEY = 'NEUTRON_NETWORK_ID'
-    NEUTRON_RELAY_SOCKET_PATH_KEY = 'NEUTRON_RELAY_SOCKET_PATH'
-    MINIMUM_VERSION = 2.63
-    MINIMUM_IPV6_VERSION = 2.67
-
-    @classmethod
-    def check_version(cls):
-        ver = 0
-        try:
-            cmd = ['/usr/lib/inet/dnsmasq', '--version']
-            out = utils.execute(cmd)
-            ver = re.findall("\d+.\d+", out)[0]
-            is_valid_version = float(ver) >= cls.MINIMUM_VERSION
-            # For Solaris, we rely on the packaging system to ensure a
-            # matching/supported version of dnsmasq.
-            if not is_valid_version:
-                LOG.warning(_('FAILED VERSION REQUIREMENT FOR DNSMASQ. '
-                              'DHCP AGENT MAY NOT RUN CORRECTLY! '
-                              'Please ensure that its version is %s '
-                              'or above!'), cls.MINIMUM_VERSION)
-                raise SystemExit(1)
-            is_valid_version = float(ver) >= cls.MINIMUM_IPV6_VERSION
-            if not is_valid_version:
-                LOG.warning(_('FAILED VERSION REQUIREMENT FOR DNSMASQ. '
-                              'DHCP AGENT MAY NOT RUN CORRECTLY WHEN '
-                              'SERVING IPV6 STATEFUL SUBNETS! '
-                              'Please ensure that its version is %s '
-                              'or above!'), cls.MINIMUM_IPV6_VERSION)
-        except (OSError, RuntimeError, IndexError, ValueError):
-            LOG.warning(_('Unable to determine dnsmasq version. '
-                          'Please ensure that its version is %s '
-                          'or above!'), cls.MINIMUM_VERSION)
-            raise SystemExit(1)
-        return float(ver)
-
-    @classmethod
-    def existing_dhcp_networks(cls, conf, root_helper):
-        """Return a list of existing networks ids that we have configs for."""
-
-        confs_dir = os.path.abspath(os.path.normpath(conf.dhcp_confs))
-
-        return [
-            c for c in os.listdir(confs_dir)
-            if uuidutils.is_uuid_like(c)
-        ]
-
-    def spawn_process(self):
-        """Spawns a Dnsmasq process for the network."""
-        env = {
-            self.NEUTRON_NETWORK_ID_KEY: self.network.id,
-        }
-
+    def _build_cmdline_callback(self, pid_file):
         cmd = [
             '/usr/lib/inet/dnsmasq',
             '--no-hosts',
@@ -364,12 +52,12 @@
             '--bind-interfaces',
             '--interface=%s' % self.interface_name,
             '--except-interface=lo0',
-            '--pid-file=%s' % self.get_conf_file_name(
-                'pid', ensure_conf_dir=True),
-            '--dhcp-hostsfile=%s' % self._output_hosts_file(),
-            '--addn-hosts=%s' % self._output_addn_hosts_file(),
-            '--dhcp-optsfile=%s' % self._output_opts_file(),
+            '--pid-file=%s' % pid_file,
+            '--dhcp-hostsfile=%s' % self.get_conf_file_name('host'),
+            '--addn-hosts=%s' % self.get_conf_file_name('addn_hosts'),
+            '--dhcp-optsfile=%s' % self.get_conf_file_name('opts'),
             '--leasefile-ro',
+            '--dhcp-authoritative'
         ]
 
         possible_leases = 0
@@ -422,6 +110,12 @@
                                 cidr.prefixlen, lease))
                 possible_leases += cidr.size
 
+        if cfg.CONF.advertise_mtu:
+            mtu = self.network.mtu
+            # Do not advertise unknown mtu
+            if mtu > 0:
+                cmd.append('--dhcp-option-force=option:mtu,%d' % mtu)
+
         # Cap the limit because creating lots of subnets can inflate
         # this possible lease cap.
         cmd.append('--dhcp-lease-max=%d' %
@@ -436,384 +130,33 @@
         if self.conf.dhcp_domain:
             cmd.append('--domain=%s' % self.conf.dhcp_domain)
 
-        # TODO(gmoodalb): prepend the env vars before command
-        utils.execute(cmd, self.root_helper)
+        if self.conf.dhcp_broadcast_reply:
+            cmd.append('--dhcp-broadcast')
+
+        return cmd
 
     def _release_lease(self, mac_address, ip):
         """Release a DHCP lease."""
         cmd = ['/usr/lib/inet/dhcp_release', self.interface_name,
                ip, mac_address]
-        utils.execute(cmd, self.root_helper)
-
-    def reload_allocations(self):
-        """Rebuild the dnsmasq config and signal the dnsmasq to reload."""
-
-        # If all subnets turn off dhcp, kill the process.
-        if not self._enable_dhcp():
-            self.disable()
-            LOG.debug(_('Killing dhcpmasq for network since all subnets have '
-                        'turned off DHCP: %s'), self.network.id)
-            return
-
-        self._release_unused_leases()
-        self._output_hosts_file()
-        self._output_addn_hosts_file()
-        self._output_opts_file()
-        if self.active:
-            cmd = ['kill', '-HUP', self.pid]
-            utils.execute(cmd, self.root_helper)
-        else:
-            LOG.debug(_('Pid %d is stale, relaunching dnsmasq'), self.pid)
-        LOG.debug(_('Reloading allocations for network: %s'), self.network.id)
-        self.device_manager.update(self.network, self.interface_name)
-
-    def _iter_hosts(self):
-        """Iterate over hosts.
-
-        For each host on the network we yield a tuple containing:
-        (
-            port,  # a DictModel instance representing the port.
-            alloc,  # a DictModel instance of the allocated ip and subnet.
-            host_name,  # Host name.
-            name,  # Canonical hostname in the format 'hostname[.domain]'.
-        )
-        """
-        v6_nets = dict((subnet.id, subnet) for subnet in
-                       self.network.subnets if subnet.ip_version == 6)
-        for port in self.network.ports:
-            for alloc in port.fixed_ips:
-                # Note(scollins) Only create entries that are
-                # associated with the subnet being managed by this
-                # dhcp agent
-                if alloc.subnet_id in v6_nets:
-                    addr_mode = v6_nets[alloc.subnet_id].ipv6_address_mode
-                    if addr_mode != constants.DHCPV6_STATEFUL:
-                        continue
-                hostname = 'host-%s' % alloc.ip_address.replace(
-                    '.', '-').replace(':', '-')
-                fqdn = hostname
-                if self.conf.dhcp_domain:
-                    fqdn = '%s.%s' % (fqdn, self.conf.dhcp_domain)
-                yield (port, alloc, hostname, fqdn)
-
-    def _output_hosts_file(self):
-        """Writes a dnsmasq compatible dhcp hosts file.
-
-        The generated file is sent to the --dhcp-hostsfile option of dnsmasq,
-        and lists the hosts on the network which should receive a dhcp lease.
-        Each line in this file is in the form::
-
-            'mac_address,FQDN,ip_address'
-
-        IMPORTANT NOTE: a dnsmasq instance does not resolve hosts defined in
-        this file if it did not give a lease to a host listed in it (e.g.:
-        multiple dnsmasq instances on the same network if this network is on
-        multiple network nodes). This file is only defining hosts which
-        should receive a dhcp lease, the hosts resolution in itself is
-        defined by the `_output_addn_hosts_file` method.
-        """
-        buf = six.StringIO()
-        filename = self.get_conf_file_name('host')
-
-        LOG.debug(_('Building host file: %s'), filename)
-        for (port, alloc, hostname, name) in self._iter_hosts():
-            # (dzyu) Check if it is legal ipv6 address, if so, need wrap
-            # it with '[]' to let dnsmasq to distinguish MAC address from
-            # IPv6 address.
-            ip_address = alloc.ip_address
-            if netaddr.valid_ipv6(ip_address):
-                ip_address = '[%s]' % ip_address
-
-            LOG.debug(_('Adding %(mac)s : %(name)s : %(ip)s'),
-                      {"mac": port.mac_address, "name": name,
-                       "ip": ip_address})
-
-            if getattr(port, 'extra_dhcp_opts', False):
-                buf.write('%s,%s,%s,%s%s\n' %
-                          (port.mac_address, name, ip_address,
-                           'set:', port.id))
-            else:
-                buf.write('%s,%s,%s\n' %
-                          (port.mac_address, name, ip_address))
-
-        utils.replace_file(filename, buf.getvalue())
-        LOG.debug(_('Done building host file %s'), filename)
-        return filename
-
-    def _read_hosts_file_leases(self, filename):
-        leases = set()
-        if os.path.exists(filename):
-            with open(filename) as f:
-                for l in f.readlines():
-                    host = l.strip().split(',')
-                    leases.add((host[2], host[0]))
-        return leases
-
-    def _release_unused_leases(self):
-        filename = self.get_conf_file_name('host')
-        old_leases = self._read_hosts_file_leases(filename)
-
-        new_leases = set()
-        for port in self.network.ports:
-            for alloc in port.fixed_ips:
-                new_leases.add((alloc.ip_address, port.mac_address))
-
-        for ip, mac in old_leases - new_leases:
-            self._release_lease(mac, ip)
-
-    def _output_addn_hosts_file(self):
-        """Writes a dnsmasq compatible additional hosts file.
-
-        The generated file is sent to the --addn-hosts option of dnsmasq,
-        and lists the hosts on the network which should be resolved even if
-        the dnsmaq instance did not give a lease to the host (see the
-        `_output_hosts_file` method).
-        Each line in this file is in the same form as a standard /etc/hosts
-        file.
-        """
-        buf = six.StringIO()
-        for (port, alloc, hostname, fqdn) in self._iter_hosts():
-            # It is compulsory to write the `fqdn` before the `hostname` in
-            # order to obtain it in PTR responses.
-            buf.write('%s\t%s %s\n' % (alloc.ip_address, fqdn, hostname))
-        addn_hosts = self.get_conf_file_name('addn_hosts')
-        utils.replace_file(addn_hosts, buf.getvalue())
-        return addn_hosts
-
-    def _output_opts_file(self):
-        """Write a dnsmasq compatible options file."""
-
-        if self.conf.enable_isolated_metadata:
-            subnet_to_interface_ip = self._make_subnet_interface_ip_map()
-
-        options = []
-
-        isolated_subnets = self.get_isolated_subnets(self.network)
-        dhcp_ips = collections.defaultdict(list)
-        subnet_idx_map = {}
-        for i, subnet in enumerate(self.network.subnets):
-            if (not subnet.enable_dhcp or
-                (subnet.ip_version == 6 and
-                 getattr(subnet, 'ipv6_address_mode', None)
-                 in [None, constants.IPV6_SLAAC])):
-                continue
-            if subnet.dns_nameservers:
-                options.append(
-                    self._format_option(
-                        subnet.ip_version, i, 'dns-server',
-                        ','.join(
-                            Dnsmasq._convert_to_literal_addrs(
-                                subnet.ip_version, subnet.dns_nameservers))))
-            else:
-                # use the dnsmasq ip as nameservers only if there is no
-                # dns-server submitted by the server
-                subnet_idx_map[subnet.id] = i
-
-            if self.conf.dhcp_domain and subnet.ip_version == 6:
-                options.append('tag:tag%s,option6:domain-search,%s' %
-                               (i, ''.join(self.conf.dhcp_domain)))
-
-            gateway = subnet.gateway_ip
-            host_routes = []
-            for hr in subnet.host_routes:
-                if hr.destination == "0.0.0.0/0":
-                    if not gateway:
-                        gateway = hr.nexthop
-                else:
-                    host_routes.append("%s,%s" % (hr.destination, hr.nexthop))
-
-            # Add host routes for isolated network segments
-
-            if (isolated_subnets[subnet.id] and
-                    self.conf.enable_isolated_metadata and
-                    subnet.ip_version == 4):
-                subnet_dhcp_ip = subnet_to_interface_ip[subnet.id]
-                host_routes.append(
-                    '%s/32,%s' % (METADATA_DEFAULT_IP, subnet_dhcp_ip)
-                )
-
-            if subnet.ip_version == 4:
-                if host_routes:
-                    if gateway:
-                        host_routes.append("%s,%s" % ("0.0.0.0/0", gateway))
-                    options.append(
-                        self._format_option(subnet.ip_version, i,
-                                            'classless-static-route',
-                                            ','.join(host_routes)))
-                    options.append(
-                        self._format_option(subnet.ip_version, i,
-                                            WIN2k3_STATIC_DNS,
-                                            ','.join(host_routes)))
-
-                if gateway:
-                    options.append(self._format_option(subnet.ip_version,
-                                                       i, 'router',
-                                                       gateway))
-                else:
-                    options.append(self._format_option(subnet.ip_version,
-                                                       i, 'router'))
-
-        for port in self.network.ports:
-            if getattr(port, 'extra_dhcp_opts', False):
-                for ip_version in (4, 6):
-                    if any(
-                        netaddr.IPAddress(ip.ip_address).version == ip_version
-                            for ip in port.fixed_ips):
-                        options.extend(
-                            # TODO(xuhanp):Instead of applying extra_dhcp_opts
-                            # to both DHCPv4 and DHCPv6, we need to find a new
-                            # way to specify options for v4 and v6
-                            # respectively. We also need to validate the option
-                            # before applying it.
-                            self._format_option(ip_version, port.id,
-                                                opt.opt_name, opt.opt_value)
-                            for opt in port.extra_dhcp_opts)
-
-            # provides all dnsmasq ip as dns-server if there is more than
-            # one dnsmasq for a subnet and there is no dns-server submitted
-            # by the server
-            if port.device_owner == constants.DEVICE_OWNER_DHCP:
-                for ip in port.fixed_ips:
-                    i = subnet_idx_map.get(ip.subnet_id)
-                    if i is None:
-                        continue
-                    dhcp_ips[i].append(ip.ip_address)
-
-        for i, ips in dhcp_ips.items():
-            for ip_version in (4, 6):
-                vx_ips = [ip for ip in ips
-                          if netaddr.IPAddress(ip).version == ip_version]
-                if vx_ips:
-                    options.append(
-                        self._format_option(
-                            ip_version, i, 'dns-server',
-                            ','.join(
-                                Dnsmasq._convert_to_literal_addrs(ip_version,
-                                                                  vx_ips))))
-
-        name = self.get_conf_file_name('opts')
-        utils.replace_file(name, '\n'.join(options))
-        return name
+        utils.execute(cmd)
 
     def _make_subnet_interface_ip_map(self):
         # TODO(gmoodalb): need to complete this when we support metadata
+        # in neutron-dhcp-agent as-well for isolated subnets
         pass
 
-    def _format_option(self, ip_version, tag, option, *args):
-        """Format DHCP option by option name or code."""
-        option = str(option)
-
-        if isinstance(tag, int):
-            tag = self._TAG_PREFIX % tag
-
-        if not option.isdigit():
-            if ip_version == 4:
-                option = 'option:%s' % option
-            else:
-                option = 'option6:%s' % option
-
-        return ','.join(('tag:' + tag, '%s' % option) + args)
-
-    @staticmethod
-    def _convert_to_literal_addrs(ip_version, ips):
-        if ip_version == 4:
-            return ips
-        return ['[' + ip + ']' for ip in ips]
-
-    @classmethod
-    def get_isolated_subnets(cls, network):
-        """Returns a dict indicating whether or not a subnet is isolated
-
-        A subnet is considered non-isolated if there is a port connected to
-        the subnet, and the port's ip address matches that of the subnet's
-        gateway. The port must be owned by a nuetron router.
-        """
-        isolated_subnets = collections.defaultdict(lambda: True)
-        subnets = dict((subnet.id, subnet) for subnet in network.subnets)
-
-        for port in network.ports:
-            if port.device_owner != constants.DEVICE_OWNER_ROUTER_INTF:
-                continue
-            for alloc in port.fixed_ips:
-                if subnets[alloc.subnet_id].gateway_ip == alloc.ip_address:
-                    isolated_subnets[alloc.subnet_id] = False
-
-        return isolated_subnets
-
     @classmethod
     def should_enable_metadata(cls, conf, network):
-        """True if there exists a subnet for which a metadata proxy is needed
-        """
+        # TODO(gmoodalb): need to complete this when we support metadata
+        # in neutron-dhcp-agent as-well for isolated subnets
         return False
 
-    @classmethod
-    def lease_update(cls):
-        network_id = os.environ.get(cls.NEUTRON_NETWORK_ID_KEY)
-        dhcp_relay_socket = os.environ.get(cls.NEUTRON_RELAY_SOCKET_PATH_KEY)
-
-        action = sys.argv[1]
-        if action not in ('add', 'del', 'old'):
-            sys.exit()
-
-        mac_address = sys.argv[2]
-        ip_address = sys.argv[3]
-
-        if action == 'del':
-            lease_remaining = 0
-        else:
-            lease_remaining = int(os.environ.get('DNSMASQ_TIME_REMAINING', 0))
-
-        data = dict(network_id=network_id, mac_address=mac_address,
-                    ip_address=ip_address, lease_remaining=lease_remaining)
-
-        if os.path.exists(dhcp_relay_socket):
-            sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
-            sock.connect(dhcp_relay_socket)
-            sock.send(jsonutils.dumps(data))
-            sock.close()
-
 
-class DeviceManager(object):
-
-    def __init__(self, conf, root_helper, plugin):
-        self.conf = conf
-        self.root_helper = root_helper
-        self.plugin = plugin
-        if not conf.interface_driver:
-            msg = _('An interface driver must be specified')
-            LOG.error(msg)
-            raise SystemExit(1)
-        try:
-            self.driver = importutils.import_object(
-                conf.interface_driver, conf)
-        except Exception as e:
-            msg = (_("Error importing interface driver '%(driver)s': "
-                   "%(inner)s") % {'driver': conf.interface_driver,
-                                   'inner': e})
-            LOG.error(msg)
-            raise SystemExit(1)
+class DeviceManager(dhcp.DeviceManager):
 
-    def get_interface_name(self, network, port):
-        """Return interface(device) name for use by the DHCP process."""
-        return self.driver.get_device_name(port)
-
-    def get_device_id(self, network):
-        """Return a unique DHCP device ID for this host on the network."""
-        # There could be more than one dhcp server per network, so create
-        # a device id that combines host and network ids
-
-        host_uuid = uuid.uuid5(uuid.NAMESPACE_DNS, socket.gethostname())
-        return 'dhcp%s-%s' % (host_uuid, network.id)
-
-    def _set_default_route(self, network, device_name):
-        """Sets the default gateway for this dhcp namespace.
-
-        This method is idempotent and will only adjust the route if adjusting
-        it would change it from what it already is.  This makes it safe to call
-        and avoids unnecessary perturbation of the system.
-        """
-        # we do not support namespaces
-        pass
+    def __init__(self, conf, plugin):
+        super(DeviceManager, self).__init__(conf, plugin)
 
     def setup_dhcp_port(self, network):
         """Create/update DHCP port for the host if needed and return port."""
@@ -861,8 +204,8 @@
 
         # check for a reserved DHCP port
         if dhcp_port is None:
-            LOG.debug(_('DHCP port %(device_id)s on network %(network_id)s'
-                        ' does not yet exist. Checking for a reserved port.'),
+            LOG.debug('DHCP port %(device_id)s on network %(network_id)s'
+                      ' does not yet exist. Checking for a reserved port.',
                       {'device_id': device_id, 'network_id': network.id})
             for port in network.ports:
                 port_device_id = getattr(port, 'device_id', None)
@@ -875,9 +218,9 @@
 
         # DHCP port has not yet been created.
         if dhcp_port is None:
-            LOG.debug(_('DHCP port %(device_id)s on network %(network_id)s'
-                        ' does not yet exist.'), {'device_id': device_id,
-                                                  'network_id': network.id})
+            LOG.debug('DHCP port %(device_id)s on network %(network_id)s'
+                      ' does not yet exist.', {'device_id': device_id,
+                                               'network_id': network.id})
             port_dict = dict(
                 name='',
                 admin_state_up=True,
@@ -896,7 +239,7 @@
                           subnet=subnets[fixed_ip.subnet_id])
                      for fixed_ip in dhcp_port.fixed_ips]
 
-        ips = [DictModel(item) if isinstance(item, dict) else item
+        ips = [dhcp.DictModel(item) if isinstance(item, dict) else item
                for item in fixed_ips]
         dhcp_port.fixed_ips = ips
 
@@ -908,7 +251,7 @@
         interface_name = self.get_interface_name(network, port)
 
         if net_lib.Datalink.datalink_exists(interface_name):
-            LOG.debug(_('Reusing existing device: %s.'), interface_name)
+            LOG.debug('Reusing existing device: %s.', interface_name)
         else:
             self.driver.plug(network.tenant_id, network.id,
                              port.id, interface_name)
@@ -923,21 +266,10 @@
             else:
                 addrconf = True
 
-        if (self.conf.enable_isolated_metadata and
-                self.conf.use_namespaces):
-            ip_cidrs.append(METADATA_DEFAULT_CIDR)
-
-        self.driver.init_l3(interface_name, ip_cidrs, addrconf=addrconf)
-
-        if self.conf.use_namespaces:
-            self._set_default_route(network, interface_name)
+            self.driver.init_l3(interface_name, ip_cidrs, addrconf=addrconf)
 
         return interface_name
 
-    def update(self, network, device_name):
-        """Update device settings for the network's DHCP on this host."""
-        pass
-
     def destroy(self, network, device_name):
         """Destroy the device used for the network's DHCP on this host."""
 
--- a/components/openstack/neutron/files/agent/solaris/interface.py	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/neutron/files/agent/solaris/interface.py	Fri Feb 05 17:54:17 2016 -0500
@@ -14,16 +14,17 @@
 #
 # @author: Girish Moodalbail, Oracle, Inc.
 
-import rad.bindings.com.oracle.solaris.rad.evscntl_1 as evsbind
+
 import rad.client as radcli
 import rad.connect as radcon
+import rad.bindings.com.oracle.solaris.rad.evscntl_1 as evsbind
 
-from oslo.config import cfg
+from oslo_config import cfg
+from oslo_log import log as logging
 
 from neutron.agent.linux import utils
 from neutron.agent.solaris import net_lib
 from neutron.common import exceptions
-from neutron.openstack.common import log as logging
 
 
 LOG = logging.getLogger(__name__)
--- a/components/openstack/neutron/files/agent/solaris/net_lib.py	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/neutron/files/agent/solaris/net_lib.py	Fri Feb 05 17:54:17 2016 -0500
@@ -196,7 +196,8 @@
             cmd = ['/usr/sbin/dladm', 'show-linkprop', '-co', 'value',
                    '-p', 'default_tag', lower_link]
             stdout = utils.execute(cmd)
-            if stdout.splitlines()[0].strip() == vid:
+            default_tag = stdout.splitlines()[0].strip()
+            if default_tag == vid or (vid == '1' and default_tag == '0'):
                 vid = '0'
         else:
             vid = '0'
--- a/components/openstack/neutron/files/agent/solaris/ra.py	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/neutron/files/agent/solaris/ra.py	Fri Feb 05 17:54:17 2016 -0500
@@ -19,12 +19,12 @@
 
 import jinja2
 import netaddr
-from oslo.config import cfg
+from oslo_config import cfg
+from oslo_log import log as logging
 import six
 
 from neutron.agent.linux import utils
 from neutron.common import constants
-from neutron.openstack.common import log as logging
 
 
 LOG = logging.getLogger(__name__)
@@ -60,54 +60,63 @@
     """ {% endif %} """)
 
 
-def _generate_ndpd_conf(router_id, router_ports, dev_name_helper):
-    ndpd_conf = utils.get_conf_file_name(cfg.CONF.ra_confs, router_id,
-                                         'ndpd.conf', True)
-    buf = six.StringIO()
-    for p in router_ports:
-        prefix = p['subnet']['cidr']
-        if netaddr.IPNetwork(prefix).version == 6:
-            interface_name = dev_name_helper(p['id'])
-            ra_mode = p['subnet']['ipv6_ra_mode']
-            buf.write('%s\n' % CONFIG_TEMPLATE.render(
-                ra_mode=ra_mode,
-                interface_name=interface_name,
-                prefix=prefix,
-                constants=constants))
+class NDPD(object):
+    """Manage the data and state of Solaris in.ndpd daemon"""
+
+    def __init__(self, router_id, dev_name_helper):
+        self._router_id = router_id
+        self._dev_name_helper = dev_name_helper
 
-    utils.replace_file(ndpd_conf, buf.getvalue())
-    return ndpd_conf
+    def _generate_ndpd_conf(self, router_ports):
+        ndpd_conf = utils.get_conf_file_name(cfg.CONF.ra_confs,
+                                             self._router_id,
+                                             'ndpd.conf', True)
+        buf = six.StringIO()
+        for p in router_ports:
+            prefix = p['subnets'][0]['cidr']
+            if netaddr.IPNetwork(prefix).version == 6:
+                interface_name = self._dev_name_helper(p['id'])
+                ra_mode = p['subnets'][0]['ipv6_ra_mode']
+                buf.write('%s\n' % CONFIG_TEMPLATE.render(
+                    ra_mode=ra_mode,
+                    interface_name=interface_name,
+                    prefix=prefix,
+                    constants=constants))
 
+        utils.replace_file(ndpd_conf, buf.getvalue())
+        return ndpd_conf
 
-def _refresh_ndpd(ndpd_conf):
-    cmd = ['/usr/sbin/svccfg', '-s', NDP_SMF_FMRI, 'setprop',
-           'routing/config_file', '=', ndpd_conf]
-    utils.execute(cmd)
-    # this is needed to reflect the routing/config_file property
-    # in svcprop output
-    cmd = ['/usr/sbin/svccfg', '-s', NDP_SMF_FMRI, 'refresh']
-    utils.execute(cmd)
-    # ndpd SMF service doesn't support refresh method, so we
-    # need to restart
-    cmd = ['/usr/sbin/svcadm', 'restart', NDP_SMF_FMRI]
-    utils.execute(cmd)
-    LOG.debug(_("ndpd daemon has been refreshed to re-read the "
-                "configuration file"))
-
+    def _refresh_ndpd(self, ndpd_conf):
+        cmd = ['/usr/sbin/svccfg', '-s', NDP_SMF_FMRI, 'setprop',
+               'routing/config_file', '=', ndpd_conf]
+        utils.execute(cmd)
+        cmd = ['/usr/sbin/svccfg', '-s', NDP_SMF_FMRI, 'refresh']
+        utils.execute(cmd)
+        # ndpd SMF service doesn't support refresh method, so we
+        # need to restart
+        cmd = ['/usr/sbin/svcadm', 'restart', NDP_SMF_FMRI]
+        utils.execute(cmd)
+        LOG.debug(_("ndpd daemon has been refreshed to re-read the "
+                    "configuration file"))
 
-def enable_ipv6_ra(router_id, router_ports, dev_name_helper):
-    for p in router_ports:
-        if netaddr.IPNetwork(p['subnet']['cidr']).version == 6:
-            break
-    else:
-        disable_ipv6_ra(router_id)
-        return
-    LOG.debug("enabling ndpd for router %s", router_id)
-    ndpd_conf = _generate_ndpd_conf(router_id, router_ports, dev_name_helper)
-    _refresh_ndpd(ndpd_conf)
+    def enable(self, router_ports):
+        for p in router_ports:
+            if netaddr.IPNetwork(p['subnets'][0]['cidr']).version == 6:
+                break
+        else:
+            self.disable()
+            return
+        LOG.debug("enabling ndpd for router %s", self._router_id)
+        ndpd_conf = self._generate_ndpd_conf(router_ports)
+        self._refresh_ndpd(ndpd_conf)
 
+    def disable(self):
+        LOG.debug("disabling ndpd for router %s", self._router_id)
+        utils.remove_conf_files(cfg.CONF.ra_confs, self._router_id)
+        self._refresh_ndpd("")
 
-def disable_ipv6_ra(router_id):
-    LOG.debug("disabling ndpd for router %s", router_id)
-    utils.remove_conf_files(cfg.CONF.ra_confs, router_id)
-    _refresh_ndpd("")
+    @property
+    def enabled(self):
+        cmd = ['/usr/bin/svcs', '-H', '-o', 'state', NDP_SMF_FMRI]
+        stdout = utils.execute(cmd)
+        return 'online' in stdout
--- a/components/openstack/neutron/files/dhcp_agent.ini	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/neutron/files/dhcp_agent.ini	Fri Feb 05 17:54:17 2016 -0500
@@ -9,7 +9,23 @@
 
 # The DHCP agent requires an interface driver be set. Choose the one that best
 # matches your plugin.
-# Solaris Elastic Virtual Switch (EVS)
+
+# Example of interface_driver option for OVS based plugins(OVS, Ryu, NEC, NVP,
+# BigSwitch/Floodlight)
+# interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
+
+# Name of Open vSwitch bridge to use
+# ovs_integration_bridge = br-int
+
+# Use veth for an OVS interface or not.
+# Support kernels with limited namespace support
+# (e.g. RHEL 6.5) so long as ovs_use_veth is set to True.
+# ovs_use_veth = False
+
+# Example of interface_driver option for LinuxBridge
+# interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
+
+# Interface driver for Solaris Elastic Virtual Switch (EVS)
 interface_driver = neutron.agent.solaris.interface.SolarisVNICDriver
 
 # The agent can use other DHCP drivers.  Dnsmasq is the simplest and requires
@@ -17,7 +33,9 @@
 dhcp_driver = neutron.agent.solaris.dhcp.Dnsmasq
 
 # Allow overlapping IP (Must have kernel build with CONFIG_NET_NS=y and
-# iproute2 package that supports namespaces).
+# iproute2 package that supports namespaces). This option is deprecated and
+# will be removed in a future release, at which point the old behavior of
+# use_namespaces = True will be enforced.
 use_namespaces = False
 
 # The DHCP server can assist with providing metadata support on isolated
@@ -58,8 +76,8 @@
 # Location to DHCP lease relay UNIX domain socket
 # dhcp_lease_relay_socket = $state_path/dhcp/lease_relay
 
-# Location of Metadata Proxy UNIX domain socket
-# metadata_proxy_socket = $state_path/metadata_proxy
+# Use broadcast in DHCP replies
+# dhcp_broadcast_reply = False
 
 # dhcp_delete_namespaces, which is false by default, can be set to True if
 # namespaces can be deleted cleanly on the host running the dhcp agent.
@@ -69,9 +87,9 @@
 # If True, namespaces will be deleted when a dhcp server is disabled.
 # dhcp_delete_namespaces = False
 
-# DeviceManager provides methods to setup/destroy dhcp ports on the
-# host running DHCP agent
-devicemanager = neutron.agent.solaris.device.DeviceManager
+# Timeout for ovs-vsctl commands.
+# If the timeout expires, ovs commands will fail with ALARMCLOCK error.
+# ovs_vsctl_timeout = 10
 
 # An URI that specifies an EVS controller. It is of the form
 # ssh://user@hostname, where user is the username to use to connect
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/neutron/files/evs/migrate/neutron-kilo-migration.py	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,59 @@
+#!/usr/bin/python2.7
+#
+# Copyright (c) 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.
+
+#
+# This script updates the schema for networks, subnets and agents table.
+# This is needed since we do not run Juno to Kilo alembic migrations.
+#
+
+from alembic.migration import MigrationContext
+from alembic.operations import Operations
+import ConfigParser
+import sqlalchemy as sa
+
+
+def main():
+    print "Start Kilo migrations."
+    print "Add new parameters to networks, subnets and agents table."
+
+    config = ConfigParser.RawConfigParser()
+    config.readfp(open("/etc/neutron/neutron.conf"))
+    if config.has_option("database", 'connection'):
+        SQL_CONNECTION = config.get("database", 'connection')
+        neutron_engine = sa.create_engine(SQL_CONNECTION)
+        conn = neutron_engine.connect()
+        ctx = MigrationContext.configure(conn)
+        op = Operations(ctx)
+
+        op.add_column('networks', sa.Column('mtu', sa.Integer(),
+                      nullable=True))
+        op.add_column('networks', sa.Column('vlan_transparent', sa.Boolean(),
+                      nullable=True))
+        op.add_column('agents', sa.Column('load', sa.Integer(),
+                      server_default='0', nullable=False))
+        op.add_column('subnets',
+                      sa.Column('subnetpool_id',
+                                sa.String(length=36),
+                                nullable=True,
+                                index=True))
+    else:
+        print "\nNo database connection found."
+
+    print "\nEnd Migration."
+
+
+if __name__ == '__main__':
+    main()
--- a/components/openstack/neutron/files/evs/plugin.py	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/neutron/files/evs/plugin.py	Fri Feb 05 17:54:17 2016 -0500
@@ -1,6 +1,6 @@
 # vim: tabstop=4 shiftwidth=4 softtabstop=4
 
-# 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
@@ -16,15 +16,15 @@
 #
 # @author: Girish Moodalbail, Oracle, Inc.
 
-import time
-
 import rad.client as radcli
 import rad.connect as radcon
 import rad.bindings.com.oracle.solaris.rad.evscntl_1 as evsbind
 
-from oslo.config import cfg
-from oslo.db import exception as os_db_exc
-from sqlalchemy import exc as sqla_exc
+from oslo_concurrency import lockutils
+from oslo_config import cfg
+from oslo_db import api as oslo_db_api
+from oslo_log import log as logging
+from oslo_utils import importutils
 
 from neutron.api.rpc.agentnotifiers import dhcp_rpc_agent_api
 from neutron.api.rpc.agentnotifiers import l3_rpc_agent_api
@@ -40,20 +40,34 @@
 from neutron.db import api as db
 from neutron.db import db_base_plugin_v2
 from neutron.db import external_net_db
+from neutron.db import l3_agentschedulers_db
+from neutron.db import l3_attrs_db
 from neutron.db import l3_gwmode_db
 from neutron.db import model_base
 from neutron.db import models_v2
+from neutron.db import portbindings_db
 from neutron.db import quota_db
+from neutron.db import securitygroups_db
 from neutron.extensions import external_net
 from neutron.extensions import providernet
-from neutron.openstack.common import importutils
-from neutron.openstack.common import lockutils
-from neutron.openstack.common import log as logging
 from neutron.plugins.common import constants as svc_constants
+from neutron.plugins.ml2 import models
 
 LOG = logging.getLogger(__name__)
-MAX_RETRIES = 10
-RETRY_INTERVAL = 2
+# Only import the vpn server code if it exists.
+try:
+    sp = cfg.CONF.service_plugins
+    vpns = 'vpnaas'
+    if vpns in sp:
+        try:
+            from neutron_vpnaas.db.vpn import vpn_db
+            LOG.debug("Loading VPNaaS service driver.")
+        except ImportError:
+            pass
+    else:
+        LOG.debug("vpnaas service_plugin not configured")
+except:
+    pass
 
 evs_controller_opts = [
     cfg.StrOpt('evs_controller', default='ssh://evsuser@localhost',
@@ -84,6 +98,7 @@
 class EVSNeutronPluginV2(db_base_plugin_v2.NeutronDbPluginV2,
                          agentschedulers_db.DhcpAgentSchedulerDbMixin,
                          external_net_db.External_net_db_mixin,
+                         l3_agentschedulers_db.L3AgentSchedulerDbMixin,
                          l3_gwmode_db.L3_NAT_db_mixin):
     """Implements v2 Neutron Plug-in API specification.
 
@@ -148,6 +163,7 @@
 
     _supported_extension_aliases = ["provider", "external-net", "router",
                                     "ext-gw-mode", "quotas", "agent",
+                                    "l3_agent_scheduler",
                                     "dhcp_agent_scheduler"]
 
     def __init__(self):
@@ -157,7 +173,9 @@
         self.network_scheduler = importutils.import_object(
             cfg.CONF.network_scheduler_driver
         )
-
+        self.router_scheduler = importutils.import_object(
+            cfg.CONF.router_scheduler_driver
+        )
         self._setup_rpc()
         self._rad_connection = None
 
@@ -573,7 +591,24 @@
             raise EVSControllerError(oe.get_payload().errmsg)
         return vport
 
-    def _create_port_db(self, context, port):
+    @oslo_db_api.wrap_db_retry(max_retries=db.MAX_RETRIES,
+                               retry_on_request=True,
+                               retry_on_deadlock=True)
+    def create_port(self, context, port):
+        """Creates a port(VPort) for a given network(EVS).
+
+         A VPort represents the point of attachment between the VNIC and an
+         EVS. It encapsulates various network configuration parameters such as
+             -- SLAs (maxbw, cos, and priority)
+             -- IP address and
+             -- MAC address, et al
+         This configuration is inherited by the VNIC when it connects to the
+         VPort.
+        """
+        if port['port']['admin_state_up'] is False:
+            raise EVSOpNotSupported(_("setting admin_state_up=False for a "
+                                      "port not supported"))
+
         with context.session.begin(subtransactions=True):
             # for external gateway ports and floating ips, tenant_id
             # is not set, but EVS does not like it.
@@ -605,44 +640,8 @@
 
             self._evs_controller_addVPort(tenantname, evs_id, vportname,
                                           ",".join(proplist))
-
         return db_port
 
-    def create_port(self, context, port):
-        """Creates a port(VPort) for a given network(EVS).
-
-         A VPort represents the point of attachment between the VNIC and an
-         EVS. It encapsulates various network configuration parameters such as
-             -- SLAs (maxbw, cos, and priority)
-             -- IP address and
-             -- MAC address, et al
-         This configuration is inherited by the VNIC when it connects to the
-         VPort.
-        """
-        if port['port']['admin_state_up'] is False:
-            raise EVSOpNotSupported(_("setting admin_state_up=False for a "
-                                      "port not supported"))
-
-        exc = None
-        for attempt in xrange(1, MAX_RETRIES):
-            try:
-                return self._create_port_db(context, port)
-            except os_db_exc.DBDeadlock as exc:
-                LOG.debug(_("Found %s. Restarting the transaction. "
-                            "Attempt: %s") % (exc, attempt))
-                time.sleep(RETRY_INTERVAL)
-            except sqla_exc.OperationalError as exc:
-                if ('timeout' in exc.message.lower() or
-                        'restart' in exc.message.lower()):
-                    LOG.debug(_("Found %s. Restarting the transaction. "
-                                "Attempt: %s") % (exc, attempt))
-                    time.sleep(RETRY_INTERVAL)
-                    continue
-                raise
-        else:
-            assert exc is not None
-            raise exc
-
     def update_port(self, context, id, port):
         # EVS does not allow updating certain attributes, so check for it
         state = port['port'].get('admin_state_up')
@@ -664,7 +663,6 @@
         LOG.debug(_("Updating port %s with %s") % (id, port))
         db_port = super(EVSNeutronPluginV2, self).update_port(context,
                                                               id, port)
-
         return db_port
 
     def get_port(self, context, id, fields=None):
--- a/components/openstack/neutron/files/l3_agent.ini	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/neutron/files/l3_agent.ini	Fri Feb 05 17:54:17 2016 -0500
@@ -4,11 +4,26 @@
 
 # L3 requires that an interface driver be set. Choose the one that best
 # matches your plugin.
-# Solaris Elastic Virtual Switch (EVS)
+
+# Example of interface_driver option for OVS based plugins (OVS, Ryu, NEC)
+# that supports L3 agent
+# interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
+
+# Use veth for an OVS interface or not.
+# Support kernels with limited namespace support
+# (e.g. RHEL 6.5) so long as ovs_use_veth is set to True.
+# ovs_use_veth = False
+
+# Example of interface_driver option for LinuxBridge
+# interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
+
+# Interface driver for Solaris Elastic Virtual Switch (EVS)
 interface_driver = neutron.agent.solaris.interface.SolarisVNICDriver
 
 # Allow overlapping IP (Must have kernel build with CONFIG_NET_NS=y and
-# iproute2 package that supports namespaces).
+# iproute2 package that supports namespaces). This option is deprecated and
+# will be removed in a future release, at which point the old behavior of
+# use_namespaces = True will be enforced.
 use_namespaces = False
 
 # If use_namespaces is set as False then the agent can only configure one
@@ -23,6 +38,20 @@
 # must be left empty.
 # gateway_external_network_id =
 
+# With IPv6, the network used for the external gateway does not need
+# to have an associated subnet, since the automatically assigned
+# link-local address (LLA) can be used. However, an IPv6 gateway address
+# is needed for use as the next-hop for the default route. If no IPv6
+# gateway address is configured here, (and only then) the neutron router
+# will be configured to get its default route from router advertisements (RAs)
+# from the upstream router; in which case the upstream router must also be
+# configured to send these RAs.
+# The ipv6_gateway, when configured, should be the LLA of the interface
+# on the upstream router. If a next-hop using a global unique address (GUA)
+# is desired, it needs to be done via a subnet allocated to the network
+# and not through this parameter.
+# ipv6_gateway =
+
 # Indicates that this L3 agent should also handle routers that do not have
 # an external network gateway configured.  This option should be True only
 # for a single agent in a Neutron deployment, and may be False for all agents
@@ -50,10 +79,13 @@
 
 # enable_metadata_proxy, which is true by default, can be set to False
 # if the Nova metadata server is not available
-enable_metadata_proxy = True
+# enable_metadata_proxy = True
 
-# Location of Metadata Proxy UNIX domain socket
-# metadata_proxy_socket = $state_path/metadata_proxy
+# Iptables mangle mark used to mark metadata valid requests
+# metadata_access_mark = 0x1
+
+# Iptables mangle mark used to mark ingress from external network
+# external_ingress_mark = 0x2
 
 # router_delete_namespaces, which is false by default, can be set to True if
 # namespaces can be deleted cleanly on the host running the L3 agent.
@@ -63,6 +95,10 @@
 # If True, namespaces will be deleted when a router is destroyed.
 # router_delete_namespaces = False
 
+# Timeout for ovs-vsctl commands.
+# If the timeout expires, ovs commands will fail with ALARMCLOCK error.
+# ovs_vsctl_timeout = 10
+
 # The working mode for the agent. Allowed values are:
 # - legacy: this preserves the existing behavior where the L3 agent is
 #   deployed on a centralized networking node to provide L3 services
--- a/components/openstack/neutron/files/metadata_agent.ini	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/neutron/files/metadata_agent.ini	Fri Feb 05 17:54:17 2016 -0500
@@ -39,12 +39,21 @@
 # When proxying metadata requests, Neutron signs the Instance-ID header with a
 # shared secret to prevent spoofing.  You may select any string for a secret,
 # but it must match here and in the configuration used by the Nova Metadata
-# Server. NOTE: Nova uses a different key: neutron_metadata_proxy_shared_secret
+# Server. NOTE: Nova uses the same config key, but in [neutron] section.
 # metadata_proxy_shared_secret =
 
 # Location of Metadata Proxy UNIX domain socket
 # metadata_proxy_socket = $state_path/metadata_proxy
 
+# Metadata Proxy UNIX domain socket mode, 3 values allowed:
+# 'deduce': deduce mode from metadata_proxy_user/group values,
+# 'user': set metadata proxy socket mode to 0o644, to use when
+# metadata_proxy_user is agent effective user or root,
+# 'group': set metadata proxy socket mode to 0o664, to use when
+# metadata_proxy_group is agent effective group,
+# 'all': set metadata proxy socket mode to 0o666, to use otherwise.
+# metadata_proxy_socket_mode = deduce
+
 # Number of separate worker processes for metadata server. Defaults to
 # half the number of CPU cores
 metadata_workers = 1
--- a/components/openstack/neutron/files/neutron-l3-agent	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/neutron/files/neutron-l3-agent	Fri Feb 05 17:54:17 2016 -0500
@@ -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
@@ -22,6 +22,10 @@
 import smf_include
 
 from subprocess import CalledProcessError, Popen, PIPE, check_call
+from neutron_vpnaas.services.vpn.device_drivers.solaris_ipsec import \
+    get_vpn_interfaces
+from neutron_vpnaas.services.vpn.device_drivers.solaris_ipsec import \
+    shutdown_vpn
 
 
 def set_hostmodel(value):
@@ -46,7 +50,7 @@
 
 def start():
     # verify paths are valid
-    for f in sys.argv[2:4]:
+    for f in sys.argv[2:5]:
         if not os.path.exists(f) or not os.access(f, os.R_OK):
             print '%s does not exist or is not readable' % f
             return smf_include.SMF_EXIT_ERR_CONFIG
@@ -76,13 +80,32 @@
               "enabled before enabling neutron-l3-agent"
         return smf_include.SMF_EXIT_ERR_CONFIG
 
+    cmd = "/usr/lib/neutron/neutron-l3-agent --config-file %s " \
+        "--config-file %s --config-file %s" % tuple(sys.argv[2:5])
+
+    # The VPNaaS shutdown should unplumb all IP tunnels it created. But
+    # be paranoid and check for lingering tunnels created by OpenStack
+    # that may have been left behind if the OpenStack device driver exits
+    # unexpectedly. OpenStack VPN configuration is created when the service
+    # starts. Errors will occur if old IP tunnels still exist.
+
+    vpn_ifs = get_vpn_interfaces()
+    if vpn_ifs:
+        print "Error: Found existing IP tunnel interface(s)."
+        print "Use ipadm(1M) and dladm(1M) to remove it/them."
+        print "Then use svcadm(1M) to clear the service."
+        print "Use the following commands to remove:"
+        for interface in vpn_ifs:
+            ifn = interface.group(0)
+            print "\t# ipadm delete-ip %s; dladm delete-iptun %s" % (ifn, ifn)
+
+        return smf_include.SMF_EXIT_ERR_CONFIG
+
     # set the hostmodel property if necessary
     if not set_hostmodel("src-priority"):
         return smf_include.SMF_EXIT_ERR_FATAL
 
-    cmd = "/usr/lib/neutron/neutron-l3-agent --config-file %s " \
-        "--config-file %s" % tuple(sys.argv[2:4])
-    smf_include.smf_subprocess(cmd)
+    return smf_include.smf_subprocess(cmd)
 
 
 def remove_ipfilter_rules(version):
@@ -131,12 +154,12 @@
 
 
 def stop():
+    shutdown_vpn()
     try:
         # first kill the SMF contract
         check_call(["/usr/bin/pkill", "-c", sys.argv[2]])
     except CalledProcessError as err:
         print "failed to kill the SMF contract: %s" % (err)
-        return smf_include.SMF_EXIT_ERR_FATAL
 
     # We need to first remove the IP filter rules and then remove
     # the IP interfaces on which the rules were applied.
--- a/components/openstack/neutron/files/neutron-l3-agent.xml	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/neutron/files/neutron-l3-agent.xml	Fri Feb 05 17:54:17 2016 -0500
@@ -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
@@ -59,7 +59,7 @@
     <logfile_attributes permissions='600'/>
 
     <exec_method timeout_seconds="60" type="method" name="start"
-      exec="/lib/svc/method/neutron-l3-agent %m %{config/config_path} %{config/l3_config_path}">
+      exec="/lib/svc/method/neutron-l3-agent %m %{config/config_path} %{config/l3_config_path} %{config/vpn_config_path}">
       <method_context>
         <!-- sys_ip_config is required to set 'hostmodel' ipadm property -->
         <method_credential user='neutron' group='neutron' privileges='basic,sys_ip_config' />
@@ -87,6 +87,8 @@
           value='/etc/neutron/neutron.conf'/>
         <propval name='l3_config_path' type='astring'
           value='/etc/neutron/l3_agent.ini'/>
+        <propval name='vpn_config_path' type='astring'
+          value='/etc/neutron/vpn_agent.ini'/>
       </property_group>
     </instance>
 
@@ -120,6 +122,14 @@
             </loctext>
           </common_name>
         </prop_pattern>
+        <prop_pattern name='vpn_config_path' type='astring'
+          required='true'>
+          <common_name>
+            <loctext xml:lang='C'>
+              Filesystem path to Neutron VPNaaS .ini file
+            </loctext>
+          </common_name>
+        </prop_pattern>
       </pg_pattern>
     </template>
   </service>
--- a/components/openstack/neutron/files/neutron-upgrade	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/neutron/files/neutron-upgrade	Fri Feb 05 17:54:17 2016 -0500
@@ -1,6 +1,6 @@
 #!/usr/bin/python2.7
 
-# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2015, 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
@@ -29,15 +29,18 @@
 
 NEUTRON_CONF_MAPPINGS = {
     # Deprecated group/name
-    ('DEFAULT', 'rabbit_durable_queues'): ('DEFAULT', 'amqp_durable_queues'),
-    ('rpc_notifier2', 'topics'): ('DEFAULT', 'notification_topics'),
-    ('DEFAULT', 'matchmaker_ringfile'): ('matchmaker_ring', 'ringfile'),
-    # As of Juno, EVS now uses the standard quota driver
-    ('quotas', 'quota_driver'): (None, None),
+    ('DEFAULT', 'nova_api_insecure'): ('nova', 'insecure'),
+    ('DEFAULT', 'nova_ca_certificates_file'): ('nova', 'cafile'),
+    ('DEFAULT', 'nova_region_name'): ('nova', 'region_name'),
+    ('DEFAULT', 'max_request_body_size'):
+        ('oslo_middleware', 'max_request_body_size'),
+    ('DEFAULT', 'use-syslog'): (None, None),
+    ('DEFAULT', 'log-format'): (None, None),
+    ('DEFAULT', 'log_format'): (None, None),
 }
 
 NEUTRON_CONF_EXCEPTIONS = [
-    ('DEFAULT', 'lockpath'),
+    ('database', 'connection'),
     ('keystone_authtoken', 'auth_uri'),
     ('keystone_authtoken', 'identity_uri'),
     ('keystone_authtoken', 'admin_tenant_name'),
@@ -46,20 +49,7 @@
     ('keystone_authtoken', 'signing_dir'),
 ]
 
-
-DHCP_AGENT_MAPPINGS = {
-    # Deprecated group/name
-    ('DEFAULT', 'dnsmasq_dns_server'): ('DEFAULT', 'dnsmasq_dns_servers'),
-}
-
-EVS_PLUGIN_MAPPINGS = {
-    # No longer referenced by the service
-    ('DATABASE', 'sql_connection'): (None, None),
-}
-
-L3_AGENT_EXCEPTIONS = [
-    ('DEFAULT', 'enable_metadata_proxy'),
-]
+L3_AGENT_EXCEPTIONS = []
 
 METADATA_AGENT_EXCEPTIONS = [
     ('DEFAULT', 'auth_url'),
@@ -92,14 +82,6 @@
     # look for any .new files
     db_connection = None
     if glob.glob('/etc/neutron/*.new'):
-        # extract sql_connection from evs_plugin.ini
-        db_connection = 'sqlite:////var/lib/neutron/neutron.sqlite'
-        evs_ini = iniparse.RawConfigParser()
-        evs_ini.read('/etc/neutron/plugins/evs/evs_plugin.ini')
-        if evs_ini.has_section('DATABASE'):
-            if evs_ini.has_option('DATABASE', 'sql_connection'):
-                db_connection = evs_ini.get('DATABASE', 'sql_connection')
-
         # the versions are different, so perform an upgrade
         # modify the configuration files
 
@@ -107,50 +89,22 @@
         create_backups('/etc/neutron')
 
         modify_conf('/etc/neutron/api-paste.ini')
-        modify_conf('/etc/neutron/dhcp_agent.ini', DHCP_AGENT_MAPPINGS)
+        modify_conf('/etc/neutron/dhcp_agent.ini')
         modify_conf('/etc/neutron/l3_agent.ini', None, L3_AGENT_EXCEPTIONS)
         modify_conf('/etc/neutron/neutron.conf', NEUTRON_CONF_MAPPINGS,
                     NEUTRON_CONF_EXCEPTIONS)
-        modify_conf('/etc/neutron/plugins/evs/evs_plugin.ini',
-                    EVS_PLUGIN_MAPPINGS)
         modify_conf('/etc/neutron/metadata_agent.ini', None,
                     METADATA_AGENT_EXCEPTIONS)
 
     config = iniparse.RawConfigParser()
     config.read('/etc/neutron/neutron.conf')
-    # In certain cases the database section does not exist and the
-    # default database chosen is sqlite.
     if config.has_section('database'):
-        if db_connection:
-            config.set('database', 'connection', db_connection)
-            with open('/etc/neutron/neutron.conf', 'wb+') as fh:
-                config.write(fh)
-            if 'sqlite' in db_connection:
-                print "WARNING: Neutron database is on sqlite"
-                print "which is not a supported backend for"
-                print "Solaris Openstack. Please make sure"
-                print "to migrate to MySQL after upgrade to Juno"
-        # Need this else part because this code path is exercised
-        # during fresh install of Juno, when the
-        # [database].connection is set to default mysql
-        else:
-            db_connection = config.get('database', 'connection')
-
+        db_connection = config.get('database', 'connection')
         engine = sqlalchemy.create_engine(db_connection)
-
-        # migrate EVS to Neutron db
         if engine.url.username != '%SERVICE_USER%':
-            check_call(['/usr/lib/neutron/evs-neutron-migration'])
-            print "EVS to Neutron migration complete"
-
-            if engine.url.drivername == 'mysql':
-                alter_mysql_tables(engine)
-                print "altered character set to utf8 in neutron tables"
-
             check_call(['/usr/bin/neutron-db-manage', '--config-file',
-                        '/etc/neutron/neutron.conf', '--config-file',
-                        '/etc/neutron/plugins/evs/evs_plugin.ini', 'stamp',
-                        'juno'])
+                        '/etc/neutron/neutron.conf', 'stamp', 'kilo'])
+            check_call(['/usr/lib/neutron/neutron-kilo-migration'])
 
     # update the current version
     check_call(['/usr/sbin/svccfg', '-s', os.environ['SMF_FMRI'], 'setprop',
--- a/components/openstack/neutron/files/neutron.conf	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/neutron/files/neutron.conf	Fri Feb 05 17:54:17 2016 -0500
@@ -19,9 +19,6 @@
 # user executing the agent.
 # state_path = /var/lib/neutron
 
-# Where to store lock files
-lock_path = $state_path/lock
-
 # log_format = %(asctime)s %(levelname)8s [%(name)s] %(message)s
 # log_date_format = %Y-%m-%d %H:%M:%S
 
@@ -80,6 +77,13 @@
 # Paste configuration file
 # api_paste_config = api-paste.ini
 
+# (StrOpt) Hostname to be used by the neutron server, agents and services
+# running on this machine. All the agents and services running on this machine
+# must use the same host value.
+# The default value is hostname of the machine.
+#
+# host =
+
 # The strategy to be used for auth.
 # Supported values are 'keystone'(default), 'noauth'.
 # auth_strategy = keystone
@@ -144,6 +148,29 @@
 # Maximum number of routes per router
 # max_routes = 30
 
+# Default Subnet Pool to be used for IPv4 subnet-allocation.
+# Specifies by UUID the pool to be used in case of subnet-create being called
+# without a subnet-pool ID.  The default of None means that no pool will be
+# used unless passed explicitly to subnet create.  If no pool is used, then a
+# CIDR must be passed to create a subnet and that subnet will not be allocated
+# from any pool; it will be considered part of the tenant's private address
+# space.
+# default_ipv4_subnet_pool =
+
+# Default Subnet Pool to be used for IPv6 subnet-allocation.
+# Specifies by UUID the pool to be used in case of subnet-create being
+# called without a subnet-pool ID.  Set to "prefix_delegation"
+# to enable IPv6 Prefix Delegation in a PD-capable environment.
+# See the description for default_ipv4_subnet_pool for more information.
+# default_ipv6_subnet_pool =
+
+# =========== items for MTU selection and advertisement =============
+# Advertise MTU.  If True, effort is made to advertise MTU
+# settings to VMs via network methods (ie. DHCP and RA MTU options)
+# when the network's preferred MTU is known.
+# advertise_mtu = False
+# ======== end of items for MTU selection and advertisement =========
+
 # =========== items for agent management extension =============
 # Seconds to regard the agent as down; should be at least twice
 # report_interval, to be sure the agent is down for good
@@ -158,6 +185,23 @@
 # Driver to use for scheduling a loadbalancer pool to an lbaas agent
 # loadbalancer_pool_scheduler_driver = neutron.services.loadbalancer.agent_scheduler.ChanceScheduler
 
+# (StrOpt) Representing the resource type whose load is being reported by
+# the agent.
+# This can be 'networks','subnets' or 'ports'. When specified (Default is networks),
+# the server will extract particular load sent as part of its agent configuration object
+# from the agent report state, which is the number of resources being consumed, at
+# every report_interval.
+# dhcp_load_type can be used in combination with network_scheduler_driver =
+# neutron.scheduler.dhcp_agent_scheduler.WeightScheduler
+# When the network_scheduler_driver is WeightScheduler, dhcp_load_type can
+# be configured to represent the choice for the resource being balanced.
+# Example: dhcp_load_type = networks
+# Values:
+#   networks - number of networks hosted on the agent
+#   subnets -  number of subnets associated with the networks hosted on the agent
+#   ports   -  number of ports associated with the networks hosted on the agent
+# dhcp_load_type = networks
+
 # Allow auto scheduling networks to DHCP agent. It will schedule non-hosted
 # networks to first DHCP agent which sends get_active_networks message to
 # neutron server
@@ -171,10 +215,23 @@
 # admin_state_up set to True to alive agents.
 # allow_automatic_l3agent_failover = False
 
+# Allow automatic removal of networks from dead DHCP agents with
+# admin_state_up set to True.
+# Networks could then be rescheduled if network_auto_schedule is True
+# allow_automatic_dhcp_failover = True
+
 # Number of DHCP agents scheduled to host a network. This enables redundant
 # DHCP agents for configured networks.
 # dhcp_agents_per_network = 1
 
+# Enable services on agents with admin_state_up False.
+# If this option is False, when admin_state_up of an agent is turned to
+# False, services on it will be disabled. If this option is True, services
+# on agents with admin_state_up False keep available and manual scheduling
+# to such agents is available. Agents with admin_state_up False are not
+# selected for automatic scheduling regardless of this option.
+# enable_services_on_agents_with_admin_state_down = False
+
 # ===========  end of items for agent scheduler extension =====
 
 # =========== items for l3 extension ==============
@@ -191,8 +248,47 @@
 #
 # CIDR of the administrative network if HA mode is enabled
 # l3_ha_net_cidr = 169.254.192.0/18
+#
+# The network type to use when creating the HA network for an HA router.
+# By default or if empty, the first 'tenant_network_types'
+# is used. This is helpful when the VRRP traffic should use a specific
+# network which not the default one.
+# ha_network_type =
+# Example: ha_network_type = flat
+#
+# The physical network name with which the HA network can be created.
+# ha_network_physical_name =
+# Example: ha_network_physical_name = physnet1
 # =========== end of items for l3 extension =======
 
+# =========== items for metadata proxy configuration ==============
+# User (uid or name) running metadata proxy after its initialization
+# (if empty: agent effective user)
+# metadata_proxy_user =
+
+# Group (gid or name) running metadata proxy after its initialization
+# (if empty: agent effective group)
+# metadata_proxy_group =
+
+# Enable/Disable log watch by metadata proxy, it should be disabled when
+# metadata_proxy_user/group is not allowed to read/write its log file and
+# 'copytruncate' logrotate option must be used if logrotate is enabled on
+# metadata proxy log files. Option default value is deduced from
+# metadata_proxy_user: watch log is enabled if metadata_proxy_user is agent
+# effective user id/name.
+# metadata_proxy_watch_log =
+
+# Location of Metadata Proxy UNIX domain socket
+# metadata_proxy_socket = $state_path/metadata_proxy
+# =========== end of items for metadata proxy configuration ==============
+
+# ========== items for VLAN trunking networks ==========
+# Setting this flag to True will allow plugins that support it to
+# create VLAN transparent networks. This flag has no effect for
+# plugins that do not support VLAN transparent networks.
+# vlan_transparent = False
+# ========== end of items for VLAN trunking networks ==========
+
 # =========== WSGI parameters related to the API server ==============
 # Number of separate worker processes to spawn.  The default, 0, runs the
 # worker thread in the current process.  Greater than 0 launches that number of
@@ -247,7 +343,6 @@
 # ssl_ca_file = /path/to/cafile
 # ======== end of WSGI parameters related to the API server ==========
 
-
 # ======== neutron nova interactions ==========
 # Send notification to nova when port status is active.
 # notify_nova_on_port_status_changes = True
@@ -268,6 +363,11 @@
 # The uuid of the admin nova tenant
 # nova_admin_tenant_id =
 
+# The name of the admin nova tenant. If the uuid of the admin nova tenant
+# is set, this is optional.  Useful for cases where the uuid of the admin
+# nova tenant is not available when configuration is being done.
+# nova_admin_tenant_name =
+
 # Password for connection to nova in admin context.
 # nova_admin_password =
 
@@ -291,42 +391,42 @@
 
 # Use durable queues in amqp. (boolean value)
 # 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
+# amqp_auto_delete=false
 
 # Size of RPC connection pool. (integer value)
-#rpc_conn_pool_size=30
+# rpc_conn_pool_size=30
 
 # Qpid broker hostname. (string value)
-#qpid_hostname=localhost
+# qpid_hostname=localhost
 
 # Qpid broker port. (integer value)
-#qpid_port=5672
+# qpid_port=5672
 
 # Qpid HA cluster host:port pairs. (list value)
-#qpid_hosts=$qpid_hostname:$qpid_port
+# qpid_hosts=$qpid_hostname:$qpid_port
 
 # Username for Qpid connection. (string value)
-#qpid_username=
+# qpid_username=
 
 # Password for Qpid connection. (string value)
-#qpid_password=
+# qpid_password=
 
 # Space separated list of SASL mechanisms to use for auth.
 # (string value)
-#qpid_sasl_mechanisms=
+# qpid_sasl_mechanisms=
 
 # Seconds between connection keepalive heartbeats. (integer
 # value)
-#qpid_heartbeat=60
+# qpid_heartbeat=60
 
 # Transport to use, either 'tcp' or 'ssl'. (string value)
-#qpid_protocol=tcp
+# qpid_protocol=tcp
 
 # Whether to disable the Nagle algorithm. (boolean value)
-#qpid_tcp_nodelay=true
+# qpid_tcp_nodelay=true
 
 # The qpid topology version to use.  Version 1 is what was
 # originally used by impl_qpid.  Version 2 includes some
@@ -334,136 +434,136 @@
 # 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
+# qpid_topology_version=1
 
 # SSL version to use (valid only if SSL enabled). valid values
 # are TLSv1, SSLv23 and SSLv3. SSLv2 may be available on some
 # distributions. (string value)
-#kombu_ssl_version=
+# kombu_ssl_version=
 
 # SSL key file (valid only if SSL enabled). (string value)
-#kombu_ssl_keyfile=
+# kombu_ssl_keyfile=
 
 # SSL cert file (valid only if SSL enabled). (string value)
-#kombu_ssl_certfile=
+# kombu_ssl_certfile=
 
 # SSL certification authority file (valid only if SSL
 # enabled). (string value)
-#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)
-#kombu_reconnect_delay=1.0
+# kombu_reconnect_delay=1.0
 
 # The RabbitMQ broker address where a single node is used.
 # (string value)
-#rabbit_host=localhost
+# rabbit_host=localhost
 
 # The RabbitMQ broker port where a single node is used.
 # (integer value)
-#rabbit_port=5672
+# rabbit_port=5672
 
 # RabbitMQ HA cluster host:port pairs. (list value)
-#rabbit_hosts=$rabbit_host:$rabbit_port
+# rabbit_hosts=$rabbit_host:$rabbit_port
 
 # Connect over SSL for RabbitMQ. (boolean value)
-#rabbit_use_ssl=false
+# rabbit_use_ssl=false
 
 # The RabbitMQ userid. (string value)
-#rabbit_userid=guest
+# rabbit_userid=guest
 
 # The RabbitMQ password. (string value)
-#rabbit_password=guest
+# rabbit_password=guest
 
 # the RabbitMQ login method (string value)
-#rabbit_login_method=AMQPLAIN
+# rabbit_login_method=AMQPLAIN
 
 # The RabbitMQ virtual host. (string value)
-#rabbit_virtual_host=/
+# rabbit_virtual_host=/
 
 # How frequently to retry connecting with RabbitMQ. (integer
 # value)
-#rabbit_retry_interval=1
+# rabbit_retry_interval=1
 
 # How long to backoff for between retries when connecting to
 # RabbitMQ. (integer value)
-#rabbit_retry_backoff=2
+# rabbit_retry_backoff=2
 
 # Maximum number of RabbitMQ connection retries. Default is 0
 # (infinite retry count). (integer value)
-#rabbit_max_retries=0
+# rabbit_max_retries=0
 
 # Use HA queues in RabbitMQ (x-ha-policy: all). If you change
 # this option, you must wipe the RabbitMQ database. (boolean
 # value)
-#rabbit_ha_queues=false
+# rabbit_ha_queues=false
 
 # If passed, use a fake RabbitMQ provider. (boolean value)
-#fake_rabbit=false
+# fake_rabbit=false
 
 # 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=*
+# rpc_zmq_bind_address=*
 
 # MatchMaker driver. (string value)
-#rpc_zmq_matchmaker=oslo.messaging._drivers.matchmaker.MatchMakerLocalhost
+# rpc_zmq_matchmaker=oslo.messaging._drivers.matchmaker.MatchMakerLocalhost
 
 # ZeroMQ receiver listening port. (integer value)
-#rpc_zmq_port=9501
+# rpc_zmq_port=9501
 
 # Number of ZeroMQ contexts, defaults to 1. (integer value)
-#rpc_zmq_contexts=1
+# rpc_zmq_contexts=1
 
 # Maximum number of ingress messages to locally buffer per
 # topic. Default is unlimited. (integer value)
-#rpc_zmq_topic_backlog=<None>
+# rpc_zmq_topic_backlog=
 
 # Directory for holding IPC sockets. (string value)
-#rpc_zmq_ipc_dir=/var/run/openstack
+# 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=oslo
+# rpc_zmq_host=oslo
 
 # Seconds to wait before a cast expires (TTL). Only supported
 # by impl_zmq. (integer value)
-#rpc_cast_timeout=30
+# rpc_cast_timeout=30
 
 # Heartbeat frequency. (integer value)
-#matchmaker_heartbeat_freq=300
+# matchmaker_heartbeat_freq=300
 
 # Heartbeat time-to-live. (integer value)
-#matchmaker_heartbeat_ttl=600
+# matchmaker_heartbeat_ttl=600
 
 # Size of RPC greenthread pool. (integer value)
-#rpc_thread_pool_size=64
+# rpc_thread_pool_size=64
 
 # Driver or drivers to handle sending notifications. (multi
 # valued)
-#notification_driver=
+# notification_driver=
 
 # AMQP topic used for OpenStack notifications. (list value)
 # Deprecated group/name - [rpc_notifier2]/topics
-#notification_topics=notifications
+# notification_topics=notifications
 
 # Seconds to wait for a response from a call. (integer value)
-#rpc_response_timeout=60
+# 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>
+# transport_url=
 
 # The messaging driver to use, defaults to rabbit. Other
 # drivers include qpid and zmq. (string value)
-#rpc_backend=rabbit
+# 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
+# control_exchange=openstack
 
 
 [matchmaker_redis]
@@ -473,13 +573,13 @@
 #
 
 # Host to locate redis. (string value)
-#host=127.0.0.1
+# host=127.0.0.1
 
 # Use this port to connect to redis host. (integer value)
-#port=6379
+# port=6379
 
 # Password for Redis server (optional). (string value)
-#password=<None>
+# password=
 
 
 [matchmaker_ring]
@@ -490,7 +590,7 @@
 
 # Matchmaker ring file (JSON). (string value)
 # Deprecated group/name - [DEFAULT]/matchmaker_ringfile
-#ringfile=/etc/oslo/matchmaker_ring.json
+# ringfile=/etc/oslo/matchmaker_ring.json
 
 [quotas]
 # Default driver to use for quota checks
@@ -539,6 +639,16 @@
 # and that is the reason why quota is possible.
 # quota_health_monitor = -1
 
+# Number of loadbalancers allowed per tenant. A negative value means unlimited.
+# quota_loadbalancer = 10
+
+# Number of listeners allowed per tenant. A negative value means unlimited.
+# quota_listener = -1
+
+# Number of v2 health monitors allowed per tenant. A negative value means
+# unlimited. These health monitors exist under the lbaas v2 API
+# quota_healthmonitor = -1
+
 # Number of routers allowed per tenant. A negative value means unlimited.
 # quota_router = 10
 
@@ -559,8 +669,29 @@
 [agent]
 # Use "sudo neutron-rootwrap /etc/neutron/rootwrap.conf" to use the real
 # root filter facility.
-# Change to "sudo" to skip the filtering and just run the comand directly
-# root_helper = sudo
+# Change to "sudo" to skip the filtering and just run the command directly
+root_helper =
+
+# Set to true to add comments to generated iptables rules that describe
+# each rule's purpose. (System must support the iptables comments module.)
+# comment_iptables_rules = True
+
+# Root helper daemon application to use when possible.
+# root_helper_daemon =
+
+# Use the root helper when listing the namespaces on a system. This may not
+# be required depending on the security configuration. If the root helper is
+# not required, set this to False for a performance improvement.
+# use_helper_for_ns_read = True
+
+# The interval to check external processes for failure in seconds (0=disabled)
+# check_child_processes_interval = 60
+
+# Action to take when an external process spawned by an agent dies
+# Values:
+#   respawn - Respawns the external process
+#   exit - Exits the agent
+# check_child_processes_action = respawn
 
 # =========== items for agent management extension =============
 # seconds between nodes reporting state to server; should be less than
@@ -583,6 +714,7 @@
 # connection = mysql://root:[email protected]:3306/neutron
 # Replace 127.0.0.1 above with the IP address of the database used by the
 # main neutron server. (Leave it as is if the database runs on this host.)
+# connection = sqlite://
 # NOTE: In deployment the [database] section and its connection attribute may
 # be set in the corresponding core plugin '.ini' file. However, it is suggested
 # to put the [database] section and its connection attribute in this
@@ -625,30 +757,265 @@
 # If set, use this value for pool_timeout with sqlalchemy
 # pool_timeout = 10
 
-[service_providers]
-# Specify service providers (drivers) for advanced services like loadbalancer, VPN, Firewall.
-# Must be in form:
-# service_provider=<service_type>:<name>:<driver>[:default]
-# List of allowed service types includes LOADBALANCER, FIREWALL, VPN
-# Combination of <service type> and <name> must be unique; <driver> must also be unique
-# This is multiline option, example for default provider:
-# service_provider=LOADBALANCER:name:lbaas_plugin_driver_path:default
-# example of non-default provider:
-# service_provider=FIREWALL:name2:firewall_driver_path
-# --- Reference implementations ---
-service_provider=LOADBALANCER:Haproxy:neutron.services.loadbalancer.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default
-service_provider=VPN:openswan:neutron.services.vpn.service_drivers.ipsec.IPsecVPNDriver:default
-# In order to activate Radware's lbaas driver you need to uncomment the next line.
-# If you want to keep the HA Proxy as the default lbaas driver, remove the attribute default from the line below.
-# Otherwise comment the HA Proxy line
-# service_provider = LOADBALANCER:Radware:neutron.services.loadbalancer.drivers.radware.driver.LoadBalancerDriver:default
-# uncomment the following line to make the 'netscaler' LBaaS provider available.
-# service_provider=LOADBALANCER:NetScaler:neutron.services.loadbalancer.drivers.netscaler.netscaler_driver.NetScalerPluginDriver
-# Uncomment the following line (and comment out the OpenSwan VPN line) to enable Cisco's VPN driver.
-# service_provider=VPN:cisco:neutron.services.vpn.service_drivers.cisco_ipsec.CiscoCsrIPsecVPNDriver:default
-# Uncomment the line below to use Embrane heleos as Load Balancer service provider.
-# service_provider=LOADBALANCER:Embrane:neutron.services.loadbalancer.drivers.embrane.driver.EmbraneLbaas:default
-# Uncomment the line below to use the A10 Networks LBaaS driver.  Requires 'pip install a10-neutron-lbaas'.
-#service_provider = LOADBALANCER:A10Networks:neutron.services.loadbalancer.drivers.a10networks.driver_v1.ThunderDriver:default
-# Uncomment the following line to test the LBaaS v2 API _WITHOUT_ a real backend
-# service_provider = LOADBALANCER:LoggingNoop:neutron.services.loadbalancer.drivers.logging_noop.driver.LoggingNoopLoadBalancerDriver:default
+[nova]
+# Name of the plugin to load
+# auth_plugin =
+
+# Config Section from which to load plugin specific options
+# auth_section =
+
+# PEM encoded Certificate Authority to use when verifying HTTPs connections.
+# cafile =
+
+# PEM encoded client certificate cert file
+# certfile =
+
+# Verify HTTPS connections.
+# insecure = False
+
+# PEM encoded client certificate key file
+# keyfile =
+
+# Name of nova region to use. Useful if keystone manages more than one region.
+# region_name =
+
+# Timeout value for http requests
+# timeout =
+
+[oslo_concurrency]
+
+# 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.
+lock_path = $state_path/lock
+
+# Enables or disables inter-process locks.
+# disable_process_locking = False
+
+[oslo_policy]
+
+# The JSON file that defines policies.
+# policy_file = policy.json
+
+# Default rule. Enforced when a requested rule is not found.
+# 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.
+# policy_dirs = policy.d
+
+[oslo_messaging_amqp]
+
+#
+# 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)
+# Deprecated group/name - [amqp1]/container_name
+# container_name =
+
+# Timeout for inactive connections (in seconds) (integer value)
+# Deprecated group/name - [amqp1]/idle_timeout
+# idle_timeout = 0
+
+# Debug: dump AMQP frames to stdout (boolean value)
+# Deprecated group/name - [amqp1]/trace
+# trace = false
+
+# CA certificate PEM file for verifing server certificate (string value)
+# Deprecated group/name - [amqp1]/ssl_ca_file
+# ssl_ca_file =
+
+# Identifying certificate PEM file to present to clients (string value)
+# Deprecated group/name - [amqp1]/ssl_cert_file
+# ssl_cert_file =
+
+# Private key PEM file used to sign cert_file certificate (string value)
+# Deprecated group/name - [amqp1]/ssl_key_file
+# ssl_key_file =
+
+# Password for decrypting ssl_key_file (if encrypted) (string value)
+# Deprecated group/name - [amqp1]/ssl_key_password
+# ssl_key_password =
+
+# Accept clients using either SSL or plain TCP (boolean value)
+# Deprecated group/name - [amqp1]/allow_insecure_clients
+# allow_insecure_clients = false
+
+
+[oslo_messaging_qpid]
+
+#
+# From 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)
+# Deprecated group/name - [DEFAULT]/amqp_auto_delete
+# amqp_auto_delete = false
+
+# Size of RPC connection pool. (integer value)
+# Deprecated group/name - [DEFAULT]/rpc_conn_pool_size
+# rpc_conn_pool_size = 30
+
+# Qpid broker hostname. (string value)
+# Deprecated group/name - [DEFAULT]/qpid_hostname
+# qpid_hostname = localhost
+
+# Qpid broker port. (integer value)
+# Deprecated group/name - [DEFAULT]/qpid_port
+# qpid_port = 5672
+
+# Qpid HA cluster host:port pairs. (list value)
+# Deprecated group/name - [DEFAULT]/qpid_hosts
+# qpid_hosts = $qpid_hostname:$qpid_port
+
+# Username for Qpid connection. (string value)
+# Deprecated group/name - [DEFAULT]/qpid_username
+# qpid_username =
+
+# Password for Qpid connection. (string value)
+# Deprecated group/name - [DEFAULT]/qpid_password
+# qpid_password =
+
+# Space separated list of SASL mechanisms to use for auth. (string value)
+# Deprecated group/name - [DEFAULT]/qpid_sasl_mechanisms
+# qpid_sasl_mechanisms =
+
+# Seconds between connection keepalive heartbeats. (integer value)
+# Deprecated group/name - [DEFAULT]/qpid_heartbeat
+# qpid_heartbeat = 60
+
+# Transport to use, either 'tcp' or 'ssl'. (string value)
+# Deprecated group/name - [DEFAULT]/qpid_protocol
+# qpid_protocol = tcp
+
+# Whether to disable the Nagle algorithm. (boolean value)
+# Deprecated group/name - [DEFAULT]/qpid_tcp_nodelay
+# qpid_tcp_nodelay = true
+
+# The number of prefetched messages held by receiver. (integer value)
+# Deprecated group/name - [DEFAULT]/qpid_receiver_capacity
+# 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)
+# Deprecated group/name - [DEFAULT]/qpid_topology_version
+# qpid_topology_version = 1
+
+
+[oslo_messaging_rabbit]
+
+#
+# From 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)
+# Deprecated group/name - [DEFAULT]/amqp_auto_delete
+# amqp_auto_delete = false
+
+# Size of RPC connection pool. (integer value)
+# Deprecated group/name - [DEFAULT]/rpc_conn_pool_size
+# rpc_conn_pool_size = 30
+
+# SSL version to use (valid only if SSL enabled). Valid values are TLSv1 and
+# SSLv23. SSLv2, SSLv3, TLSv1_1, and TLSv1_2 may be available on some
+# distributions. (string value)
+# Deprecated group/name - [DEFAULT]/kombu_ssl_version
+# kombu_ssl_version =
+
+# SSL key file (valid only if SSL enabled). (string value)
+# Deprecated group/name - [DEFAULT]/kombu_ssl_keyfile
+# kombu_ssl_keyfile =
+
+# SSL cert file (valid only if SSL enabled). (string value)
+# Deprecated group/name - [DEFAULT]/kombu_ssl_certfile
+# kombu_ssl_certfile =
+
+# SSL certification authority file (valid only if SSL enabled). (string value)
+# Deprecated group/name - [DEFAULT]/kombu_ssl_ca_certs
+# kombu_ssl_ca_certs =
+
+# How long to wait before reconnecting in response to an AMQP consumer cancel
+# notification. (floating point value)
+# Deprecated group/name - [DEFAULT]/kombu_reconnect_delay
+# kombu_reconnect_delay = 1.0
+
+# The RabbitMQ broker address where a single node is used. (string value)
+# Deprecated group/name - [DEFAULT]/rabbit_host
+# rabbit_host = localhost
+
+# The RabbitMQ broker port where a single node is used. (integer value)
+# Deprecated group/name - [DEFAULT]/rabbit_port
+# rabbit_port = 5672
+
+# RabbitMQ HA cluster host:port pairs. (list value)
+# Deprecated group/name - [DEFAULT]/rabbit_hosts
+# rabbit_hosts = $rabbit_host:$rabbit_port
+
+# Connect over SSL for RabbitMQ. (boolean value)
+# Deprecated group/name - [DEFAULT]/rabbit_use_ssl
+# rabbit_use_ssl = false
+
+# The RabbitMQ userid. (string value)
+# Deprecated group/name - [DEFAULT]/rabbit_userid
+# rabbit_userid = guest
+
+# The RabbitMQ password. (string value)
+# Deprecated group/name - [DEFAULT]/rabbit_password
+# rabbit_password = guest
+
+# The RabbitMQ login method. (string value)
+# Deprecated group/name - [DEFAULT]/rabbit_login_method
+# rabbit_login_method = AMQPLAIN
+
+# The RabbitMQ virtual host. (string value)
+# Deprecated group/name - [DEFAULT]/rabbit_virtual_host
+# rabbit_virtual_host = /
+
+# How frequently to retry connecting with RabbitMQ. (integer 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 number of RabbitMQ connection retries. Default is 0 (infinite retry
+# count). (integer value)
+# Deprecated group/name - [DEFAULT]/rabbit_max_retries
+# rabbit_max_retries = 0
+
+# Use HA queues in RabbitMQ (x-ha-policy: all). If you change this option, you
+# must wipe the RabbitMQ database. (boolean value)
+# Deprecated group/name - [DEFAULT]/rabbit_ha_queues
+# rabbit_ha_queues = false
+
+# Deprecated, use rpc_backend=kombu+memory or rpc_backend=fake (boolean value)
+# Deprecated group/name - [DEFAULT]/fake_rabbit
+# fake_rabbit = false
--- a/components/openstack/neutron/files/neutron.exec_attr	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/neutron/files/neutron.exec_attr	Fri Feb 05 17:54:17 2016 -0500
@@ -5,7 +5,7 @@
 privs=net_icmpaccess,net_privaddr,net_rawaccess,proc_audit,sys_dl_config
 
 neutron-agent:solaris:cmd:RO::/usr/sbin/ipadm:\
-privs={all}\:/system/volatile/in.ndpd_ipadm,net_rawaccess,sys_ip_config
+privs=all
 
 neutron-agent:solaris:cmd:RO::/usr/sbin/route:\
 privs=sys_ip_config
--- a/components/openstack/neutron/files/neutron.prof_attr	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/neutron/files/neutron.prof_attr	Fri Feb 05 17:54:17 2016 -0500
@@ -16,4 +16,4 @@
 auths=solaris.network.interface.config,\
 solaris.smf.manage.routing,\
 solaris.smf.value.routing;\
-profiles=Elastic Virtual Switch Administration,IP Filter Management
+profiles=Elastic Virtual Switch Administration,IP Filter Management,Network IPsec Management
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/neutron/files/services/vpn/device_drivers/solaris_ipsec.py	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,1576 @@
+#
+# Copyright (c) 2015, 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
+#    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.
+#
+# Based on neutron/services/vpn/device_drivers/ipsec.py written in 2013
+# by Nachi Ueno, NTT I3, Inc.
+#
+# Configuration of VPNaaS:
+#
+# This is an optional service thats managed by the Neutron l3-agent.
+# It is not enabled by default. See [1].
+# VPNaaS requires a correctly configured l3 router. See [2].
+# VPNaaS uses the generic IPsec service driver. See [1].
+# VPNaaS requires a Solaris specific device driver. See [3].
+#
+# Note[1]:
+# To enable VPNaaS, add the following to:
+# /etc/neutron/neutron.conf:
+#
+# [service_providers]
+# service_provider = vpnaas
+#
+# This will use the generic ipsec service driver which is predefined in:
+# /etc/neutron/neutron_vpnaas.conf
+#
+# Enabling VPNaaS will require the following services to be restarted:
+#
+# svc:/application/openstack/neutron/neutron-server:default
+# svc:/application/openstack/neutron/neutron-l3-agent:default
+#
+# Note[2]:
+# /etc/neutron/l3_agent.ini
+#
+# The [default] section of this file contains a router_id which
+# is required for the EVS and VPNaaS. Currently only a single
+# router_id is supported.
+# e.g.
+#
+# router_id = 9b17a6af-69ee-4185-a9fd-fa47502d97d6
+#
+# The device driver (Solaris specific) is configured in:
+#
+# Note[3]:
+# The Solaris specific device driver is preconfigured in:
+# /etc/neutron/vpn_agent.ini
+#
+# [vpnagent]
+# vpn_device_driver =
+# neutron.services.vpn.device_drivers.solaris_ipsec.SolarisIPsecDriver
+#
+# Note[4] - Optional values.
+#
+# Some defualt values can be changed by setting values under the [solaris]
+# section of /etc/neutron/vpn_agent.ini.
+#
+# [solaris]
+# ipsec_status_check_interval = 5
+# packet_logging = False
+# logger_level = "message+packet"
+#
+# Note[5] - Logging.
+#
+# The default logging level is WARN. Any LOG.warn() messages will
+# appear in the log file.
+#
+# Adding "Verbose = True" to the [default] section will cause LOG.info()
+# messages to be logged in addition to LOG.warn().
+#
+# Adding "Debug = True" to the [default] section will cause LOG.debug()
+# messages to be logged in addition to LOG.info() and LOG.warn().
+#
+import abc
+import copy
+import errno
+import iniparse
+import jinja2
+import logging
+import netaddr
+import os
+import re
+import shutil
+import six
+import socket
+import struct
+import sys
+import threading
+import time
+import traceback
+import unicodedata
+import oslo_messaging
+import rad.bindings.com.oracle.solaris.rad.smf_1 as smfb
+import rad.client
+import rad.connect
+
+from oslo.config import cfg
+from oslo import messaging
+from oslo_concurrency import lockutils, processutils
+from netaddr import IPNetwork
+from neutron.agent.solaris import interface, net_lib, ra, ipfilters_manager
+from neutron.agent.linux import ip_lib, utils
+from neutron.common import rpc as n_rpc
+from neutron_vpnaas.db.vpn import vpn_db
+from neutron import context
+from neutron.openstack.common import loopingcall
+from neutron.plugins.common import constants
+from neutron.plugins.common import utils as plugin_utils
+from neutron_vpnaas.services.vpn.common import topics
+from neutron_vpnaas.services.vpn import device_drivers
+from subprocess import CalledProcessError, Popen, PIPE, check_call
+
+LOG = logging.getLogger(__name__)
+TEMPLATE_PATH = os.path.dirname(__file__)
+
+# solaris_defaults[] and solaris_opts[] contain configurable variables
+# that are used by this driver. Any of these can be changed by adding a
+# variable=value entry into /etc/neutron/vpn_agent.ini under the section
+# called:
+#
+# [solaris]
+#
+# If there is no value in /etc/neutron/vpn_agent.ini, the default value
+# is used. Its highly recommended that the values defined in solaris_defaults[]
+# are never changed. The values under solaris_opts[] may be changed if the
+# defaults are not suitable.
+
+solaris_defaults = [
+    cfg.StrOpt(
+        'config_base_dir', default='$state_path/ipsec',
+        help=_('Location to store ipsec server config files')),
+    cfg.StrOpt(
+        'ipsec_config_template',
+        default=os.path.join(
+            TEMPLATE_PATH,
+            'template/solaris/ipsecinit.conf.template'),
+        help=_('Template file for IPsec Policy configuration')),
+    cfg.StrOpt(
+        'ike_config_template',
+        default=os.path.join(
+            TEMPLATE_PATH,
+            'template/solaris/ike.template'),
+        help=_('Template file for IKEv1 configuration')),
+    cfg.StrOpt(
+        'ikev2_config_template',
+        default=os.path.join(
+            TEMPLATE_PATH,
+            'template/solaris/ikev2.template'),
+        help=_('Template file for IKEv2 configuration')),
+    cfg.StrOpt(
+        'ike_secret_template',
+        default=os.path.join(
+            TEMPLATE_PATH,
+            'template/solaris/ike.secret.template'),
+        help=_('Template file for IKEv1 PSK configuration')),
+    cfg.StrOpt(
+        'ikev2_secret_template',
+        default=os.path.join(
+            TEMPLATE_PATH,
+            'template/solaris/ikev2.secret.template'),
+        help=_('Template file for IKEv2 PSK configuration')),
+    cfg.IntOpt(
+        'status_maxfails', default=6,
+        help=_('Number of times status check can fail before error occurs'))
+]
+
+solaris_opts = [
+    cfg.IntOpt(
+        'ipsec_status_check_interval', default=60,
+        help=_('Interval for checking ipsec status')),
+    cfg.BoolOpt(
+        'packet_logging', default=False,
+        help=_('IPsec policy failure logging')),
+    cfg.StrOpt(
+         'logger_level', default='message+packet',
+         help=_('IPsec policy log level'))
+]
+cfg.CONF.register_opts(solaris_defaults, 'solaris')
+cfg.CONF.register_opts(solaris_opts, 'solaris')
+
+JINJA_ENV = None
+
+IPSEC_CONNS = 'ipsec_site_connections'
+
+# These globals are flags used to stop the looping event
+# report_status() from looking at unstable state during
+# shutdown or when IKE is being restarted.
+global being_shutdown
+being_shutdown = False
+global restarting
+restarting = False
+existing_tunnels = []
+
+
+def get_vpn_interfaces():
+    # OpenStack-created tunnel names use the convention of starting with
+    # "ost" followed by a number.
+
+    cmd = ["/usr/sbin/ipadm", "show-if", "-p", "-o", "ifname"]
+    p = Popen(cmd, stdout=PIPE, stderr=PIPE)
+    output, error = p.communicate()
+    if p.returncode != 0:
+        print "failed to retrieve IP interface names"
+        return smf_include.SMF_EXIT_ERR_FATAL
+
+    ifnames = output.splitlines()
+    prog = re.compile('^ost\d+_\d+')
+    for ifname in ifnames:
+        if prog.search(ifname):
+            if ifname not in existing_tunnels:
+                existing_tunnels.append(ifname)
+
+    return filter(bool, existing_tunnels)
+
+
+def disable_services():
+    """Disable IPsec Policy/IKE smf(5) services using rad(1).
+    """
+    ike_svc = "network/ipsec/ike"
+    ipsec_svc = "network/ipsec/policy"
+    global restarting
+    restarting = True
+    LOG.info("Flushing IPsec SAs.")
+    cmd = ['/usr/bin/pfexec', '/usr/sbin/ipseckey', 'flush']
+    try:
+        stdout, stderr = processutils.execute(*cmd)
+    except processutils.ProcessExecutionError as stderr:
+        LOG.debug("\"%s\"" % stderr)
+
+    rad_connection = rad.connect.connect_unix()
+
+    LOG.info(
+        "Disabling IPsec policy service: \"svc:/%s\"" % ipsec_svc)
+    instance = rad_connection.get_object(
+       smfb.Instance(),
+       rad.client.ADRGlobPattern({'service': ipsec_svc,
+                                 'instance': 'default'}))
+    instance.disable(False)
+
+    instance = rad_connection.get_object(
+       smfb.Instance(),
+       rad.client.ADRGlobPattern({'service': ipsec_svc,
+                                 'instance': 'logger'}))
+    instance.disable(False)
+
+    LOG.info("Disabling IKE service: \"svc:/%s:default\"" % ike_svc)
+    instance = rad_connection.get_object(
+       smfb.Instance(),
+       rad.client.ADRGlobPattern({'service': ike_svc,
+                                 'instance': 'default'}))
+    instance.disable(False)
+
+    LOG.info("Disabling IKE service: \"svc:/%s:ikev2\"" % ike_svc)
+    instance = rad_connection.get_object(
+       smfb.Instance(),
+       rad.client.ADRGlobPattern({'service': ike_svc,
+                                 'instance': 'ikev2'}))
+    instance.disable(False)
+
+    rad_connection.close()
+
+
+def shutdown_vpn():
+    # Check to see if the VPN device_driver has been configured
+    # by looking in the config file. If it has we may have to give the
+    # driver a little more time to gracefully shutdown.
+    config = iniparse.RawConfigParser()
+    try:
+        config.read('/etc/neutron/vpn_agent.ini')
+    except:
+        LOG.warn("Unable to parse: vpn_agent.ini")
+        return
+
+    if config.has_section('vpnagent'):
+        # If we have a VPNaaS device driver, we still can't tell if its been
+        # configured or not. The easiest way to determine if VPNaaS is
+        # configured is to check if there are any IP tunnels configured.
+        vpn_driver = []
+        try:
+            vpn_driver = config.get('vpnagent', 'vpn_device_driver')
+            LOG.info("The following VPNaaS device_driver is configured:")
+            LOG.info("vpn_device_driver = %s" % vpn_driver)
+            if get_vpn_interfaces():
+                LOG.warn("Shutting Down VPNaaS")
+                whack_ike_rules()
+                disable_services()
+                delete_tunnels()
+        except:
+            # There is no vpn_device_driver.
+            pass
+
+
+def whack_ike_rules():
+        LOG.debug("Looking for IKE rules.")
+        cmd = ['/usr/bin/pfexec', '/usr/sbin/ikeadm', '-n', 'dump', 'rule']
+        try:
+            status, stderr = processutils.execute(*cmd)
+        except processutils.ProcessExecutionError as stderr:
+            LOG.warn("IKE daemon does not appear to be running.")
+            return
+
+        connection_ids = []
+        for line in status.split('\n'):
+            m = re.search('Label', line)
+            if not m:
+                continue
+            m = line.split('\'')
+            connection_id = m[1]
+            LOG.debug("Active IKE rule found for: \"%s\"" % connection_id)
+            connection_ids.append(connection_id)
+
+        if not connection_ids:
+            return
+
+        for rule in connection_ids:
+            cmd = ['/usr/bin/pfexec', '/usr/sbin/ikeadm', '-n', 'del', 'rule',
+                   rule]
+            try:
+                status, stderr = processutils.execute(*cmd)
+            except processutils.ProcessExecutionError as stderr:
+                pass
+
+        # Deleting the IKE rules from the running IKE service will
+        # cause the looping status process to mark any connections
+        # down and update the server side. We just need to wait a
+        # few seconds for it to notice.
+        time.sleep(5)
+
+
+def _get_template(template_file):
+    global JINJA_ENV
+    if not JINJA_ENV:
+        templateLoader = jinja2.FileSystemLoader(searchpath="/")
+        JINJA_ENV = jinja2.Environment(loader=templateLoader)
+    return JINJA_ENV.get_template(template_file)
+
+
+def delete_tunnels():
+    """Delete tunnel interfaces using dladm(1m)/ipadm(1m).
+
+       Tunneling in Solaris is done with actual tunnel interfaces, not
+       tunneling as policy which is customary in other operating systems.
+       Solaris tunnels are configured using ipadm(1m) and is separate from
+       the IKE configuration. Starting the IKE and IPsec services does not
+       configure the tunnels. The glue between the tunnel and IPsec policy
+       is the tunnel name. See comment in sync() for a description
+       of tunnel names.
+
+       Also remove any IPF bypass rules. We don't need
+       to delete the routes added by our evil twin add_tunnels()
+       because these get whacked when the tunnel is removed.
+       We are not really interested in any errors at this point, the
+       tunnels are being deleted because we are shutting down, or
+       we have new config.
+    """
+    global existing_tunnels
+    if not existing_tunnels:
+        LOG.info("VPNaaS has just started, no tunnels to whack.")
+        return
+
+    ipfilters_manager = net_lib.IPfilterCommand()
+
+    for idstr in existing_tunnels:
+        cmd = ['/usr/bin/pfexec', 'ipadm', 'delete-ip', idstr]
+        try:
+            stdout, stderr = processutils.execute(*cmd)
+        except processutils.ProcessExecutionError as stderr:
+            LOG.debug("\"%s\"" % stderr)
+        cmd = ['/usr/bin/pfexec', 'dladm', 'delete-iptun', idstr]
+        try:
+            stdout, stderr = processutils.execute(*cmd)
+        except processutils.ProcessExecutionError as stderr:
+            LOG.debug("\"%s\"" % stderr)
+
+    cmd = ['/usr/sbin/ipfstat', '-i']
+    p = Popen(cmd, stdout=PIPE, stderr=PIPE)
+    output, error = p.communicate()
+    if p.returncode != 0:
+        print "failed to retrieve IP interface names"
+    ifnames = output.splitlines()
+    LOG.debug("ifnames %s" % ifnames)
+    pass_in_rule = re.compile('pass in quick on')
+    for ifname in ifnames:
+        if not pass_in_rule.search(ifname):
+            continue
+        ipf_cmd = ['%s' % ifname]
+        LOG.info("Deleting IPF bypass: \"%s\"" % ipf_cmd)
+        ipfilters_manager.remove_rules(ipf_cmd, 4)
+
+    existing_tunnels = []
+
+
[email protected]_metaclass(abc.ABCMeta)
+class BaseSolaris():
+    """Solaris IPsec/IKE Service Manager
+       This class handles the generation of Solaris IKE (v1/v2)
+       configuration files and IPsec policy configuration using
+       templates. It also handles the starting/stopping of the
+       IPsec and IKE smf(5) services and plumbing of IP tunnels.
+
+       The configuration files are stored under:
+
+       /var/lib/neutron/ipsec/<router_UUID>
+
+       The smf(5) config_file properties for the policy and ike
+       services are modified to point to this location.
+    """
+
+    CONFIG_DIRS = [
+        'var/run',
+        'log',
+        'etc',
+        'etc/inet',
+        'etc/inet/ike',
+        'etc/inet/secret'
+    ]
+
+    DIALECT_MAP = {
+        "3des": "3des",
+        "aes-128": "aes(128..128)",
+        "aes-256": "aes(256..256)",
+        "aes-192": "aes(192..192)",
+        "group2": "2",
+        "group5": "5",
+        "group14": "14",
+        "group15": "15",
+        "bi-directional": "start",
+        "response-only": "add",
+        "v2": "ikev2",
+        "v1": "default"
+    }
+
+    def __init__(self, conf, process_id,
+                 vpnservice, namespace):
+        self.conf = conf
+        self.id = process_id
+        self.updated_pending_status = False
+        self.ike_running = False
+        self.namespace = namespace
+        self.connection_status = {}
+        self.connection_ids = []
+        self.ikeadm_fails = 0
+        self.check_interval = cfg.CONF.solaris.ipsec_status_check_interval
+        self.ikeadm_maxfails = cfg.CONF.solaris.status_maxfails
+        self.config_dir = os.path.join(
+            cfg.CONF.solaris.config_base_dir, self.id)
+        self.etc_dir = os.path.join(self.config_dir, 'etc/inet')
+        self.ike_svc = "network/ipsec/ike"
+        self.ipsec_svc = "network/ipsec/policy"
+        self.packet_logging = cfg.CONF.solaris.packet_logging
+        self.logging_level = cfg.CONF.solaris.logger_level
+        self.generate_config(vpnservice)
+        self.dump_config()
+        LOG.info("Configuring vpn-service: %s." % vpnservice)
+
+    def dump_config(self):
+        if not self.vpnservice:
+            LOG.warn("No VPNs configured.")
+            return
+
+        connections = self.vpnservice['ipsec_site_connections']
+        LOG.warn("New VPN configuration:")
+        for site in connections:
+            LOG.info("Site ID: \"%s\"" % site['id'])
+            LOG.info("\tTenant ID: \"%s\"" % site['tenant_id'])
+            LOG.info("\tIKE policy ID: \"%s\"" % site['ikepolicy_id'])
+            LOG.info("\tIPsec policy ID: \"%s\"" % site['ipsecpolicy_id'])
+            LOG.info("\tVPN service ID: \"%s\"" % site['vpnservice_id'])
+            LOG.info("\tPeer address: \"%s\"" % site['peer_address'])
+            LOG.info("\tRemote net ID: \"%s\"" % site['peer_cidrs'])
+            LOG.info("\tStatus: \"%s\"" % site['status'])
+
+    def translate_dialect(self):
+        if not self.vpnservice:
+            return
+        LOG.warn("Generating Solaris IKE/IPsec config files.")
+        for ipsec_site_conn in self.vpnservice['ipsec_site_connections']:
+            self._dialect(ipsec_site_conn, 'initiator')
+            self._dialect(ipsec_site_conn['ikepolicy'], 'ike_version')
+            for key in ['encryption_algorithm', 'auth_algorithm', 'pfs']:
+                self._dialect(ipsec_site_conn['ikepolicy'], key)
+                self._dialect(ipsec_site_conn['ipsecpolicy'], key)
+
+    def generate_config(self, vpnservice):
+        """Map neutron VPNaaS configuration to Solaris configuration
+           files using the templates.
+        """
+        self.vpnservice = vpnservice
+        self.translate_dialect()
+
+    def _dialect(self, obj, key):
+        obj[key] = self.DIALECT_MAP.get(obj[key], obj[key])
+
+    @abc.abstractmethod
+    def ensure_configs(self):
+        pass
+
+    def generate_config_file(self, kind, template, vpnservice):
+        """Generate IPsec policy/IKEv1/IKEv2/PSK configuration files.
+           This method may get called more than once if there is more
+           than one vpn-service object. The configuration data is
+           appended to the file in this case.
+        """
+        LOG.info("Generating \"%s\" config." % kind)
+        LOG.debug("Using template file: \"%s\"" % template)
+        config_str = self.gen_config_content(template, vpnservice)
+        config_file_name = self.get_config_filename(kind)
+        LOG.debug("New contents of: \"%s\"" % config_file_name)
+        LOG.debug("\n\n%s\n" % config_str)
+        with open(config_file_name, 'aw') as confile:
+            confile.write(config_str)
+
+    def get_config_filename(self, kind):
+        config_dir = self.etc_dir
+        return os.path.join(config_dir, kind)
+
+    def create_path(self, dir_path):
+        if not os.path.isdir(dir_path):
+            os.makedirs(dir_path, 0o755)
+
+    def create_config_dir(self, vpnservice):
+        """Create config directory if it does not exist."""
+        self.create_path(self.config_dir)
+        for subdir in self.CONFIG_DIRS:
+            dir_path = os.path.join(self.config_dir, subdir)
+            self.create_path(dir_path)
+
+    def gen_config_content(self, template_file, vpnservice):
+        """Generate IPsec configuration files using templates.
+        """
+        template = _get_template(template_file)
+
+        return template.render(
+            {'vpnservice': vpnservice,
+             'state_path': cfg.CONF.state_path})
+
+    @abc.abstractmethod
+    def get_status(self):
+        pass
+
+    @property
+    def status(self):
+        # This sets the status of vpn-service-list
+        if self.active:
+            return constants.ACTIVE
+        return constants.DOWN
+
+    @property
+    def active(self):
+        """Check to see if IKE is running. The output
+            is parsed to update status of ipsec-site-connection.
+            If this fails, one of the following happened:
+                The IKE daemon crashed.
+                The IKE service was disabled from the command line.
+                The l3_agent is being shutdown.
+        """
+        LOG.debug("Getting status of IKE daemon")
+        global being_shutdown
+        if being_shutdown:
+            LOG.warn("VPNaaS being shutdown")
+            return False
+
+        # IKE is running. Update status of all connections
+        # IKE knows about.
+        self.get_connection_status()
+        return True
+
+    def update(self):
+        """Update Status based on vpnservice configuration.
+        """
+        LOG.debug("update")
+        if self.vpnservice and not self.vpnservice['admin_state_up']:
+            self.disable()
+        else:
+            self.enable()
+
+        self.updated_pending_status = True
+        self.vpnservice['status'] = self.status
+
+    def enable(self):
+        LOG.debug("enable")
+        try:
+            if self.active:
+                self.restart()
+            else:
+                self.start()
+        except RuntimeError:
+            LOG.exception(
+                ("Failed to enable VPNaaS on router ID: \"%s\""),
+                self.id)
+
+    def disable(self):
+        LOG.debug("disable")
+        try:
+            if self.active:
+                self.stop()
+        except RuntimeError:
+            LOG.exception(
+                ("Failed to disable VPNaaS on router ID: \"%s\""),
+                self.id)
+
+    @abc.abstractmethod
+    def restart(self):
+        """Restart VPNaaS.
+        """
+
+    @abc.abstractmethod
+    def start(self):
+        """Start VPNaaS.
+        """
+
+    @abc.abstractmethod
+    def stop(self):
+        """Stop VPNaaS.
+        """
+
+    def copy_process_status(self, process):
+        return {
+            'id': process.vpnservice['id'],
+            'status': process.status,
+            'updated_pending_status': process.updated_pending_status,
+            'ipsec_site_connections': copy.deepcopy(process.connection_status)
+        }
+
+    def mark_connections(self, new_state):
+        """Update the status of all of the ipsec-site-connections.
+           Mark all the connections this router knows about as ACTIVE or DOWN.
+           The update_pending_status flag is not set. This is
+           because we will report status back to the l3 agent directly.
+           We don't want the process_status_cache_check() method to change
+           it back again.
+
+           This should be revisited if we support more than one router.
+        """
+        if not self.vpnservice:
+            LOG.warn("No VPNs configured.")
+            return
+
+        status_changed_vpn_services = []
+        new_status = self.copy_process_status(self)
+        LOG.info("Marking all site connections %s" % new_state)
+        for conn in new_status[IPSEC_CONNS]:
+            new_status[IPSEC_CONNS][conn] = {
+                'status': new_state,
+                'updated_pending_status': True
+            }
+        status_changed_vpn_services.append(new_status)
+        self.agent_rpc.update_status(
+            self.context,
+            status_changed_vpn_services)
+
+    def get_connection_status(self):
+	"""Update the status of the ipsec-site-connection
+           based on the output of ikeadm(1m). See get_status()
+           for further comments. Any connections that ended up
+           on the badboys list will be marked as state DOWN.
+        """
+        global being_shutdown
+        global restarting
+
+        if not self.vpnservice:
+            LOG.warn("No VPNs configured.")
+            return True
+
+        if restarting:
+            LOG.warn("IKE restarting")
+            return True
+        self.ike_was_running = self.ike_running
+        if not self.get_status():
+            if being_shutdown:
+                self.ikeadm_fails = 0
+            else:
+                LOG.warn("IKE daemon is not running.")
+                self.ikeadm_fails += 1
+            if self.ikeadm_fails > self.ikeadm_maxfails:
+                LOG.warn("IKE daemon still not running, something's wrong.")
+                restarting = True
+                being_shutdown = True
+                self.mark_connections(constants.DOWN)
+                restarting = False
+                being_shutdown = False
+                self.ikeadm_fails = 0
+                self.ike_running = False
+
+            return False
+
+        if self.ike_running and not self.ike_was_running:
+            LOG.warn("IKE daemon has been restarted")
+            self.mark_connections(constants.ACTIVE)
+            return True
+        for connection_id in self.connection_ids:
+            if not self.connection_status.get(connection_id):
+                self.connection_status[connection_id] = {
+                    'status': None,
+                    'tun_id': "",
+                    'updated_pending_status': False
+                }
+            new_status = constants.ACTIVE
+            for badboy in self.badboys:
+                if badboy['id'] == connection_id:
+                    new_status = constants.DOWN
+
+            self.connection_status[connection_id] = {
+                'status': new_status,
+                'updated_pending_status': True,
+            }
+
+        return True
+
+
+class SolarisIPsecProcess(BaseSolaris):
+    """Solaris IPsec Process manager class.
+       This class handles the configuration of IKE and IPsec
+       on Solaris. The configuration files are generated under the
+       standard neutron path:
+
+       /var/lib/neutron/ipsec/<router UUID>/etc/inet
+
+       This is a non default path for the Solaris utilities that read
+       these files. Unlike Linux, Solaris services are started by smf(5)
+       which passes parameters to the command(s) that make up that service.
+       For IPsec there are four services of interest:
+
+       svc:/network/ipsec/ike:default
+       svc:/network/ipsec/ike:ikev2
+       svc:/network/ipsec/policy:default
+       svc:/network/ipsec/policy:logger
+
+       The method service_setprops() sets the smf(5) properties to paths
+       based on the path above, so the services know where to find their
+       configuration.
+
+       Tunnel configuration is handled externally from IKE. The Solaris
+       commands dladm(1m) and ipadm(1m) use used to create the IP tunnels.
+       The tunnel name is the glue that binds the IPsec policy to a
+       particular tunnel. The tunnel name is based on the outer source and
+       destination IP addresses. This is because only one tunnel can exist
+       between any pair of addresses. The tunnel may have multiple inner
+       IP address pairs.
+
+       The status of the VPN connection is sampled regularly by the
+       get_status() method. If any state changes, this is reported back to
+       the l3 agent by report_status(), part of the IPsecDriver class.
+
+       get_status() calls the Solaris utility ikeadm(1m) which queries the
+       running IKE daemon. It determins that a VPN is ACTIVE if there is an IKE
+       rule in place. There may not actually be active IPsec SAs at this point
+       because Solaris IPsec connections are established on-demand, not part
+       of the start process.
+
+       Solaris commands mentioned above are called directly using pfexec(1).
+    """
+    def __init__(self, conf, process_id,
+                 vpnservice, namespace):
+        LOG.warn("Configuring IPsec/IKE")
+        super(SolarisIPsecProcess, self).__init__(
+            conf, process_id,
+            vpnservice, namespace)
+        self.secrets_file = os.path.join(
+            self.etc_dir, 'secret/ike.preshared')
+        self.ikev2_secrets_file = os.path.join(
+            self.etc_dir, 'ike/ikev2.preshared')
+        self.config_file = os.path.join(
+            self.etc_dir, 'ipsecinit.conf')
+        self.ike_config_file = os.path.join(
+            self.etc_dir, 'ike/config')
+        self.ikev2_config_file = os.path.join(
+            self.etc_dir, 'ike/ikev2.config')
+        self.process = process_id
+        self.badboys = []
+        global being_shutdown
+        being_shutdown = False
+        self.ike_version = ""
+        self.agent_rpc = IPsecVpnDriverApi(topics.IPSEC_DRIVER_TOPIC)
+        self.context = context.get_admin_context_without_session()
+        self.ipfilters_manager = net_lib.IPfilterCommand()
+        LOG.info("Solaris IPsec/IKE Configuration manager loaded.")
+
+    def ensure_configs(self):
+        """Generate config files which are needed for Solaris IPsec/IKE.
+        This function will generate the parent directory if needed.
+        Set the SMF(5) properties for the policy/IKE services to use
+        the configuration files here as opposed to those in /etc/inet.
+        """
+
+        connections = self.vpnservice['ipsec_site_connections']
+        # This is going to need a lot more work if we ever support IKEv1
+        # and IKEv2 at the same time.
+        for site in connections:
+            self.ike_version = site['ikepolicy']['ike_version']
+            LOG.debug("Using IKE service: \"ike:%s\"" % self.ike_version)
+
+        self.create_config_dir(self.vpnservice)
+        self.generate_config_file(
+            'ipsecinit.conf',
+            self.conf.solaris.ipsec_config_template,
+            self.vpnservice)
+        self.generate_config_file(
+            'ike/config',
+            self.conf.solaris.ike_config_template,
+            self.vpnservice)
+        self.generate_config_file(
+            'secret/ike.preshared',
+            self.conf.solaris.ike_secret_template,
+            self.vpnservice)
+        self.generate_config_file(
+            'ike/ikev2.config',
+            self.conf.solaris.ikev2_config_template,
+            self.vpnservice)
+        self.generate_config_file(
+            'ike/ikev2.preshared',
+            self.conf.solaris.ikev2_secret_template,
+            self.vpnservice)
+
+    def add_tunnels(self):
+        """Add tunnel interfaces using dladm(1m) and
+           ipadm(1m).
+
+        """
+        connections = self.vpnservice['ipsec_site_connections']
+        for site in connections:
+            tun_name = site['tunnel_id']
+            subnet = self.vpnservice['subnet']
+            peer = site['peer_address']
+            peer_cidr = str(site['peer_cidrs'][0])
+            o_local = self.vpnservice['external_ip']
+            o_remote = peer
+            i_local = subnet['gateway_ip']
+            # Need an address for the tunnel end point.
+            # Use the first address of the remote network.
+            count = 0
+            for i_remote in IPNetwork(peer_cidr):
+                count += 1
+                if (count == 2):
+                    break
+
+            LOG.info("Adding tunnel - tunnel_id: \"%s\"" % tun_name)
+
+            # Add the IP tunnel using dladm(1m). Its possible for more than
+            # one IPsec rule to use the same pair of IP addresses for the
+            # outer addresses of a tunnel. We can only have a single tunnel
+            # between any pair of addresses. So if dladm(1m) fails because
+            # the tunnel already exists, we can ignore this error.
+            cmd = ['/usr/bin/pfexec', 'dladm', 'create-iptun', '-t', '-T',
+                   'ipv4', '-a', "local=%s,remote=%s" % (o_local, o_remote),
+                   tun_name]
+            try:
+                stdout, stderr = processutils.execute(*cmd)
+            except processutils.ProcessExecutionError as stderr:
+                m = re.search('object already exists', str(stderr))
+                if m:
+                    LOG.warn("Tunnel with Outer IP: %s -> %s, Inner: "
+                             "%s -> %s already exists."
+                             % (o_local, o_remote, i_local, i_remote))
+                else:
+                    LOG.warn("Error adding tunnel - Outer IP: %s -> %s,"
+                             "Inner: %s -> %s"
+                             % (o_local, o_remote, i_local, i_remote))
+                    LOG.warn("\"%s\"" % stderr)
+                    self.badboys.append(site)
+                    continue
+
+            LOG.info(
+                "Added tunnel - Outer IP: %s -> %s, Inner: %s -> %s"
+                % (o_local, o_remote, i_local, i_remote))
+
+            cmd = ['/usr/bin/pfexec', 'ipadm', 'create-ip', '-t', tun_name]
+            try:
+                stdout, stderr = processutils.execute(*cmd)
+            except processutils.ProcessExecutionError as stderr:
+                if re.search('Interface already exists', str(stderr)):
+                    LOG.warn(
+                       "Tunnel interface: %s already exists." % tun_name)
+                else:
+                    LOG.warn("Error creating tunnel")
+                    LOG.warn("\"%s\"" % stderr)
+                    self.badboys.append(site)
+                    continue
+            cmd = ['/usr/bin/pfexec', 'ipadm', 'create-addr', '-t',  '-T',
+                   'static', '-a', "local=%s,remote=%s" % (i_local, i_remote),
+                   tun_name]
+            try:
+                stdout, stderr = processutils.execute(*cmd)
+            except processutils.ProcessExecutionError as stderr:
+                LOG.warn("Error creating tunnel")
+                LOG.warn("\"%s\"" % stderr)
+                self.badboys.append(site)
+                continue
+
+            cmd = ['/usr/bin/pfexec', 'route', '-n', 'add', 'net', peer_cidr,
+                   i_remote]
+            LOG.info("Adding route: %s -> %s" % (peer_cidr, i_remote))
+            try:
+                stdout, stderr = processutils.execute(*cmd)
+            except processutils.ProcessExecutionError as stderr:
+                m = re.search('entry exists', str(stderr))
+                if m:
+                    LOG.warn("Route already exists.")
+                else:
+                    LOG.warn("Error adding route.")
+                    self.badboys.append(site)
+                    continue
+
+            # Now for some Policy Based Routing (PBR) voodoo. When the EVS
+            # adds a virtual network, it adds a PBR rule that looks like this:
+            #
+            # pass in on l3ia18d6189_8_0 to l3e2d9b3c1c_8_0:10.132.148.1
+            #     from any to !192.168.80.0/24
+            #
+            # What this does is to pass all packets leaving interface
+            # "l3ia18d6189_8_0" directly to interface/address
+            # "l3e2d9b3c1c_8_0:10.132.148.1" *UNLESS* the packet is destined to
+            # "192.168.80.0/24" which is a local address. This allows
+            # instances on the virtual network to reach real addresses on the
+            # Internet.
+            #
+            # When we create a VPN to another virtual network, we need to
+            # ensure packets destined for that head over the IP tunnel instead.
+            # To make this happen, we find the interface associated with our
+            # network and add a bypass rule. The rule looks like this:
+            #
+            # pass in quick on l3ia18d6189_8_0 from any to 192.168.100.0/24
+            #
+            # There will be one of these pass rules for each remote network.
+            # The "quick" keyword ensures it matches *BEFORE* the PBR rule.
+
+            cmd = ['/usr/sbin/ipfstat', '-i']
+            p = Popen(cmd, stdout=PIPE, stderr=PIPE)
+            output, error = p.communicate()
+            if p.returncode != 0:
+                print "failed to retrieve IP interface names"
+            ifnames = output.splitlines()
+            far_subnet = re.compile(subnet['cidr'])
+            for ifname in ifnames:
+                if not ifname.startswith('pass in on'):
+                    continue
+                if far_subnet.search(ifname):
+                    rule_args = ifname.split(' ')
+                    ifa = rule_args[3]
+                    LOG.debug("Found interface for VPN subnet: \"%s\"" % ifa)
+
+            ipf_cmd = ['pass in quick on %s from any to %s' % (ifa, peer_cidr)]
+            LOG.info("No PBR for: \"%s\"" % peer_cidr)
+            LOG.debug("Adding PBR bypass rule: \"%s\"" % ipf_cmd)
+            self.ipfilters_manager.add_rules(ipf_cmd, 4)
+
+    def get_status(self):
+        """Check to see if IKE is configured and running.
+           If ikeadm(1m) fails, because in.iked(1m) is not
+           running, the vpn-service will be switched from
+           ACTIVE to DOWN.
+
+           Each time a new configuration has been loaded the
+           IKE daemon service will be restarted. If the restart
+           has not yet happened, or is happening now, don't
+           report status as it could be stale.
+
+           If the VPN service is being stopped then always
+           get the status using ikeadm(1m), even if it's stale.
+           This information is used as a best effort to unplumb
+           tunnels. The VPN service is stopped when the l3 agent
+           smf(5) service is disabled or restarted. It's also
+           stopped before new configuration is loaded, then
+           restarted.
+
+           Assumption: Only one IKE service is running. If
+           we support IKEv1 and IKEv2 at the same time, this
+           code will need to be modified to look at rules
+           configured for IKEv1 and IKEv2.
+
+           By default the status of the service is checked every 60
+           seconds. The interval can be chanmged by setting:
+
+           ipsec_status_check_interval=<new_value>
+
+           under the [solaris] section of vpn_agent.ini .
+
+           Cache a list of ipsec-site-connections based on output of
+           ikeadm(1m). We are looking for the line in an IKE rule that
+           contains the tag "Label". The value following this will be the
+           connection_id.
+
+           If ikeadm fails, list of connection_ids is unchanged.
+        """
+        LOG.debug("Looking for IPsec site connections.")
+        cmd = ['/usr/bin/pfexec', '/usr/sbin/ikeadm', '-n', 'dump', 'rule']
+        try:
+            status, stderr = processutils.execute(*cmd)
+        except processutils.ProcessExecutionError as stderr:
+            LOG.warn("IKE daemon does not appear to be running.")
+            LOG.debug("\"%s\"" % stderr)
+            return False
+
+        self.ikeadm_fails = 0
+        self.connection_ids = []
+        for line in status.split('\n'):
+            m = re.search('Label', line)
+            if not m:
+                continue
+            m = line.split('\'')
+            connection_id = m[1]
+            LOG.debug("IKE rule found for: \"%s\"" % connection_id)
+            self.connection_ids.append(connection_id)
+
+        self.ike_running = True
+        return True
+
+    def restart(self):
+        """Restart VPNaaS.
+           Some optimization possible here, a restart does not
+           require property setting. If we are not running, we
+           don't need to disable stuff. See self.start(), self.stop()
+        """
+        LOG.warn("Restarting VPNaaS")
+        self.stop()
+        self.start()
+        return
+
+    def start(self):
+        """Start VPNaaS.
+        """
+        LOG.warn("Start")
+        if not self.vpnservice:
+            LOG.warn("No VPNs configured.")
+            return
+
+        LOG.warn("Starting VPNaaS")
+        self.ensure_configs()
+        self.service_setprops()
+        self.enable_services()
+        self.add_tunnels()
+
+    def stop(self):
+        self.connection_status = {}
+
+        self.get_status()
+        self.flush_sas()
+        self.mark_connections(constants.DOWN)
+        disable_services()
+
+    def flush_sas(self):
+        """Flush IPsec SAs, this should be done with rad(1) eventually.
+           For disable ignore any errors.
+        """
+        LOG.info("Flushing IPsec SAs.")
+        cmd = ['/usr/bin/pfexec', '/usr/sbin/ipseckey', 'flush']
+        try:
+            stdout, stderr = processutils.execute(*cmd)
+        except processutils.ProcessExecutionError as stderr:
+            LOG.debug("\"%s\"" % stderr)
+
+    def service_setprops(self):
+        """Enable IPsec Policy/IKE smf(5) services using rad(1)
+        """
+
+        rad_connection = rad.connect.connect_unix()
+
+        LOG.info(
+            "Setting IPsec policy config file to: \"%s\"" % self.config_file)
+        instance = rad_connection.get_object(
+           smfb.Instance(),
+           rad.client.ADRGlobPattern({'service': self.ipsec_svc,
+                                     'instance': 'default'}))
+        instance.writeProperty('config/config_file', smfb.PropertyType.ASTRING,
+                               [self.config_file])
+        instance.refresh()
+
+        LOG.info("Setting IKEv1 config file to: \"%s\"" % self.ike_config_file)
+        instance = rad_connection.get_object(
+           smfb.Instance(),
+           rad.client.ADRGlobPattern({'service': self.ike_svc,
+                                     'instance': 'default'}))
+        instance.writeProperty('config/config_file', smfb.PropertyType.ASTRING,
+                               [self.ike_config_file])
+
+        LOG.info("Setting IKEv1 PSK file to: \"%s\"" % self.secrets_file)
+        instance.writeProperty('config/preshared_file',
+                               smfb.PropertyType.ASTRING, [self.secrets_file])
+        instance.refresh()
+
+        LOG.info(
+            "Setting IKEv2 config file to: \"%s\"" % self.ikev2_config_file)
+        instance = rad_connection.get_object(
+           smfb.Instance(),
+           rad.client.ADRGlobPattern({'service': self.ike_svc,
+                                     'instance': 'ikev2'}))
+        instance.writeProperty('config/config_file', smfb.PropertyType.ASTRING,
+                               [self.ikev2_config_file])
+
+        LOG.info("Setting IKEv2 PSK file to: \"%s\"" % self.ikev2_secrets_file)
+        instance.writeProperty('config/preshared_file',
+                               smfb.PropertyType.ASTRING,
+                               [self.ikev2_secrets_file])
+        instance.refresh()
+
+        if self.packet_logging:
+            LOG.info(
+                "Setting IPsec policy logger to: \"%s\"" % self.logging_level)
+            instance = rad_connection.get_object(
+               smfb.Instance(),
+               rad.client.ADRGlobPattern({'service': self.ipsec_svc,
+                                         'instance': 'logger'}))
+            instance.writeProperty('config/log_level',
+                                   smfb.PropertyType.ASTRING,
+                                   [self.logging_level])
+            instance.refresh()
+
+        rad_connection.close()
+
+    def enable_services(self):
+        """Enable IPsec Policy/IKE smf(5) services using rad(1).
+        """
+        LOG.info("Enabling IPsec policy.")
+        rad_connection = rad.connect.connect_unix()
+        instance = rad_connection.get_object(
+           smfb.Instance(),
+           rad.client.ADRGlobPattern({'service': self.ipsec_svc,
+                                     'instance': 'default'}))
+        instance.enable(True)
+
+        LOG.info("Enabling IKE version \"%s\"" % self.ike_version)
+        instance = rad_connection.get_object(
+           smfb.Instance(),
+           rad.client.ADRGlobPattern({'service': self.ike_svc,
+                                     'instance': self.ike_version}))
+        instance.enable(True)
+
+        if self.packet_logging:
+            LOG.warn("Enabling IPsec packet logger.")
+            instance = rad_connection.get_object(
+               smfb.Instance(),
+               rad.client.ADRGlobPattern({'service': self.ipsec_svc,
+                                         'instance': 'logger'}))
+            instance.enable(True)
+
+        rad_connection.close()
+        global restarting
+        restarting = False
+        self.ike_running = True
+
+
+class IPsecVpnDriverApi(object):
+    """IPSecVpnDriver RPC api."""
+    def __init__(self, topic):
+        target = oslo_messaging.Target(topic=topic, version='1.0')
+        self.client = n_rpc.get_client(target)
+
+    def get_vpn_services_on_host(self, context, host):
+        """Get list of vpnservices.
+
+           The vpnservices including related ipsec_site_connection,
+           ikepolicy and ipsecpolicy on this host
+        """
+        LOG.debug("Server requested status from router.")
+        cctxt = self.client.prepare()
+        return cctxt.call(context, 'get_vpn_services_on_host', host=host)
+
+    def update_status(self, context, status):
+        """Update local status.
+            This method call updates status attribute of
+            VPNServices.
+        """
+        LOG.debug("Current site status: \"%s\"" % status)
+        cctxt = self.client.prepare()
+        return cctxt.call(context, 'update_status', status=status)
+
+
[email protected]_metaclass(abc.ABCMeta)
+class IPsecDriver(device_drivers.DeviceDriver):
+    """Methods in this class are called by the l3 agent.
+
+       Check to see if VPNaaS is enabled in neutron.conf. If it's
+       not, just return and don't start the looping event.
+
+       The code here generates IPsec/IKE configuration
+       for Solaris. There is a looping event which periodically
+       runs and, if state has changed this is reported back to the
+       l3 agent.
+
+       The looping method calls get_status() at a regular interval.
+       The interval (in seconds) is defined by:
+
+       ipsec_status_check_interval
+
+       See solaris_opts for more details
+
+       References to "process" are a little misleading. This code
+       is not managing processes, its managing the IPsec/IKE
+       configuration on a router.
+
+       For the purposes of this code:
+
+       router_id == process_id
+
+       This code is called once when the service is started. Variables
+       are valid until the service is disabled.
+    """
+    RPC_API_VERSION = '1.0'
+
+    target = messaging.Target(version=RPC_API_VERSION)
+
+    def __init__(self, vpn_service, host):
+        self.conf = vpn_service.conf
+        self.host = host
+        self.conn = n_rpc.create_connection(new=True)
+        self.context = context.get_admin_context_without_session()
+        self.topic = topics.IPSEC_AGENT_TOPIC
+        node_topic = '%s.%s' % (self.topic, self.host)
+        not_configured = True
+
+        config = iniparse.RawConfigParser()
+        try:
+            config.read('/etc/neutron/neutron.conf')
+        except:
+            LOG.info("Unable to read /etc/neutron/neutron.conf")
+            sys.exit(1)
+
+        try:
+            vpnaas = config.get('DEFAULT', 'service_plugins')
+            for arg in vpnaas.split(","):
+                if re.match(r'\bvpnaas\b', arg):
+                    not_configured = False
+                    break
+        except:
+            pass
+
+        if not_configured:
+            LOG.info("VPNaaS has not been configured.")
+            return
+
+        self.processes = {}
+        self.process_status_cache = {}
+
+        self.endpoints = [self]
+        self.conn.create_consumer(node_topic, self.endpoints, fanout=False)
+        self.conn.consume_in_threads()
+
+        self.agent_rpc = IPsecVpnDriverApi(topics.IPSEC_DRIVER_TOPIC)
+        self.process_status_cache_check = loopingcall.FixedIntervalLoopingCall(
+            self.report_status, self.context)
+        LOG.info("Value of \"ipsec_status_check_interval\": \"%s\" Seconds." %
+                 cfg.CONF.solaris.ipsec_status_check_interval)
+        self.process_status_cache_check.start(
+            interval=cfg.CONF.solaris.ipsec_status_check_interval)
+        LOG.info("Solaris status reporting driver started.")
+
+    def vpnservice_updated(self, context, **kwargs):
+        """VPN Service Driver will call this method
+           when VPN configuration objects have been modified. This
+           will call sync(), which will restart the device driver.
+        """
+        self.sync(context, [])
+
+    def report_status(self, context):
+        """This code is called when a new configuration is loaded, via sync().
+           It is also called periodically every ipsec_status_check_interval
+           seconds. If state has changed, report this back to the l3 agent.
+
+           Solaris currently only supports a single router.
+
+           The connection cache contains a list of the ipsec-site-connection's
+           that are in the neutron server configuration. This may differ from
+           what is actually configured.
+
+           The connection cache contains a list of the ipsec-site-connection's
+           that are in the neutron server configuration. This may differ from
+           what is actually configured.
+
+           "process" is misleading, its really refers to a router.
+        """
+        global being_shutdown
+        if being_shutdown:
+            LOG.debug("Being shutdown - skipping VPNaaS status report.")
+            return
+
+        LOG.info("Getting VPNaaS status")
+        status_changed_vpn_services = []
+
+        for process in self.processes.values():
+            previous_status = self.get_process_status_cache(process)
+            if self.has_status_changed(process, previous_status):
+                LOG.info(
+                    "Status of router ID: \"%s\" has changed." % process.id)
+                new_status = self.copy_process_status(process)
+
+                if not self.check_connection_cache(process, new_status):
+                    LOG.debug("Connection Cache stale.")
+
+                status_changed_vpn_services.append(new_status)
+                self.process_status_cache[process.id] = (
+                    self.copy_process_status(process))
+                self.unset_updated_pending_status(process)
+
+        if status_changed_vpn_services:
+            LOG.warn("Updating VPN Site status in database.")
+            self.agent_rpc.update_status(context, status_changed_vpn_services)
+
+    @lockutils.synchronized('vpn-agent', 'neutron-')
+    @abc.abstractmethod
+    def create_process(self, process_id, vpnservice, namespace):
+        pass
+
+    def enable_vpn(self, process_id, vpnservice=None):
+        """Configure IPsec, IKE, tunnels on this router.
+        """
+        LOG.info("Configuring VPNaaS on router: \"%s\"" % process_id)
+        process = self.processes.get(process_id)
+        if not process or not process.namespace:
+            namespace = ""
+            process = self.create_process(
+                process_id,
+                vpnservice,
+                namespace)
+            self.processes[process_id] = process
+        elif vpnservice:
+            process.generate_config(vpnservice)
+        return process
+
+    def create_router(self, process_id):
+        """"Handling create router event.
+        """
+        try:
+            if process_id in self.processes:
+                process = self.processes[process_id]
+                LOG.info("Creating router ID: \"%s\"" % process)
+                process.enable()
+        except:
+            pass
+
+    def destroy_router(self, process_id):
+        """Handling destroy_router event.
+        """
+        LOG.info("Destroying router ID: \"%s\"" % process_id)
+        try:
+            processes = self.processes
+        except:
+            return
+
+        if process_id in processes:
+            process = processes[process_id]
+            process.disable()
+            vpnservice = process.vpnservice
+            del processes[process_id]
+
+    def get_process_status_cache(self, process):
+        if not self.process_status_cache.get(process.id):
+            self.process_status_cache[process.id] = {
+                'status': None,
+                'id': process.vpnservice['id'],
+                'updated_pending_status': False,
+                'ipsec_site_connections': {}}
+        return self.process_status_cache[process.id]
+
+    def has_status_changed(self, process, previous_status):
+        """Get the current status from ikeadm(1m). Note that
+           process.status *calls* active.
+           There is a lot of debug here, because if this function fails
+           nothing gets updated.
+        """
+        if process.updated_pending_status:
+            LOG.debug("updated_pending_status: True")
+            return True
+        if process.status != previous_status['status']:
+            LOG.debug("Current Router status != Previous status")
+            return True
+        ps = previous_status['ipsec_site_connections']
+        if process.connection_status != ps:
+            LOG.debug("Current VPN status != Previous status")
+            return True
+
+        found_previous_connection = False
+
+        ps = previous_status['ipsec_site_connections']
+        for ipsec_site_conn in ps.keys():
+            LOG.debug("Site connection ID: \"%s\" State: \"%s[%s]\"" %
+                      (ipsec_site_conn, ps[ipsec_site_conn]['status'],
+                       ps[ipsec_site_conn]['updated_pending_status']))
+            found_previous_connection = False
+
+            for new_ipsec_site_conn in process.connection_ids:
+                if ipsec_site_conn == new_ipsec_site_conn:
+                    LOG.debug(
+                        "Found entry for ID: \"%s\"" % new_ipsec_site_conn)
+                    found_previous_connection = True
+            if not found_previous_connection:
+                LOG.debug(
+                   "Unable to find entry for ID: \"%s\"" % ipsec_site_conn)
+                return True
+            continue
+
+        return False
+
+    def unset_updated_pending_status(self, process):
+        process.updated_pending_status = False
+        for connection_status in process.connection_status.values():
+            connection_status['updated_pending_status'] = False
+
+    def copy_process_status(self, process):
+        return {
+            'id': process.vpnservice['id'],
+            'status': process.status,
+            'updated_pending_status': process.updated_pending_status,
+            'ipsec_site_connections': copy.deepcopy(process.connection_status)
+        }
+
+    def check_connection_cache(self, process, new_status):
+        """Verify the site connection cache.
+
+           This is called as a result of a sync() from the l3 agent.
+           The new configuration may differ from the current content
+           of the cache. If an ipsec-site-connection exists in the cache
+           but is no longer part of the new configuration (ie: it was
+           deleted) report this ipsec-site-connection as DOWN.
+
+           Note process_id is really the router UUID.
+        """
+        process_id = process.id
+        return_value = True
+        if process_id in self.process_status_cache:
+            LOG.debug(
+                "Checking connection cache of router ID: \"%s\"" % process_id)
+            stale_entries = []
+            cache = self.process_status_cache[process_id]
+            for site_conn in cache[IPSEC_CONNS]:
+                status = cache[IPSEC_CONNS][site_conn]['status']
+                LOG.debug(
+                    "Cache has [%s] entry for site ID: \"%s\""
+                    % (status, site_conn))
+                if site_conn not in process.connection_ids:
+                    LOG.warn(
+                        "Site connection \"%s\" appears to have been deleted."
+                        % site_conn)
+                    return_value = False
+                    new_status[IPSEC_CONNS][site_conn] = {
+                        'status': constants.DOWN,
+                        'updated_pending_status': True
+                    }
+                    stale_entries.append(site_conn)
+
+            for badboy in stale_entries:
+                cache[IPSEC_CONNS].pop(badboy)
+
+            return return_value
+
+    @lockutils.synchronized('vpn-agent', 'neutron-')
+    def sync(self, context, routers):
+        """Sync is called by the server side of neutron.
+           This will be called whenever new configuration is
+           delivered from the server. This forces the underlying
+           IPsec/IKE services to be disabled and restarted with
+           freshly generated configuration files.
+
+           Follow process.update() to see what happens.
+
+           The terminology "process" is very misleading. It in fact
+           is a reference to a router object.
+
+           The code below loops through the list of routers configured
+           and enables the VPNs on them. Currently Solaris only supports
+           a single router in any one EVS. It will be a short list ...
+
+           We no longer have access to the previous configuration. The new
+           configuration may well be different, so we have to delete
+           existing configuration and tear down any tunnels. The tunnel
+           configuration is not part of IPsec/IKE. Tunnel interfaces do
+           not go away when IPsec/IKE services are restarted. A global
+           list existing_tunnels[] is used to cache the tunnels created.
+
+           The first time the driver is loaded, when the service is first
+           started, this list will be empty. The smf(5) start method checks
+           to see if there are any stray tunnels.
+
+           Remove all configuration files under <router_UUID>.
+           This directory structure is only used by the VPNaaS driver. It's
+           recreated every time the driver is loaded, or new configuration is
+           sent to the driver. Any errors generated deleting this directory
+           structure can be safely ignored.
+
+           The vpn-service object does not have the tunnel id, which
+           we need for Solaris tunnels. We will add it here.
+           Solaris tunnel names (see dladm(1m)) must start with an
+           alphabetic character and end with a decimal number and
+           be unique.
+
+           Solaris tunnels are not part of the IPsec/IKE configuration.
+           The glue between the IPsec policy and tunnels is the name
+           of the tunnel. The tunnel interface is created with dladm(1m).
+           If there are multiple VPNs using the same outer tunnel IP addresses
+           then they will share the same tunnel. To ensure that only one
+           tunnel is created between any pair of addresses, the tunnel name
+           is constructed as follows:
+
+           ost[S]_[D]
+
+           Where S is the outer source address, represented as a decimal
+           number and D is the outer destination address represented as a
+           decimal number. The same convention is used for IPsec policy.
+        """
+        LOG.warn("Neutron: Syncing VPN configuration.")
+        try:
+            vpnservices = self.agent_rpc.get_vpn_services_on_host(
+                context, self.host)
+        except:
+            LOG.warn("No VPN")
+            return
+
+        router_ids = [vpnservice['router_id'] for vpnservice in vpnservices]
+        delete_tunnels()
+
+        global existing_tunnels
+        # This is a list of one or more vpn-service objects.
+        vpnservices = self.agent_rpc.get_vpn_services_on_host(
+            context, self.host)
+
+        # Remove old configuration files.
+        try:
+            shutil.rmtree(os.path.join(cfg.CONF.solaris.config_base_dir,
+                          vpnservice['router_id']))
+        except:
+            pass
+
+        # Add tunnel_id's
+        for vpnservice in vpnservices:
+            for ipsec_site_conn in vpnservice['ipsec_site_connections']:
+                local = vpnservice['external_ip']
+                remote = ipsec_site_conn['peer_address']
+                packedIP = socket.inet_aton(local)
+                l = struct.unpack("!L", packedIP)[0]
+                packedIP = socket.inet_aton(remote)
+                r = struct.unpack("!L", packedIP)[0]
+                tun_name = "ost%s_%s" % (l, r)
+                ipsec_site_conn['tunnel_id'] = tun_name
+                LOG.debug("Added tunnel \"%s\" to vpn-service: %s" %
+                          (tun_name, vpnservice['id']))
+                # Next time we restart, these tunnels will be removed.
+                if tun_name not in existing_tunnels:
+                    existing_tunnels.append(tun_name)
+
+        for vpnservice in vpnservices:
+            process = self.enable_vpn(
+                vpnservice['router_id'], vpnservice=vpnservice)
+
+            process.update()
+
+        for router in routers:
+            # We are using router id as process_id
+            process_id = router['id']
+            if process_id not in router_ids:
+                process = self.enable_vpn(process_id)
+                self.destroy_router(process_id)
+
+        process_ids = [process_id
+                       for process_id in self.processes
+                       if process_id not in router_ids]
+        for process_id in process_ids:
+            LOG.info("Deleting VPNaaS on router: \"%s\"" % process_id)
+            self.destroy_router(process_id)
+
+
+class SolarisIPsecDriver(IPsecDriver):
+    def create_process(self, process_id, vpnservice, namespace):
+        LOG.debug("SolarisIPsec Driver loaded.")
+        return SolarisIPsecProcess(
+            self.conf,
+            process_id,
+            vpnservice,
+            namespace)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/neutron/files/services/vpn/device_drivers/template/solaris/ike.secret.template	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,27 @@
+#
+# Copyright (c) 2015, 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
+#    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.
+#
+#    Pre-shared key configuration for vpn-service: "{{vpnservice.id}}"
+{% for ipsec_site_connection in vpnservice.ipsec_site_connections %}
+{
+	# Pre-shared key entry for ipsec-site-connection: "{{ipsec_site_connection.id}}"
+	localidtype IP
+	localid {{vpnservice.external_ip}}
+	remoteidtype IP
+	remoteid {{ipsec_site_connection.peer_address}}
+	key "{{ipsec_site_connection.psk}}"
+}
+
+{% endfor %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/neutron/files/services/vpn/device_drivers/template/solaris/ike.template	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,32 @@
+#
+# Copyright (c) 2015, 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
+#    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.
+# IKE Configuration for vpn-service "{{vpnservice.id}}"
+{% for ipsec_site_connection in vpnservice.ipsec_site_connections if ipsec_site_connection.admin_state_up
+%}
+{
+	# Generated from ipsec-site-connection: "{{ipsec_site_connection.name}}"
+	label "{{ipsec_site_connection.id}}"
+	local_id_type ip
+	local_addr {{vpnservice.external_ip}}
+	remote_addr {{ipsec_site_connection.peer_address}}
+	p2_pfs {{ipsec_site_connection.ikepolicy.pfs}}
+	p1_xform {
+		auth_method preshared
+		oakley_group {{ipsec_site_connection.ikepolicy.pfs}}
+		auth_alg {{ipsec_site_connection.ikepolicy.auth_algorithm}}
+		encr_alg {{ipsec_site_connection.ikepolicy.encryption_algorithm}}
+	}
+}
+{% endfor %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/neutron/files/services/vpn/device_drivers/template/solaris/ikev2.secret.template	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,24 @@
+#
+# Copyright (c) 2015, 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
+#    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.
+#
+#    Pre-shared key configuration for vpn-service "{{vpnservice.id}}"
+{% for ipsec_site_connection in vpnservice.ipsec_site_connections %}
+{
+	# Pre-shared key entry for ipsec-site-connection: "{{ipsec_site_connection.id}}"
+	label "{{ipsec_site_connection.id}}"
+	key "{{ipsec_site_connection.psk}}"
+}
+
+{% endfor %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/neutron/files/services/vpn/device_drivers/template/solaris/ikev2.template	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,35 @@
+#
+# Copyright (c) 2015, 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
+#    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.
+#
+#    IKE Configuration for vpn-service "{{vpnservice.id}}"
+{% for ipsec_site_connection in vpnservice.ipsec_site_connections if ipsec_site_connection.admin_state_up
+%}
+{
+	# From "{{ipsec_site_connection.name}}"
+	label "{{ipsec_site_connection.id}}"
+	local_addr {{vpnservice.external_ip}}
+	remote_addr {{ipsec_site_connection.peer_address}}
+	local_id IP = "{{vpnservice.external_ip}}"
+	remote_id IP = "{{ipsec_site_connection.peer_address}}"
+	childsa_pfs {{ipsec_site_connection.ikepolicy.pfs}}
+	auth_method preshared
+
+	ikesa_xform {
+		oakley_group {{ipsec_site_connection.ikepolicy.pfs}}
+		auth_alg {{ipsec_site_connection.ikepolicy.auth_algorithm}}
+		encr_alg {{ipsec_site_connection.ikepolicy.encryption_algorithm}}
+	}
+}
+{% endfor %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/neutron/files/services/vpn/device_drivers/template/solaris/ipsecinit.conf.template	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,27 @@
+#
+# Copyright (c) 2015, 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
+#    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.
+#
+#    IKE Configuration for vpn-service "{{vpnservice.id}}"
+# Configuration for vpn-service "{{vpnservice.id}}"
+{% for ipsec_site_connection in vpnservice.ipsec_site_connections if ipsec_site_connection.admin_state_up
+%}
+{ tunnel {{ipsec_site_connection['tunnel_id']}} negotiate tunnel laddr {{vpnservice.subnet.cidr}} raddr {{ipsec_site_connection['peer_cidrs']|join(' ')}} } ipsec
+
+	{ encr_auth_algs {{ipsec_site_connection.ipsecpolicy.auth_algorithm}}
+	  encr_algs {{ipsec_site_connection.ipsecpolicy.encryption_algorithm}}
+	  sa shared }
+
+{% endfor %}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/neutron/files/vpn_agent.ini	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,56 @@
+[DEFAULT]
+# VPN-Agent configuration file
+# Note vpn-agent inherits l3-agent, so you can use configs on l3-agent also
+
+[vpnagent]
+# vpn device drivers which vpn agent will use
+# If we want to use multiple drivers,  we need to define this option multiple
+# times.
+# NOTE: StrongSwan and openSwan cannot be installed at the same time. Thus, both
+#       cannot be enabled for use. In the future when flavors/STF support is
+#       available, this will still constrain the flavors which can be used
+#       together.
+# vpn_device_driver=neutron_vpnaas.services.vpn.device_drivers.ipsec.OpenSwanDriver
+# vpn_device_driver=neutron_vpnaas.services.vpn.device_drivers.cisco_ipsec.CiscoCsrIPsecDriver
+# vpn_device_driver=neutron_vpnaas.services.vpn.device_drivers.vyatta_ipsec.VyattaIPSecDriver
+# vpn_device_driver=neutron_vpnaas.services.vpn.device_drivers.strongswan_ipsec.StrongSwanDriver
+# vpn_device_driver=neutron_vpnaas.services.vpn.device_drivers.fedora_strongswan_ipsec.FedoraStrongSwanDriver
+# vpn_device_driver=neutron_vpnaas.services.vpn.device_drivers.libreswan_ipsec.LibreSwanDriver
+# vpn_device_driver=another_driver
+vpn_device_driver=neutron_vpnaas.services.vpn.device_drivers.solaris_ipsec.SolarisIPsecDriver
+
+[ipsec]
+# Status check interval
+# ipsec_status_check_interval=60
+
+[strongswan]
+# For fedora use:
+# default_config_area=/usr/share/strongswan/templates/config/strongswan.d
+# Default is for ubuntu use, /etc/strongswan.d
+# default_config_area=/etc/strongswan.d
+
+[libreswan]
+# Initial interval in seconds for checking if pluto daemon is shutdown
+# shutdown_check_timeout=1
+#
+# The maximum number of retries for checking for pluto daemon shutdown
+# shutdown_check_retries=5
+#
+# A factor to increase the retry interval for each retry
+# shutdown_check_back_off=1.5
+
+[solaris]
+# The Solaris driver only reads values from this section. Setting a value
+# here will override the defaults which are set in the driver files as
+# solaris_opts. Setting values here is optional.
+#
+# Setting ipsec_status_check_interval will change the interval that the
+# driver runs the status update code. The value is in seconds.
+# A lower value will result in more frequent updates to neutron.
+#
+# ipsec_status_check_interval = 10
+#
+# This will enable the packet logging service which logs discarded packets.
+#
+# packet_logging = True
+# logger_level = "message+packet"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/neutron/neutron-vpnaas.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,176 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
--- a/components/openstack/neutron/neutron.license	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/neutron/neutron.license	Fri Feb 05 17:54:17 2016 -0500
@@ -209,25 +209,3 @@
    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.
-
-Colorizer Code is borrowed from Twisted:
-Copyright (c) 2001-2010 Twisted Matrix Laboratories.
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--- a/components/openstack/neutron/neutron.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/neutron/neutron.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,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.
 #
 
 set name=pkg.fmri \
@@ -28,10 +28,7 @@
 set name=pkg.summary value="OpenStack Neutron (Networking Service)"
 set name=pkg.description \
     value="Neutron provides an API to dynamically request and configure virtual networks. These networks connect 'interfaces' from other OpenStack services (e.g., VNICs from Nova VMs). The Neutron API supports extensions to provide advanced network capabilities (e.g., QoS, ACLs, network monitoring, etc)."
-set name=pkg.human-version value="Juno $(COMPONENT_VERSION)"
-set name=com.oracle.info.description \
-    value="Neutron, the OpenStack virtual network service"
-set name=com.oracle.info.tpno value=$(TPNO)
+set name=pkg.human-version value="Kilo $(COMPONENT_VERSION)"
 set name=info.classification \
     value="org.opensolaris.category.2008:System/Administration and Configuration" \
     value="org.opensolaris.category.2008:System/Enterprise Management" \
@@ -42,7 +39,7 @@
 set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
 set name=openstack.upgrade-id reboot-needed=true value=$(COMPONENT_BE_VERSION)
 set name=org.opensolaris.arc-caseid value=PSARC/2013/350 value=PSARC/2014/059 \
-    value=PSARC/2015/110
+    value=PSARC/2015/110 value=PSARC/2015/535
 set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
 #
 dir  path=etc/neutron owner=neutron group=neutron mode=0700
@@ -54,18 +51,52 @@
     group=neutron mode=0644 overlay=allow preserve=renamenew
 file files/metadata_agent.ini path=etc/neutron/metadata_agent.ini \
     owner=neutron group=neutron mode=0644 overlay=allow preserve=renamenew
+file etc/metering_agent.ini path=etc/neutron/metering_agent.ini owner=neutron \
+    group=neutron mode=0644 overlay=allow preserve=renamenew
 file files/neutron.conf path=etc/neutron/neutron.conf owner=neutron \
     group=neutron mode=0644 \
     original_name=cloud/openstack/neutron:etc/neutron/quantum.conf \
     overlay=allow preserve=renamenew
+file path=etc/neutron/neutron_vpnaas.conf owner=neutron group=neutron \
+    mode=0644 overlay=allow preserve=renamenew
+file path=etc/neutron/plugins/bigswitch/restproxy.ini owner=neutron \
+    group=neutron mode=0644 overlay=allow preserve=renamenew
+file path=etc/neutron/plugins/bigswitch/ssl/ca_certs/README
+file path=etc/neutron/plugins/bigswitch/ssl/host_certs/README
+file path=etc/neutron/plugins/brocade/brocade.ini owner=neutron group=neutron \
+    mode=0644 overlay=allow preserve=renamenew
+file path=etc/neutron/plugins/brocade/brocade_mlx.ini owner=neutron \
+    group=neutron mode=0644 overlay=allow preserve=renamenew
+file path=etc/neutron/plugins/brocade/vyatta/vrouter.ini owner=neutron \
+    group=neutron mode=0644 overlay=allow preserve=renamenew
+file path=etc/neutron/plugins/cisco/cisco_cfg_agent.ini owner=neutron \
+    group=neutron mode=0644 overlay=allow preserve=renamenew
+file path=etc/neutron/plugins/cisco/cisco_plugins.ini owner=neutron \
+    group=neutron mode=0644 overlay=allow preserve=renamenew
+file path=etc/neutron/plugins/cisco/cisco_router_plugin.ini owner=neutron \
+    group=neutron mode=0644 overlay=allow preserve=renamenew
+file path=etc/neutron/plugins/cisco/cisco_vpn_agent.ini owner=neutron \
+    group=neutron mode=0644 overlay=allow preserve=renamenew
+file path=etc/neutron/plugins/embrane/heleos_conf.ini owner=neutron \
+    group=neutron mode=0644 overlay=allow preserve=renamenew
 file files/evs_plugin.ini path=etc/neutron/plugins/evs/evs_plugin.ini \
     owner=neutron group=neutron mode=0644 overlay=allow preserve=renamenew
+file path=etc/neutron/plugins/ibm/sdnve_neutron_plugin.ini owner=neutron \
+    group=neutron mode=0644 overlay=allow preserve=renamenew
+file path=etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini owner=neutron \
+    group=neutron mode=0644 overlay=allow preserve=renamenew
+file path=etc/neutron/plugins/metaplugin/metaplugin.ini owner=neutron \
+    group=neutron mode=0644 overlay=allow preserve=renamenew
+file path=etc/neutron/plugins/midonet/midonet.ini owner=neutron group=neutron \
+    mode=0644 overlay=allow preserve=renamenew
 file path=etc/neutron/plugins/ml2/ml2_conf.ini owner=neutron group=neutron \
     mode=0644 overlay=allow preserve=renamenew
 file path=etc/neutron/plugins/ml2/ml2_conf_arista.ini owner=neutron \
     group=neutron mode=0644 overlay=allow preserve=renamenew
 file path=etc/neutron/plugins/ml2/ml2_conf_brocade.ini owner=neutron \
     group=neutron mode=0644 overlay=allow preserve=renamenew
+file path=etc/neutron/plugins/ml2/ml2_conf_brocade_fi_ni.ini owner=neutron \
+    group=neutron mode=0644 overlay=allow preserve=renamenew
 file path=etc/neutron/plugins/ml2/ml2_conf_cisco.ini owner=neutron \
     group=neutron mode=0644 overlay=allow preserve=renamenew
 file path=etc/neutron/plugins/ml2/ml2_conf_fslsdn.ini owner=neutron \
@@ -74,20 +105,32 @@
     group=neutron mode=0644 overlay=allow preserve=renamenew
 file path=etc/neutron/plugins/ml2/ml2_conf_ncs.ini owner=neutron group=neutron \
     mode=0644 overlay=allow preserve=renamenew
-file path=etc/neutron/plugins/ml2/ml2_conf_odl.ini owner=neutron group=neutron \
-    mode=0644 overlay=allow preserve=renamenew
 file path=etc/neutron/plugins/ml2/ml2_conf_ofa.ini owner=neutron group=neutron \
     mode=0644 overlay=allow preserve=renamenew
 file path=etc/neutron/plugins/ml2/ml2_conf_sriov.ini owner=neutron \
     group=neutron mode=0644 overlay=allow preserve=renamenew
-file etc/neutron/plugins/nuage/nuage_plugin.ini \
-    path=etc/neutron/plugins/ml2/nuage_plugin.ini owner=neutron group=neutron \
+file path=etc/neutron/plugins/mlnx/mlnx_conf.ini owner=neutron group=neutron \
+    mode=0644 overlay=allow preserve=renamenew
+file path=etc/neutron/plugins/nec/nec.ini owner=neutron group=neutron \
     mode=0644 overlay=allow preserve=renamenew
-file etc/neutron/plugins/bigswitch/restproxy.ini \
-    path=etc/neutron/plugins/ml2/restproxy.ini owner=neutron group=neutron \
+file path=etc/neutron/plugins/nuage/nuage_plugin.ini owner=neutron \
+    group=neutron mode=0644 overlay=allow preserve=renamenew
+file path=etc/neutron/plugins/oneconvergence/nvsdplugin.ini owner=neutron \
+    group=neutron mode=0644 overlay=allow preserve=renamenew
+file path=etc/neutron/plugins/opencontrail/contrailplugin.ini owner=neutron \
+    group=neutron mode=0644 overlay=allow preserve=renamenew
+file path=etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini owner=neutron \
+    group=neutron mode=0644 overlay=allow preserve=renamenew
+file path=etc/neutron/plugins/ovsvapp/ovsvapp_agent.ini owner=neutron \
+    group=neutron mode=0644 overlay=allow preserve=renamenew
+file path=etc/neutron/plugins/plumgrid/plumgrid.ini owner=neutron \
+    group=neutron mode=0644 overlay=allow preserve=renamenew
+file path=etc/neutron/plugins/vmware/nsx.ini owner=neutron group=neutron \
     mode=0644 overlay=allow preserve=renamenew
 file etc/policy.json path=etc/neutron/policy.json owner=neutron group=neutron \
     mode=0644 overlay=allow preserve=renamenew
+file files/vpn_agent.ini path=etc/neutron/vpn_agent.ini owner=neutron \
+    group=neutron mode=0644 overlay=allow preserve=renamenew
 link path=etc/quantum target=./neutron
 file files/neutron.auth_attr \
     path=etc/security/auth_attr.d/cloud:openstack:neutron group=sys
@@ -111,6 +154,7 @@
 file path=usr/lib/neutron/evs-neutron-migration mode=0555
 file usr/bin/neutron-dhcp-agent path=usr/lib/neutron/neutron-dhcp-agent \
     mode=0555
+file path=usr/lib/neutron/neutron-kilo-migration mode=0555
 file usr/bin/neutron-l3-agent path=usr/lib/neutron/neutron-l3-agent mode=0555
 file usr/bin/neutron-metadata-agent \
     path=usr/lib/neutron/neutron-metadata-agent mode=0555
@@ -130,21 +174,47 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/common/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/common/base_polling.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/common/config.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/common/ovs_lib.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/common/polling.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/common/utils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/dhcp/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/dhcp/agent.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/dhcp/config.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/dhcp_agent.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/evs_l3_agent.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/firewall.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/l2population_rpc.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/l3/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/l3/agent.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/l3/config.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/l3/dvr.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/l3/dvr_fip_ns.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/l3/dvr_router.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/l3/dvr_snat_ns.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/l3/ha.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/l3/ha_router.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/l3/keepalived_state_change.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/l3/legacy_router.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/l3/link_local_allocator.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/l3/namespace_manager.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/l3/namespaces.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/l3/router_info.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/l3/router_processing_queue.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/l3_agent.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/l3_ha_agent.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/linux/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/linux/async_process.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/linux/bridge_lib.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/linux/daemon.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/linux/dhcp.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/linux/external_process.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/linux/interface.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/linux/ip_lib.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/linux/ip_link_support.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/linux/ip_monitor.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/linux/ipset_manager.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/linux/iptables_comments.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/linux/iptables_firewall.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/linux/iptables_manager.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/linux/keepalived.py
@@ -155,9 +225,18 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/linux/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/metadata/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/metadata/agent.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/metadata/config.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/metadata/driver.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/metadata/namespace_proxy.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/netns_cleanup_util.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/ovs_cleanup_util.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/metadata_agent.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/ovsdb/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/ovsdb/api.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/ovsdb/impl_idl.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/ovsdb/impl_vsctl.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/ovsdb/native/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/ovsdb/native/commands.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/ovsdb/native/connection.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/ovsdb/native/idlutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/rpc.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/securitygroups_rpc.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/solaris/__init__.py
@@ -166,6 +245,9 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/solaris/ipfilters_manager.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/solaris/net_lib.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/solaris/ra.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/windows/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/windows/polling.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/agent/windows/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/api/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/api/api_common.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/api/extensions.py
@@ -178,6 +260,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/api/rpc/handlers/dhcp_rpc.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/api/rpc/handlers/dvr_rpc.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/api/rpc/handlers/l3_rpc.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/api/rpc/handlers/metadata_rpc.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/api/rpc/handlers/securitygroups_rpc.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/api/v2/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/api/v2/attributes.py
@@ -189,7 +272,31 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/api/views/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/api/views/versions.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/auth.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/callbacks/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/callbacks/events.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/callbacks/exceptions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/callbacks/manager.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/callbacks/registry.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/callbacks/resources.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/cmd/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/cmd/eventlet/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/cmd/eventlet/agents/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/cmd/eventlet/agents/dhcp.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/cmd/eventlet/agents/l3.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/cmd/eventlet/agents/metadata.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/cmd/eventlet/agents/metadata_proxy.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/cmd/eventlet/plugins/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/cmd/eventlet/plugins/hyperv_neutron_agent.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/cmd/eventlet/plugins/mlnx_neutron_agent.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/cmd/eventlet/plugins/nec_neutron_agent.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/cmd/eventlet/plugins/ovs_neutron_agent.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/cmd/eventlet/plugins/ovsvapp_neutron_agent.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/cmd/eventlet/server/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/cmd/eventlet/services/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/cmd/eventlet/services/metering_agent.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/cmd/keepalived_state_change.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/cmd/netns_cleanup.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/cmd/ovs_cleanup.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/cmd/sanity/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/cmd/sanity/checks.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/cmd/sanity_check.py
@@ -197,9 +304,11 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/common/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/common/config.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/common/constants.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/common/eventlet_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/common/exceptions.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/common/ipv6_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/common/log.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/common/repos.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/common/rpc.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/common/test_lib.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/common/topics.py
@@ -216,8 +325,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/external_net_db.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/extradhcpopt_db.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/extraroute_db.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/firewall/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/firewall/firewall_db.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/l3_agentschedulers_db.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/l3_attrs_db.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/l3_db.py
@@ -226,8 +333,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/l3_gwmode_db.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/l3_hamode_db.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/l3_hascheduler_db.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/loadbalancer/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/loadbalancer/loadbalancer_db.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/metering/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/metering/metering_db.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/metering/metering_rpc.py
@@ -256,23 +361,37 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/ryu_init_ops.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/script.py.mako
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/secgroup_init_ops.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/034883111f_remove_subnetpool_allow_overlap.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/10cd28e692e9_nuage_extraroute.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/117643811bca_nec_delete_ofc_mapping.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/1421183d533f_nsx_dhcp_metadata.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/14be42f3d0a5_default_sec_group_table.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/157a5d299379_ml2_binding_profile.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/1680e1f0c4dc_remove_cisco_nexus_plugin.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/16a27a58e093_ext_l3_ha_mode.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/16cdf118d31d_extra_dhcp_options_ipv6_support.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/19180cf98af6_nsx_gw_devices.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/1955efc66455_weight_scheduler.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/1b2580001654_nsx_sec_group_mappin.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/1b837a7125a9_cisco_apic_driver.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/1d6ee1ae5da5_db_healing.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/1e5dd1d09b22_set_not_null_fields_lb_stats.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/1f71e54a85e7_ml2_net_seg_model.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/1fcfc149aca4_agents_unique_by_type_and_host.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/2026156eab2f_l2_dvr_models.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/20b99fd19d4f_cisco_ucs_manager_mechanism_driver.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/20c469a5f920_add_index_for_port.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/236b90af57ab_ml2_refactor_for_dynamic_segments.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/2447ad0e9585_add_ipv6_mode_props.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/24c7ea5160d7_cisco_csr_vpnaas.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/268fb5e99aa2_subnetpool_allocation.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/26b54cf9024d_add_index_on_allocated.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/27cc183af192_ml2_vnic_type.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/28a09af858a8_subnetpool_quotas.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/28c0ffb8ebbd_remove_mlnx_plugin.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/2a1ee2fb59e0_add_mac_address_unique_constraint.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/2b801560a332_remove_hypervneutronplugin_tables.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/2d2a8a565438_hierarchical_binding.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/2db5203cb7a9_nuage_floatingip.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/2eeaf963a447_floatingip_status.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/31d7f831a591_add_constraint_for_routerid.py
@@ -280,23 +399,36 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/32f3915891fd_cisco_apic_driver_update.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/33c3db036fe4_set_length_of_description_field_metering.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/33dd0a9fa487_embrane_lbaas_driver.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/341ee8a4ccb5_sync_with_cisco_repo.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/35a0f3365720_add_port_security_in_ml2.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/37f322991f59_nuage_removing_mapping_tables.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/38495dc99731_ml2_tunnel_endpoints_table.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/3927f7f7c456_l3_extension_distributed_mode.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/3b85b693a95f_remove_service_tables.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/3c346828361e_metering_label_shared.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/3d2585038b95_vmware_nsx.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/3d3cb89d84ee_nsx_switch_mappings.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/408cfbf6923c_remove_ryu_plugin.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/4119216b7365_add_tenant_id_idx.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/41662e32bce2_l3_dvr_snat_mapping.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/43763a9618fd_add_mtu_attributes_to_network.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/44621190bc02_add_uniqueconstraint_ipavailability_ranges.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/492a106273f8_brocade_ml2_mech_dri.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/4ca36cfc898c_nsx_router_mappings.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/4dbe243cd84d_nsxv.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/4eba2f05c2f4_correct_vxlan_endpoint_primary_key.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/4eca4a84f08a_remove_ml2_cisco_cred_db.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/50d5ba354c23_ml2_binding_vif_details.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/50e86cb2637a_nsx_mappings.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/51c54792158e_subnetpools.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/538732fa21e1_nec_rename_quantum_id_to_neutron_id.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/544673ac99ab_add_router_port_table.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/5446f2a45467_set_server_default.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/54f7549a0e5f_set_not_null_peer_address.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/5589aa32bf80_l3_dvr_scheduler.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/57086602ca0a_scrap_nsx_adv_svcs_models.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/57dd745253a6_nuage_kilo_migrate.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/589f9237ca0e_cisco_n1kv_ml2_driver_tables.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/58fe87a01143_cisco_csr_routing.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/5ac1c354a051_n1kv_segment_alloc.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/6be312499f9_set_not_null_vlan_id_cisco.py
@@ -308,12 +440,15 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/aae5706a396_nuage_provider_networks.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/abc88c33f74f_lb_stats_needs_bigint.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/b65aa907aec_set_length_of_protocol_field.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/bebba223288_add_vlan_transparent_property_to_network.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/d06e871c0d5_set_admin_state_up_not_null_ml2.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/e197124d4b9_add_unique_constrain.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/e766b19a3bb_nuage_initial.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/f15b1fb526dd_cascade_floatingip.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/havana_initial.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/icehouse_release.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/juno_release.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/versions/kilo_release.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/vmware_init_ops.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/alembic_migrations/vpn_init_ops.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/cli.py
@@ -323,19 +458,17 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/migration/models/head.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/model_base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/models_v2.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/netmtu_db.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/portbindings_base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/portbindings_db.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/portsecurity_db.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/portsecurity_db_common.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/quota_db.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/routedserviceinsertion_db.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/routerservicetype_db.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/securitygroups_db.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/securitygroups_rpc_base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/servicetype_db.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/sqlalchemyutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/vpn/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/vpn/vpn_db.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/vpn/vpn_validator.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/db/vlantransparent_db.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/debug/README
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/debug/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/debug/commands.py
@@ -349,91 +482,66 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/external_net.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/extra_dhcp_opt.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/extraroute.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/firewall.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/flavor.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/l3.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/l3_ext_gw_mode.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/l3_ext_ha_mode.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/l3agentscheduler.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/lbaas_agentscheduler.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/loadbalancer.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/metering.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/multiprovidernet.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/netmtu.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/portbindings.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/portsecurity.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/providernet.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/quotasv2.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/routedserviceinsertion.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/routerservicetype.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/securitygroup.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/servicetype.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/vpnaas.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/subnetallocation.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/extensions/vlantransparent.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/hacking/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/hacking/checks.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/hooks.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/i18n.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/ipam/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/ipam/driver.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/ipam/subnet_alloc.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/manager.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/neutron_plugin_base_v2.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/notifiers/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/notifiers/batch_notifier.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/notifiers/nova.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/_i18n.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/cache/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/cache/_backends/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/cache/_backends/memory.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/cache/backends.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/cache/cache.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/context.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/eventlet_backdoor.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/excutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/fileutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/fixture/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/fixture/config.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/fixture/lockutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/fixture/mockpatch.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/fixture/moxstubout.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/gettextutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/importutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/jsonutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/local.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/lockutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/log.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/loopingcall.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/middleware/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/middleware/base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/middleware/catch_errors.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/middleware/correlation_id.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/middleware/debug.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/middleware/request_id.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/middleware/sizelimit.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/network_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/periodic_task.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/policy.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/processutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/service.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/sslutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/strutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/systemd.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/threadgroup.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/timeutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/uuidutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/openstack/common/versionutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/bigswitch/README
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/bigswitch/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/bigswitch/agent/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/bigswitch/agent/restproxy_agent.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/bigswitch/config.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/bigswitch/db/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/bigswitch/db/consistency_db.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/bigswitch/db/porttracker_db.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/bigswitch/extensions/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/bigswitch/extensions/routerrule.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/bigswitch/l3_router_plugin.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/bigswitch/plugin.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/bigswitch/requirements.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/bigswitch/routerrule_db.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/bigswitch/servermanager.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/bigswitch/vcsversion.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/bigswitch/version.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/brocade/NeutronPlugin.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/brocade/README.md
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/brocade/__init__.py
@@ -446,19 +554,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/brocade/vlanbm.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/README
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/cfg_agent/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/cfg_agent/cfg_agent.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/cfg_agent/cfg_exceptions.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/cfg_agent/device_drivers/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/cfg_agent/device_drivers/csr1kv/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/cfg_agent/device_drivers/csr1kv/cisco_csr1kv_snippets.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/cfg_agent/device_drivers/csr1kv/csr1kv_routing_driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/cfg_agent/device_drivers/devicedriver_api.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/cfg_agent/device_drivers/driver_mgr.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/cfg_agent/device_drivers/dummy_driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/cfg_agent/device_status.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/cfg_agent/service_helpers/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/cfg_agent/service_helpers/routing_svc_helper.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/common/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/common/cisco_constants.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/common/cisco_credentials_v2.py
@@ -467,9 +562,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/common/config.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/db/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/db/l3/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/db/l3/device_handling_db.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/db/l3/l3_models.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/db/l3/l3_router_appliance_db.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/db/n1kv_db_v2.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/db/n1kv_models_v2.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/db/network_db_v2.py
@@ -483,18 +576,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/extensions/policy_profile.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/extensions/qos.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/l2device_plugin_base.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/l3/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/l3/configdrive_templates/csr1kv_cfg_template
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/l3/hosting_device_drivers/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/l3/hosting_device_drivers/csr1kv_hd_driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/l3/plugging_drivers/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/l3/plugging_drivers/n1kv_plugging_constants.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/l3/plugging_drivers/n1kv_trunking_driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/l3/rpc/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/l3/rpc/devices_cfgagent_rpc_cb.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/l3/rpc/l3_router_cfgagent_rpc_cb.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/l3/rpc/l3_router_rpc_joint_agent_api.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/l3/service_vm_lib.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/models/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/models/virt_phy_sw_v2.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/n1kv/__init__.py
@@ -503,6 +584,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/network_plugin.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/service_plugins/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/service_plugins/cisco_router_plugin.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/cisco/service_plugins/requirements.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/common/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/common/constants.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/common/utils.py
@@ -537,18 +619,9 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/evs/plugin.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/hyperv/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/hyperv/agent/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/hyperv/agent/hyperv_neutron_agent.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/hyperv/agent/config.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/hyperv/agent/l2_agent.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/hyperv/agent/security_groups_driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/hyperv/agent/utils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/hyperv/agent/utilsfactory.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/hyperv/agent/utilsv2.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/hyperv/agent_notifier_api.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/hyperv/common/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/hyperv/common/constants.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/hyperv/db.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/hyperv/hyperv_neutron_plugin.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/hyperv/model.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/hyperv/rpc_callbacks.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ibm/README
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ibm/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ibm/agent/__init__.py
@@ -563,7 +636,11 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/linuxbridge/README
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/linuxbridge/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/linuxbridge/agent/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/linuxbridge/agent/arp_protect.py
+file \
+    path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py \
+    pkg.depend.bypass-generate=.*/oslo_log.* \
+    pkg.depend.bypass-generate=.*/oslo_messaging.*
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/linuxbridge/common/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/linuxbridge/common/config.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/linuxbridge/common/constants.py
@@ -573,18 +650,12 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/metaplugin/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/metaplugin/common/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/metaplugin/common/config.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/metaplugin/meta_db_v2.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/metaplugin/meta_models_v2.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/metaplugin/meta_neutron_plugin.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/metaplugin/proxy_neutron_plugin.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/midonet/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/midonet/agent/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/midonet/agent/midonet_driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/midonet/common/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/midonet/common/config.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/midonet/common/net_util.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/midonet/midonet_lib.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/midonet/plugin.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/midonet/requirements.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/README
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/common/__init__.py
@@ -593,23 +664,22 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/db.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/driver_api.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/driver_context.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/README.odl
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/arista/README
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/arista/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/arista/arista_l3_driver.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/arista/config.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/arista/db.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/arista/exceptions.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/arista/mechanism_arista.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/arista/requirements.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/brocade/README.md
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/brocade/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/brocade/db/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/brocade/db/models.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/brocade/fi_ni/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/brocade/fi_ni/mechanism_brocade_fi_ni.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/brocade/mechanism_brocade.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/brocade/nos/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/brocade/nos/nctemplates.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/brocade/nos/nosdriver.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/brocade/requirements.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/apic/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/apic/apic_model.py
@@ -617,21 +687,34 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/apic/apic_topology.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/apic/config.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/apic/mechanism_apic.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/nexus/README
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/n1kv/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/n1kv/extensions/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/n1kv/extensions/n1kv.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/n1kv/mech_cisco_n1kv.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/n1kv/n1kv_ext_driver.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/n1kv/n1kv_models.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/ncs/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/ncs/driver.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/nexus/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/nexus/config.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/nexus/constants.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/nexus/exceptions.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/nexus/mech_cisco_nexus.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/nexus/nexus_db_v2.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/nexus/nexus_models_v2.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/nexus/nexus_network_driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/nexus/nexus_snippets.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/nexus/requirements.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/nexus/type_nexus_vxlan.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/requirements.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/ucsm/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/ucsm/mech_cisco_ucsm.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/cisco/ucsm/ucsm_model.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/freescale/README.fslsdn
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/freescale/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/freescale/config.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/freescale/mechanism_fslsdn.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/helpers.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/hyperv/README
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/hyperv/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/hyperv/mech_hyperv.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/hyperv/requirements.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/ibm/mechanism_sdnve.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/ibm/requirements.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/l2pop/README
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/l2pop/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/l2pop/config.py
@@ -642,99 +725,57 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/mech_agent.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/mech_bigswitch/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/mech_bigswitch/driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/mech_hyperv.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/mech_bigswitch/requirements.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/mech_linuxbridge.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/mech_nuage/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/mech_nuage/driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/mech_ofagent.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/mech_openvswitch.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/mech_sriov/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/mech_sriov/exceptions.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/mech_sriov/mech_driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/mechanism_ncs.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/mechanism_odl.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/mlnx/README
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/mlnx/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/mlnx/agent/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/mlnx/agent/config.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/mlnx/agent/eswitch_neutron_agent.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/mlnx/config.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/mlnx/mech_mlnx.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/mlnx/requirements.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/ofagent/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/ofagent/driver.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/ofagent/requirements.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/opendaylight/README
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/opendaylight/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/opendaylight/driver.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/opendaylight/requirements.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/ovsvapp/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/ovsvapp/mech_driver.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/ovsvapp/requirements.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/type_flat.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/type_gre.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/type_local.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/type_tunnel.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/type_vlan.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/drivers/type_vxlan.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/extensions/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/extensions/port_security.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/managers.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/models.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/plugin.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ml2/rpc.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/mlnx/README
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/mlnx/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/mlnx/agent/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/mlnx/agent/eswitch_neutron_agent.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/mlnx/agent/utils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/mlnx/agent_notify_api.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/mlnx/common/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/mlnx/common/comm_utils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/mlnx/common/config.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/mlnx/common/constants.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/mlnx/common/exceptions.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/mlnx/db/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/mlnx/db/mlnx_db_v2.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/mlnx/db/mlnx_models_v2.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/mlnx/mlnx_plugin.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/mlnx/rpc_callbacks.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/README
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/agent/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/agent/nec_neutron_agent.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/common/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/common/config.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/common/constants.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/common/exceptions.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/common/ofc_client.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/common/utils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/config.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/db/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/db/api.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/db/models.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/db/packetfilter.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/db/router.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/drivers/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/drivers/pfc.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/drivers/trema.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/extensions/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/extensions/packetfilter.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/extensions/router_provider.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/nec_plugin.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/nec_router.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/ofc_driver_base.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/ofc_manager.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/packet_filter.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/router_drivers.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nec/requirements.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nuage/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nuage/common/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nuage/common/config.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nuage/common/constants.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nuage/common/exceptions.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nuage/extensions/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nuage/extensions/netpartition.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nuage/extensions/nuage_router.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nuage/extensions/nuage_subnet.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nuage/nuage_models.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nuage/nuagedb.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nuage/plugin.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/nuage/syncmanager.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ofagent/README
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ofagent/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ofagent/agent/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ofagent/agent/arp_lib.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ofagent/agent/constants.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ofagent/agent/flows.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ofagent/agent/main.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ofagent/agent/metadata.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ofagent/agent/ofa_neutron_agent.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ofagent/agent/ofswitch.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ofagent/agent/ports.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ofagent/agent/tables.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ofagent/common/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ofagent/common/config.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/oneconvergence/README
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/oneconvergence/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/oneconvergence/agent/__init__.py
@@ -754,7 +795,10 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/openvswitch/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/openvswitch/agent/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/openvswitch/agent/ovs_dvr_neutron_agent.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/openvswitch/agent/ovs_neutron_agent.py
+file \
+    path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/openvswitch/agent/ovs_neutron_agent.py \
+    pkg.depend.bypass-generate=.*/oslo_log.* \
+    pkg.depend.bypass-generate=.*/oslo_messaging.*
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/openvswitch/agent/xenapi/README
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/openvswitch/agent/xenapi/contrib/build-rpm.sh
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/openvswitch/agent/xenapi/contrib/rpmbuild/SPECS/openstack-quantum-xen-plugins.spec
@@ -767,26 +811,9 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/openvswitch/ovs_models_v2.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/plumgrid/README
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/plumgrid/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/plumgrid/common/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/plumgrid/common/exceptions.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/plumgrid/drivers/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/plumgrid/drivers/fake_plumlib.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/plumgrid/drivers/plumlib.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/plumgrid/plumgrid_plugin/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/plumgrid/plumgrid_plugin/plugin_ver.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/plumgrid/plumgrid_plugin/plumgrid_plugin.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ryu/README
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ryu/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ryu/agent/__init__.py
-file \
-    path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ryu/agent/ryu_neutron_agent.py \
-    pkg.depend.bypass-generate=.*/ryu.*
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ryu/common/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ryu/common/config.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ryu/db/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ryu/db/api_v2.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ryu/db/models_v2.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/ryu/ryu_neutron_plugin.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/plumgrid/requirements.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/sriovnicagent/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/sriovnicagent/common/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/sriovnicagent/common/config.py
@@ -794,84 +821,34 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/sriovnicagent/eswitch_manager.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/sriovnicagent/pci_lib.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/sriovnicagent/sriov_nic_agent.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/README
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/api_client/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/api_client/base.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/api_client/client.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/api_client/eventlet_client.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/api_client/eventlet_request.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/api_client/exception.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/api_client/request.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/api_client/version.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/check_nsx_config.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/common/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/common/config.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/common/exceptions.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/common/nsx_utils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/common/securitygroups.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/common/sync.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/common/utils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/common/nsxv_constants.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/dbexts/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/dbexts/db.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/dbexts/lsn_db.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/dbexts/maclearning.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/dbexts/models.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/dbexts/networkgw_db.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/dbexts/qos_db.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/dbexts/servicerouter.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/dbexts/vcns_db.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/dbexts/nsx_models.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/dbexts/nsxv_models.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/dbexts/vcns_models.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/dhcp_meta/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/dhcp_meta/combined.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/dhcp_meta/constants.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/dhcp_meta/lsnmanager.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/dhcp_meta/migration.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/dhcp_meta/nsx.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/dhcp_meta/rpc.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/dhcpmeta_modes.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/extensions/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/extensions/distributedrouter.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/extensions/advancedserviceproviders.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/extensions/lsn.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/extensions/maclearning.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/extensions/networkgw.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/extensions/nvp_qos.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/extensions/qos.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/extensions/servicerouter.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/nsx_cluster.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/nsxlib/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/nsxlib/l2gateway.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/nsxlib/lsn.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/nsxlib/queue.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/nsxlib/router.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/nsxlib/secgroup.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/nsxlib/switch.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/nsxlib/versioning.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/extensions/routertype.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/extensions/vnicindex.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/plugin.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/plugins/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/plugins/base.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/plugins/service.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/shell/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/shell/commands.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/vshield/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/vshield/common/VcnsApiClient.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/vshield/common/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/vshield/common/constants.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/vshield/common/exceptions.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/vshield/edge_appliance_driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/vshield/edge_firewall_driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/vshield/edge_ipsecvpn_driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/vshield/edge_loadbalancer_driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/vshield/tasks/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/vshield/tasks/constants.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/vshield/tasks/tasks.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/vshield/vcns.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/vshield/vcns_driver.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/plugins/vmware/requirements.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/policy.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/quota.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/scheduler/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/scheduler/base_resource_filter.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/scheduler/base_scheduler.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/scheduler/dhcp_agent_scheduler.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/scheduler/l3_agent_scheduler.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/server/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/server/__init__.py \
+    pkg.depend.bypass-generate=.*/oslo_log.*
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/service.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/firewall/__init__.py
@@ -879,65 +856,20 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/firewall/agents/firewall_agent_api.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/firewall/agents/l3reference/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/firewall/agents/l3reference/firewall_l3_agent.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/firewall/agents/varmour/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/firewall/agents/varmour/varmour_api.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/firewall/agents/varmour/varmour_router.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/firewall/agents/varmour/varmour_utils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/firewall/drivers/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/firewall/drivers/fwaas_base.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/firewall/drivers/linux/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/firewall/drivers/linux/iptables_fwaas.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/firewall/drivers/varmour/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/firewall/drivers/varmour/varmour_fwaas.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/firewall/fwaas_plugin.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/l3_router/README
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/l3_router/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/l3_router/brocade/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/l3_router/brocade/l3_router_plugin.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/l3_router/brocade/mlx/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/l3_router/brocade/mlx/l3_router_plugin.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/l3_router/brocade/requirements.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/l3_router/brocade/vyatta/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/l3_router/brocade/vyatta/vrouter_neutron_plugin.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/l3_router/l3_apic.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/l3_router/l3_arista.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/l3_router/l3_router_plugin.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/l3_router/l3_sdnve.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/agent/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/agent/agent.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/agent/agent_api.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/agent/agent_device_driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/agent/agent_manager.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/agent_scheduler.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/constants.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/a10networks/README.txt
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/a10networks/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/a10networks/driver_v1.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/abstract_driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/common/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/common/agent_driver_base.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/driver_base.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/driver_mixins.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/embrane/README
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/embrane/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/embrane/agent/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/embrane/agent/dispatcher.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/embrane/agent/lb_operations.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/embrane/config.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/embrane/constants.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/embrane/db.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/embrane/driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/embrane/models.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/embrane/poller.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/haproxy/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/haproxy/cfg.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/haproxy/namespace_driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/haproxy/plugin_driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/logging_noop/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/logging_noop/driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/netscaler/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/netscaler/ncc_client.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/netscaler/netscaler_driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/radware/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/radware/driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/drivers/radware/exceptions.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/loadbalancer/plugin.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/metering/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/metering/agents/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/metering/agents/metering_agent.py
@@ -951,24 +883,66 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/provider_configuration.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/service_base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/vpn/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/vpn/agent.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/vpn/common/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/vpn/common/topics.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/vpn/device_drivers/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/vpn/device_drivers/cisco_csr_rest_client.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/vpn/device_drivers/cisco_ipsec.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/vpn/device_drivers/ipsec.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/vpn/device_drivers/template/openswan/ipsec.conf.template
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/vpn/device_drivers/template/openswan/ipsec.secret.template
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/vpn/plugin.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/vpn/service_drivers/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/vpn/service_drivers/cisco_cfg_loader.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/vpn/service_drivers/cisco_csr_db.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/vpn/service_drivers/cisco_ipsec.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/vpn/service_drivers/cisco_validator.py
-file path=usr/lib/python$(PYVER)/vendor-packages/neutron/services/vpn/service_drivers/ipsec.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/version.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutron/wsgi.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/cmd/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/cmd/eventlet/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/cmd/eventlet/agent.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/cmd/eventlet/vyatta_agent.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/db/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/db/migration/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/db/migration/alembic.ini
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/db/migration/alembic_migrations/README
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/db/migration/alembic_migrations/env.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/db/migration/alembic_migrations/script.py.mako
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/db/migration/alembic_migrations/versions/3ea02b2a773e_add_index_tenant_id.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/db/migration/alembic_migrations/versions/HEAD
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/db/migration/alembic_migrations/versions/kilo_release.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/db/migration/alembic_migrations/versions/start_neutron_vpnaas.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/db/vpn/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/db/vpn/vpn_db.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/db/vpn/vpn_validator.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/extensions/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/extensions/vpnaas.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/agent.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/common/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/common/netns_wrapper.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/common/topics.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/device_drivers/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/device_drivers/cisco_csr_rest_client.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/device_drivers/cisco_ipsec.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/device_drivers/fedora_strongswan_ipsec.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/device_drivers/ipsec.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/device_drivers/libreswan_ipsec.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/device_drivers/solaris_ipsec.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/device_drivers/strongswan_ipsec.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/device_drivers/template/openswan/ipsec.conf.template
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/device_drivers/template/openswan/ipsec.secret.template
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/device_drivers/template/solaris/ike.secret.template
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/device_drivers/template/solaris/ike.template
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/device_drivers/template/solaris/ikev2.secret.template
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/device_drivers/template/solaris/ikev2.template
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/device_drivers/template/solaris/ipsecinit.conf.template
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/device_drivers/template/strongswan/ipsec.conf.template
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/device_drivers/template/strongswan/ipsec.secret.template
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/device_drivers/template/strongswan/strongswan.conf.template
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/device_drivers/vyatta_ipsec.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/plugin.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/service_drivers/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/service_drivers/base_ipsec.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/service_drivers/cisco_csr_db.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/service_drivers/cisco_ipsec.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/service_drivers/cisco_validator.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/service_drivers/ipsec.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/service_drivers/vyatta_ipsec.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/vpn_service.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/vyatta_agent.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/services/vpn/vyatta_vpn_service.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutron_vpnaas/version.py
+#
 dir  path=var/lib/neutron owner=neutron group=neutron mode=0700
 link path=var/lib/quantum target=neutron
 #
@@ -976,11 +950,18 @@
 user username=neutron ftpuser=false gcos-field="OpenStack Neutron" \
     group=neutron home-dir=/var/lib/neutron uid=84
 #
-license neutron.license license="Apache v2.0"
+license neutron.license license="Apache v2.0" \
+    com.oracle.info.description="Neutron, the OpenStack virtual network service" \
+    com.oracle.info.name=$(COMPONENT_NAME) com.oracle.info.tpno=$(TPNO) \
+    com.oracle.info.version=$(COMPONENT_VERSION)
+license neutron-vpnaas.license license="Apache v2.0 (neutron-vpnaas)" \
+    com.oracle.info.description="a VPNaaS plugin for Neutron" \
+    com.oracle.info.name=$(COMPONENT_NAME_1) \
+    com.oracle.info.tpno=$(TPNO_VPNAAS) \
+    com.oracle.info.version=$(COMPONENT_VERSION)
 
-# force a group dependency on the optional anyjson; pkgdepend work is needed to
-# flush this out.
-depend type=group fmri=library/python/anyjson-$(PYV)
+# 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
 
 # force a dependency on package delivering dnsmasq(8)
 depend type=require fmri=__TBD pkg.debug.depend.file=usr/lib/inet/dnsmasq
@@ -1006,12 +987,6 @@
 # force a dependency on package delivering ippool(1M)
 depend type=require fmri=__TBD pkg.debug.depend.file=usr/sbin/ippool
 
-# force a dependency on alembic; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/alembic-$(PYV)
-
-# force a dependency on babel; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/babel-$(PYV)
-
 # force a dependency on cliff; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/cliff-$(PYV)
 
@@ -1021,15 +996,9 @@
 # force a dependency on httplib2; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/httplib2-$(PYV)
 
-# force a dependency on iso8601; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/iso8601-$(PYV)
-
 # force a dependency on jinja2; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/jinja2-$(PYV)
 
-# force a dependency on jsonrpclib; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/jsonrpclib-$(PYV)
-
 # force a dependency on keystoneclient; pkgdepend work is needed to flush this
 # out.
 depend type=require fmri=library/python/keystoneclient-$(PYV)
@@ -1044,10 +1013,35 @@
 # force a dependency on novaclient; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/novaclient-$(PYV)
 
+# force a dependency on oslo.concurrency; pkgdepend work is needed to flush this
+# out.
+depend type=require fmri=library/python/oslo.concurrency-$(PYV)
+
+# force a dependency on oslo.context; pkgdepend work is needed to flush this
+# out.
+depend type=require fmri=library/python/oslo.context-$(PYV)
+
+# 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.serialization; pkgdepend work is needed to flush
+# this out.
+depend type=require fmri=library/python/oslo.serialization-$(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 paste.deploy; pkgdepend work is needed to flush this
 # out.
 depend type=require fmri=library/python/paste.deploy-$(PYV)
@@ -1058,6 +1052,9 @@
 # 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 routes; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/routes-$(PYV)
 
--- a/components/openstack/neutron/patches/01-dhcp-agent-add-solaris.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/neutron/patches/01-dhcp-agent-add-solaris.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,56 +1,96 @@
 Changes to the Neutron DHCP agent to port it to Solaris. These changes
 will eventually be proposed upstream.
 
---- neutron-2014.2.2/neutron/agent/dhcp_agent.py.~1~	2015-02-05 07:45:33.000000000 -0800
-+++ neutron-2014.2.2/neutron/agent/dhcp_agent.py	2015-02-25 00:44:00.464466509 -0800
-@@ -14,6 +14,7 @@
+--- neutron-2015.1.2/neutron/agent/dhcp_agent.py.~1~	2015-10-13 10:35:16.000000000 -0700
++++ neutron-2015.1.2/neutron/agent/dhcp_agent.py	2016-01-28 23:07:42.219218977 -0800
+@@ -14,9 +14,11 @@
+ #    License for the specific language governing permissions and limitations
  #    under the License.
  
- import os
 +import platform
  import sys
  
- import eventlet
-@@ -22,9 +23,7 @@ eventlet.monkey_patch()
- from oslo.config import cfg
+ from oslo_config import cfg
++from oslo_utils import importutils
  
  from neutron.agent.common import config
--from neutron.agent.linux import dhcp
- from neutron.agent.linux import external_process
--from neutron.agent.linux import interface
- from neutron.agent.linux import ovs_lib  # noqa
- from neutron.agent import rpc as agent_rpc
- from neutron.common import config as common_config
-@@ -42,6 +41,9 @@ from neutron.openstack.common import ser
- from neutron import service as neutron_service
- 
- LOG = logging.getLogger(__name__)
-+# dynamic module import
-+dhcp = None
-+interface = None
- 
- 
- class DhcpAgent(manager.Manager):
-@@ -609,6 +611,16 @@ def register_options():
-     config.register_use_namespaces_opts_helper(cfg.CONF)
-     config.register_agent_state_opts_helper(cfg.CONF)
-     config.register_root_helper(cfg.CONF)
-+    global dhcp
-+    global interface
+ from neutron.agent.dhcp import config as dhcp_config
+@@ -37,6 +39,12 @@ def register_options():
+     cfg.CONF.register_opts(dhcp_config.DNSMASQ_OPTS)
+     cfg.CONF.register_opts(metadata_config.DRIVER_OPTS)
+     cfg.CONF.register_opts(metadata_config.SHARED_OPTS)
 +    if platform.system() == "SunOS":
-+        dhcp = importutils.import_module("neutron.agent.solaris.dhcp")
 +        interface = \
 +            importutils.import_module("neutron.agent.solaris.interface")
 +    else:
-+        dhcp = importutils.import_module("neutron.agent.linux.dhcp")
 +        interface = \
 +            importutils.import_module("neutron.agent.linux.interface")
-     cfg.CONF.register_opts(dhcp.OPTS)
      cfg.CONF.register_opts(interface.OPTS)
  
---- neutron-2014.2.2/neutron/api/rpc/handlers/dhcp_rpc.py.~1~	2015-02-05 07:45:33.000000000 -0800
-+++ neutron-2014.2.2/neutron/api/rpc/handlers/dhcp_rpc.py	2015-02-25 00:44:00.464738154 -0800
-@@ -168,11 +168,13 @@ class DhcpRpcCallback(n_rpc.RpcCallback)
+ 
+--- neutron-2015.1.2/neutron/agent/linux/external_process.py.~1~	2015-10-13 10:35:16.000000000 -0700
++++ neutron-2015.1.2/neutron/agent/linux/external_process.py	2016-01-28 23:07:42.221029379 -0800
+@@ -15,6 +15,7 @@
+ import abc
+ import collections
+ import os.path
++import platform
+ import six
+ 
+ import eventlet
+@@ -86,9 +87,17 @@ class ProcessManager(MonitoredProcess):
+                 cmd_callback = self.default_cmd_callback
+             cmd = cmd_callback(self.get_pid_file_name())
+ 
+-            ip_wrapper = ip_lib.IPWrapper(namespace=self.namespace)
+-            ip_wrapper.netns.execute(cmd, addl_env=self.cmd_addl_env,
+-                                     run_as_root=self.run_as_root)
++            if self.namespace:
++                ip_wrapper = ip_lib.IPWrapper(namespace=self.namespace)
++                ip_wrapper.netns.execute(cmd, addl_env=self.cmd_addl_env,
++                                         run_as_root=self.run_as_root)
++            else:
++                env_params = []
++                if self.cmd_addl_env:
++                    env_params = (['/usr/bin/env'] +
++                                  ['%s=%s' % pair for pair in
++                                   self.cmd_addl_env.items()])
++                utils.execute(env_params + list(cmd))
+         elif reload_cfg:
+             self.reload_cfg()
+ 
+@@ -131,6 +140,14 @@ class ProcessManager(MonitoredProcess):
+         if pid is None:
+             return False
+ 
++        if platform.system() == "SunOS":
++            cmd = ['/usr/bin/pargs', pid]
++            try:
++                exec_out = utils.execute(cmd)
++            except RuntimeError:
++                return False
++            return self.uuid in exec_out
++
+         cmdline = '/proc/%s/cmdline' % pid
+         try:
+             with open(cmdline, "r") as f:
+--- neutron-2015.1.2/neutron/agent/linux/utils.py.~1~	2015-10-13 10:35:16.000000000 -0700
++++ neutron-2015.1.2/neutron/agent/linux/utils.py	2016-01-28 23:20:12.736969284 -0800
+@@ -31,7 +31,10 @@ from eventlet import greenthread
+ from oslo_config import cfg
+ from oslo_log import log as logging
+ from oslo_log import loggers
+-from oslo_rootwrap import client
++try:
++    from oslo_rootwrap import client
++except:
++    pass
+ from oslo_utils import excutils
+ 
+ from neutron.agent.common import config
+--- neutron-2015.1.2/neutron/api/rpc/handlers/dhcp_rpc.py.~1~	2015-10-13 10:35:16.000000000 -0700
++++ neutron-2015.1.2/neutron/api/rpc/handlers/dhcp_rpc.py	2016-01-28 23:07:42.219930998 -0800
+@@ -188,11 +188,13 @@ class DhcpRpcCallback(object):
                  for fixed_ip in port['fixed_ips']:
                      if fixed_ip['subnet_id'] in dhcp_enabled_subnet_ids:
                          dhcp_enabled_subnet_ids.remove(fixed_ip['subnet_id'])
--- a/components/openstack/neutron/patches/02-l3-agent-add-solaris.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/neutron/patches/02-l3-agent-add-solaris.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,70 +1,77 @@
-*** neutron-2014.2.2/neutron/agent/l3_agent.py	2015-02-05 07:45:33.000000000 -0800
---- NEW/neutron/agent/l3_agent.py	2015-02-06 11:10:53.164349168 -0800
-***************
-*** 1,5 ****
---- 1,7 ----
-  # Copyright 2012 VMware, Inc.  All rights reserved.
-  #
-+ # 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
-***************
-*** 13,18 ****
---- 15,21 ----
-  #    under the License.
-  #
-  
-+ import platform
-  import sys
-  
-  import datetime
-***************
-*** 33,38 ****
---- 36,42 ----
-  from neutron.agent.linux import iptables_manager
-  from neutron.agent.linux import ra
-  from neutron.agent import rpc as agent_rpc
-+ from neutron.agent.solaris import ipfilters_manager
-  from neutron.common import config as common_config
-  from neutron.common import constants as l3_constants
-  from neutron.common import ipv6_utils
-***************
-*** 257,266 ****
-          # Invoke the setter for establishing initial SNAT action
-          self.router = router
-          self.ns_name = NS_PREFIX + router_id if use_namespaces else None
-!         self.iptables_manager = iptables_manager.IptablesManager(
-!             root_helper=root_helper,
-!             use_ipv6=use_ipv6,
-!             namespace=self.ns_name)
-          self.snat_iptables_manager = None
-          self.routes = []
-          # DVR Data
---- 261,274 ----
-          # Invoke the setter for establishing initial SNAT action
-          self.router = router
-          self.ns_name = NS_PREFIX + router_id if use_namespaces else None
-!         if platform.system() == "SunOS":
-!             self.ipfilters_manager = ipfilters_manager.IPfiltersManager()
-!             self.iptables_manager = None
-!         else:
-!             self.iptables_manager = iptables_manager.IptablesManager(
-!                 root_helper=root_helper,
-!                 use_ipv6=use_ipv6,
-!                 namespace=self.ns_name)
-          self.snat_iptables_manager = None
-          self.routes = []
-          # DVR Data
-***************
-*** 2049,2054 ****
---- 2057,2064 ----
-      _register_opts(cfg.CONF)
-      common_config.init(sys.argv[1:])
-      config.setup_logging()
-+     if platform.system() == "SunOS":
-+         manager = 'neutron.agent.evs_l3_agent.EVSL3NATAgent'
-      server = neutron_service.Service.create(
-          binary='neutron-l3-agent',
-          topic=topics.L3_AGENT,
+Changes to the Neutron L3 agent to port it to Solaris. These changes
+will eventually be proposed upstream.
+
+--- neutron-2015.1.2/neutron/agent/l3_agent.py.~1~	2015-10-13 10:35:16.000000000 -0700
++++ neutron-2015.1.2/neutron/agent/l3_agent.py	2016-01-28 23:07:42.233773807 -0800
+@@ -14,6 +14,7 @@
+ #    License for the specific language governing permissions and limitations
+ #    under the License.
+ 
++import platform
+ import sys
+ 
+ from oslo_config import cfg
+@@ -46,6 +47,8 @@ def main(manager='neutron.agent.l3.agent
+     register_opts(cfg.CONF)
+     common_config.init(sys.argv[1:])
+     config.setup_logging()
++    if platform.system() == "SunOS":
++        manager = 'neutron.agent.evs_l3_agent.EVSL3NATAgent'
+     server = neutron_service.Service.create(
+         binary='neutron-l3-agent',
+         topic=topics.L3_AGENT,
+--- neutron-2015.1.2/neutron/agent/linux/daemon.py.~1~	2015-10-13 10:35:16.000000000 -0700
++++ neutron-2015.1.2/neutron/agent/linux/daemon.py	2016-01-28 23:07:42.234372590 -0800
+@@ -18,12 +18,14 @@ import grp
+ import logging as std_logging
+ from logging import handlers
+ import os
++import platform
+ import pwd
+ import signal
+ import sys
+ 
+ from oslo_log import log as logging
+ 
++from neutron.agent.linux import utils
+ from neutron.common import exceptions
+ from neutron.i18n import _LE, _LI
+ 
+@@ -140,6 +142,15 @@ class Pidfile(object):
+         if not pid:
+             return False
+ 
++        if platform.system() == "SunOS":
++            cmd = ['/usr/bin/pargs', pid]
++            try:
++                exec_out = utils.execute(cmd)
++            except RuntimeError:
++                return False
++            return self.procname in exec_out and (not self.uuid or
++                                                  self.uuid in exec_out)
++
+         cmdline = '/proc/%s/cmdline' % pid
+         try:
+             with open(cmdline, "r") as f:
+--- neutron-2015.1.2/neutron/common/ipv6_utils.py.~1~	2015-10-13 10:35:16.000000000 -0700
++++ neutron-2015.1.2/neutron/common/ipv6_utils.py	2016-01-28 23:28:34.771113032 -0800
+@@ -17,6 +17,7 @@
+ IPv6-related utilities and helper functions.
+ """
+ import os
++import platform
+ 
+ import netaddr
+ from oslo_log import log
+@@ -51,6 +52,11 @@ def get_ipv6_addr_by_EUI64(prefix, mac):
+ def is_enabled():
+     global _IS_IPV6_ENABLED
+ 
++    if platform.system() == "SunOS":
++        if _IS_IPV6_ENABLED is None:
++            _IS_IPV6_ENABLED = True
++        return _IS_IPV6_ENABLED
++
+     if _IS_IPV6_ENABLED is None:
+         disabled_ipv6_path = "/proc/sys/net/ipv6/conf/default/disable_ipv6"
+         if os.path.exists(disabled_ipv6_path):
--- a/components/openstack/neutron/patches/03-metadata-agent-add-solaris.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-Generalizes the dameon.py and external_process.py to work on Solaris. These
-changes will eventually be proposed upstream.
-
-*** neutron-2014.2.2/neutron/agent/linux/daemon.py	2015-02-05 07:45:33.000000000 -0800
---- NEW/neutron/agent/linux/daemon.py	2015-02-16 12:37:23.181739275 -0800
-***************
-*** 15,23 ****
---- 15,25 ----
-  import atexit
-  import fcntl
-  import os
-+ import platform
-  import signal
-  import sys
-  
-+ from neutron.agent.linux import utils
-  from neutron.openstack.common import log as logging
-  
-  LOG = logging.getLogger(__name__)
-***************
-*** 60,65 ****
---- 62,76 ----
-          if not pid:
-              return False
-  
-+         if platform.system() == "SunOS":
-+             cmd = ['/usr/bin/pargs', pid]
-+             try:
-+                 exec_out = utils.execute(cmd)
-+                 return self.procname in exec_out and (not self.uuid or
-+                                                       self.uuid in exec_out)
-+             except RuntimeError:
-+                 return False
-+ 
-          cmdline = '/proc/%s/cmdline' % pid
-          try:
-              with open(cmdline, "r") as f:
-*** neutron-2014.2.2/neutron/agent/linux/external_process.py	2015-02-05 07:45:33.000000000 -0800
---- NEW/neutron/agent/linux/external_process.py	2015-02-16 12:37:39.202659518 -0800
-***************
-*** 13,18 ****
---- 13,19 ----
-  #    under the License.
-  
-  import collections
-+ import platform
-  
-  import eventlet
-  from oslo.config import cfg
-***************
-*** 75,82 ****
-                  cmd_callback = self.default_cmd_callback
-              cmd = cmd_callback(self.get_pid_file_name(ensure_pids_dir=True))
-  
-!             ip_wrapper = ip_lib.IPWrapper(self.root_helper, self.namespace)
-!             ip_wrapper.netns.execute(cmd, addl_env=self.cmd_addl_env)
-          elif reload_cfg:
-              self.reload_cfg()
-  
---- 76,91 ----
-                  cmd_callback = self.default_cmd_callback
-              cmd = cmd_callback(self.get_pid_file_name(ensure_pids_dir=True))
-  
-!             if self.namespace:
-!                 ip_wrapper = ip_lib.IPWrapper(self.root_helper, self.namespace)
-!                 ip_wrapper.netns.execute(cmd, addl_env=self.cmd_addl_env)
-!             else:
-!                 env_params = []
-!                 if self.cmd_addl_env:
-!                     env_params = (['/usr/bin/env'] +
-!                                   ['%s=%s' % pair for pair in
-!                                    self.cmd_addl_env.items()])
-!                 utils.execute(env_params + list(cmd))
-          elif reload_cfg:
-              self.reload_cfg()
-  
-***************
-*** 122,127 ****
---- 131,144 ----
-          if pid is None:
-              return False
-  
-+         if platform.system() == "SunOS":
-+             cmd = ['/usr/bin/pargs', pid]
-+             try:
-+                 exec_out = utils.execute(cmd)
-+                 return self.uuid in exec_out
-+             except RuntimeError:
-+                 return False
-+ 
-          cmdline = '/proc/%s/cmdline' % pid
-          try:
-              with open(cmdline, "r") as f:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/neutron/patches/03-metadata-driver-solaris.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,111 @@
+Changes to the Neutron Metadata agent to port it to Solaris. These
+changes will eventually be proposed upstream.
+
+--- neutron-2015.1.0/neutron/agent/metadata/driver.py	2015-04-30 05:52:24.000000000 -0700
++++ new/neutron/agent/metadata/driver.py	2015-10-08 16:01:14.949791035 -0700
+@@ -14,6 +14,7 @@
+ #    under the License.
+ 
+ import os
++import platform
+ 
+ from oslo_log import log as logging
+ 
+@@ -38,10 +39,16 @@
+     def __init__(self, l3_agent):
+         self.metadata_port = l3_agent.conf.metadata_port
+         self.metadata_access_mark = l3_agent.conf.metadata_access_mark
+-        registry.subscribe(
+-            after_router_added, resources.ROUTER, events.AFTER_CREATE)
+-        registry.subscribe(
+-            before_router_removed, resources.ROUTER, events.BEFORE_DELETE)
++        if platform.system() == "SunOS":
++            registry.subscribe(after_router_added_solaris, resources.ROUTER,
++                               events.AFTER_CREATE)
++            registry.subscribe(before_router_removed_solaris, resources.ROUTER,
++                               events.BEFORE_DELETE)
++        else:
++            registry.subscribe(after_router_added, resources.ROUTER,
++                               events.AFTER_CREATE)
++            registry.subscribe(before_router_removed, resources.ROUTER,
++                               events.BEFORE_DELETE)
+ 
+     @classmethod
+     def metadata_filter_rules(cls, port, mark):
+@@ -95,14 +102,18 @@
+             metadata_proxy_socket = conf.metadata_proxy_socket
+             user, group, watch_log = (
+                 cls._get_metadata_proxy_user_group_watchlog(conf))
+-            proxy_cmd = ['neutron-ns-metadata-proxy',
+-                         '--pid_file=%s' % pid_file,
+-                         '--metadata_proxy_socket=%s' % metadata_proxy_socket,
+-                         lookup_param,
+-                         '--state_path=%s' % conf.state_path,
+-                         '--metadata_port=%s' % port,
+-                         '--metadata_proxy_user=%s' % user,
+-                         '--metadata_proxy_group=%s' % group]
++            if platform.system() == "SunOS":
++                proxy_cmd = ['/usr/lib/neutron/neutron-ns-metadata-proxy']
++            else:
++                proxy_cmd = ['neutron-ns-metadata-proxy',
++                             '--metadata_proxy_user=%s' % user,
++                             '--metadata_proxy_group=%s' % group]
++            proxy_cmd.extend(['--pid_file=%s' % pid_file,
++                              '--metadata_proxy_socket=%s' %
++                              metadata_proxy_socket,
++                              lookup_param,
++                              '--state_path=%s' % conf.state_path,
++                              '--metadata_port=%s' % port])
+             proxy_cmd.extend(config.get_log_args(
+                 conf, 'neutron-ns-metadata-proxy-%s.log' % uuid,
+                 metadata_proxy_watch_log=watch_log))
+@@ -141,7 +152,7 @@
+     router = kwargs['router']
+     proxy = l3_agent.metadata_driver
+     for c, r in proxy.metadata_filter_rules(proxy.metadata_port,
+-                                           proxy.metadata_access_mark):
++                                            proxy.metadata_access_mark):
+         router.iptables_manager.ipv4['filter'].add_rule(c, r)
+     for c, r in proxy.metadata_mangle_rules(proxy.metadata_access_mark):
+         router.iptables_manager.ipv4['mangle'].add_rule(c, r)
+@@ -162,7 +173,7 @@
+     router = kwargs['router']
+     proxy = l3_agent.metadata_driver
+     for c, r in proxy.metadata_filter_rules(proxy.metadata_port,
+-                                           proxy.metadata_access_mark):
++                                            proxy.metadata_access_mark):
+         router.iptables_manager.ipv4['filter'].remove_rule(c, r)
+     for c, r in proxy.metadata_mangle_rules(proxy.metadata_access_mark):
+         router.iptables_manager.ipv4['mangle'].remove_rule(c, r)
+@@ -171,6 +182,28 @@
+     router.iptables_manager.apply()
+ 
+     proxy.destroy_monitored_metadata_proxy(l3_agent.process_monitor,
+-                                          router.router['id'],
+-                                          router.ns_name,
+-                                          l3_agent.conf)
++                                           router.router['id'],
++                                           router.ns_name,
++                                           l3_agent.conf)
++
++
++def after_router_added_solaris(resource, event, l3_agent, **kwargs):
++    router = kwargs['router']
++    proxy = l3_agent.metadata_driver
++    if not router.is_ha:
++        proxy.spawn_monitored_metadata_proxy(
++            l3_agent.process_monitor,
++            router.ns_name,
++            proxy.metadata_port,
++            l3_agent.conf,
++            router_id=router.router_id)
++
++
++def before_router_removed_solaris(resource, event, l3_agent, **kwargs):
++    router = kwargs['router']
++    proxy = l3_agent.metadata_driver
++    if not router.is_ha:
++        proxy.destroy_monitored_metadata_proxy(l3_agent.process_monitor,
++                                               router.router['id'],
++                                               router.ns_name,
++                                               l3_agent.conf)
--- a/components/openstack/neutron/patches/04-requirements.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/neutron/patches/04-requirements.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,40 +1,57 @@
 In-house patch to remove unnecessary dependencies from Neutron's
 requirements files. The specific reasons are as follows:
 
+jsonrpclib	Not applicable
+
 oslo.rootwrap	Not applicable to Solaris
 
-paste		Not applicable
+Paste		Not applicable
 
---- neutron-2014.2.2/neutron.egg-info/requires.txt.~1~	2015-02-05 07:46:25.000000000 -0800
-+++ neutron-2014.2.2/neutron.egg-info/requires.txt	2015-02-25 00:20:01.378154156 -0800
-@@ -1,5 +1,4 @@
- pbr>=0.6,!=0.7,<1.0
+--- neutron-2015.1.2/neutron.egg-info/requires.txt.~1~	2015-10-13 10:36:16.000000000 -0700
++++ neutron-2015.1.2/neutron.egg-info/requires.txt	2016-01-28 22:52:36.925598086 -0800
+@@ -1,12 +1,10 @@
+ pbr!=0.7,<1.0,>=0.6
 -Paste
  PasteDeploy>=1.5.0
- Routes>=1.12.3,!=2.0
- anyjson>=0.3.3
-@@ -24,5 +23,4 @@ stevedore>=1.0.0  # Apache-2.0
- oslo.config>=1.4.0  # Apache-2.0
- oslo.db>=1.0.0,<1.1  # Apache-2.0
- oslo.messaging>=1.4.0,!=1.5.0,<1.6.0
--oslo.rootwrap>=1.3.0
--python-novaclient>=2.18.0
-+python-novaclient>=2.18.0
-\ No newline at end of file
---- neutron-2014.2.2/requirements.txt.~1~	2015-02-05 07:45:33.000000000 -0800
-+++ neutron-2014.2.2/requirements.txt	2015-02-25 00:19:55.500774949 -0800
-@@ -3,7 +3,6 @@
+ Routes!=2.0,>=1.12.3
+ eventlet!=0.17.0,>=0.16.1
+ greenlet>=0.3.2
+ httplib2>=0.7.5
+ requests!=2.4.0,>=2.2.0
+-jsonrpclib
+ Jinja2>=2.6 # BSD License3 clause
+ keystonemiddleware<1.6.0,>=1.5.0
+ netaddr>=0.7.12
+@@ -26,7 +24,6 @@ oslo.i18n<1.6.0,>=1.5.0 # Apache-2.0
+ oslo.log<1.1.0,>=1.0.0 # Apache-2.0
+ oslo.messaging<1.9.0,>=1.8.0 # Apache-2.0
+ oslo.middleware<1.1.0,>=1.0.0 # Apache-2.0
+-oslo.rootwrap<1.7.0,>=1.6.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
+ python-novaclient<2.24.0,>=2.22.0
+--- neutron-2015.1.2/requirements.txt.~1~	2015-10-13 10:35:16.000000000 -0700
++++ neutron-2015.1.2/requirements.txt	2016-01-28 22:52:54.449783471 -0800
+@@ -3,14 +3,12 @@
  # process, which may cause wedges in the gate later.
- pbr>=0.6,!=0.7,<1.0
+ pbr!=0.7,<1.0,>=0.6
  
 -Paste
  PasteDeploy>=1.5.0
- Routes>=1.12.3,!=2.0
- anyjson>=0.3.3
-@@ -28,6 +27,5 @@ stevedore>=1.0.0  # Apache-2.0
- oslo.config>=1.4.0  # Apache-2.0
- oslo.db>=1.0.0,<1.1  # Apache-2.0
- oslo.messaging>=1.4.0,!=1.5.0,<1.6.0
--oslo.rootwrap>=1.3.0
+ Routes!=2.0,>=1.12.3
+ eventlet!=0.17.0,>=0.16.1
+ greenlet>=0.3.2
+ httplib2>=0.7.5
+ requests!=2.4.0,>=2.2.0
+-jsonrpclib
+ Jinja2>=2.6 # BSD License (3 clause)
+ keystonemiddleware<1.6.0,>=1.5.0
+ netaddr>=0.7.12
+@@ -30,7 +28,6 @@ oslo.i18n<1.6.0,>=1.5.0 # Apache-2.0
+ oslo.log<1.1.0,>=1.0.0 # Apache-2.0
+ oslo.messaging<1.9.0,>=1.8.0 # Apache-2.0
+ oslo.middleware<1.1.0,>=1.0.0 # Apache-2.0
+-oslo.rootwrap<1.7.0,>=1.6.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
  
- python-novaclient>=2.18.0
--- a/components/openstack/neutron/patches/05-disable-sslv3.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-In-house patch to disable SSLv3 support. 
-(See also upstream bug #1395095)
-
---- neutron-2014.2.2/neutron/openstack/common/sslutils.py.orig	2015-08-13 21:05:44.916269265 -0400
-+++ neutron-2014.2.2/neutron/openstack/common/sslutils.py	2015-08-13 20:37:57.022549534 -0400
-@@ -80,8 +80,7 @@
- 
- _SSL_PROTOCOLS = {
-     "tlsv1": ssl.PROTOCOL_TLSv1,
--    "sslv23": ssl.PROTOCOL_SSLv23,
--    "sslv3": ssl.PROTOCOL_SSLv3
-+    "sslv23": ssl.PROTOCOL_SSLv23
- }
- 
- try:
-@@ -89,6 +88,11 @@
- except AttributeError:
-     pass
- 
-+try:
-+    _SSL_PROTOCOLS["sslv3"] = ssl.PROTOCOL_SSLv3
-+except AttributeError:
-+    pass
-+
- 
- def validate_ssl_version(version):
-     key = version.lower()
--- a/components/openstack/neutron/patches/06-dhcp-port-sched.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-This patch fixes the upstream bug 1431105 that is only fixed in Kilo.
-
-commit 05f234481474aa05f59c4af459b4343d21397afc
-Author: Kevin Benton <email address hidden>
-Date: Wed Mar 11 18:32:52 2015 -0700
-
-    Schedule net to a DHCP agt on subnet create
-
-    Change the DHCP notifier behavior to schedule a network
-    to a DHCP agent when a subnet is created rather than
-    waiting for the first port to be created.
-
-    This will reduce the possibility to get a VM port created
-    and have it send a DHCP request before the DHCP agent is
-    ready. Before, the network would be scheduled to an agent
-    as a result of the API call to create the VM port, so the
-    DHCP port wouldn't be created until after the VM port.
-    After this patch, the network will have been scheduled to
-    a DHCP agent before the first VM port is created.
-
-    There is still a possibility that the DHCP agent could be
-    responding so slowly that it doesn't create its port and
-    activate the dnsmasq instance before the VM sends traffic.
-    A proper fix will ensure that the dnsmasq instance is
-    truly ready to serve requests for a new port will require
-    significantly more code for barriers (either on the subnet
-    creation, port creation, or the nova boot process) are too
-    complex to add this late in the cycle.
-
-    This patch also eliminates the logic in the n1kv plugin that
-    was already doing the same thing.
-
-    Closes-Bug: #1431105
-    Change-Id: I1c1caed0fdda6b801375a07f9252a9127058a07e
-
---- neutron-2014.2.2/neutron/api/rpc/agentnotifiers/dhcp_rpc_agent_api.py	2015-02-05 07:45:33.000000000 -0800
-+++ new/neutron/api/rpc/agentnotifiers/dhcp_rpc_agent_api.py	2015-10-13 15:48:35.280824405 -0700
-@@ -63,8 +63,8 @@
-                     {'network': {'id': network['id']}}, agent['host'])
-         elif not existing_agents:
-             LOG.warn(_('Unable to schedule network %s: no agents available; '
--                       'will retry on subsequent port creation events.'),
--                     network['id'])
-+                       'will retry on subsequent port and subnet creation '
-+                       'events.'), network['id'])
-         return new_agents + existing_agents
- 
-     def _get_enabled_agents(self, context, network, agents, method, payload):
-@@ -119,6 +119,7 @@
- 
-             # schedule the network first, if needed
-             schedule_required = (
-+                method == 'subnet_create_end' or
-                 method == 'port_create_end' and
-                 not self._is_reserved_dhcp_port(payload['port']))
-             if schedule_required:
---- neutron-2014.2.2/neutron/plugins/cisco/n1kv/n1kv_neutron_plugin.py	2015-02-05 07:45:33.000000000 -0800
-+++ new/neutron/plugins/cisco/n1kv/n1kv_neutron_plugin.py	2015-10-16 13:04:56.539001054 -0700
-@@ -1293,10 +1293,6 @@
-                       self).delete_subnet(context, sub['id'])
-         else:
-             LOG.debug(_("Created subnet: %s"), sub['id'])
--            if not q_conf.CONF.network_auto_schedule:
--                # Schedule network to a DHCP agent
--                net = self.get_network(context, sub['network_id'])
--                self.schedule_network(context, net)
-             return sub
- 
-     def update_subnet(self, context, id, subnet):
--- a/components/openstack/neutron/patches/07-launchpad-1255441.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-This upstream patch addresses Launchpad bug 1255441. Although it's been
-addressed in Kilo, the patch below is still not yet released for Juno.
-
-commit a8c7db5b9d9bba44660de3c7a64295f9f318b63a
-Author: Assaf Muller <email address hidden>
-Date: Wed Apr 1 09:38:21 2015 -0400
-
-    Remove "Arguments dropped when creating context" logging
-
-    This log was previously reduced from warning to debug.
-    Cinder removed it entirely in:
-    https://bugs.launchpad.net/cinder/+bug/1329156
-
-    The root cause is this:
-    Agent heartbeats use an admin context. The context is serialized
-    with its to_dict method, which exposes 'tenant' and 'project_name'
-    (These are properties of the class that are calculated from other
-    attributes). In the controller, this dict is used to initialize a
-    ContextBase, which does not accept tenant and project_name as arguments,
-    de facto sending those values as key word arguments.
-
-    We can either handle 'tenant' and 'project_name' specially, fix
-    it any other way, or drop the logging entirely. Is this logging
-    ever useful?
-
-    Change-Id: Ifd51b62bae7b96de44f04836015d2ed939bcb650
-    Closes-Bug: #1255441
-
---- neutron-2014.2.2/neutron/context.py	2015-02-05 07:45:33.000000000 -0800
-+++ new/neutron/context.py	2015-10-15 09:34:13.121138271 -0700
-@@ -76,12 +76,6 @@
-         if overwrite or not hasattr(local.store, 'context'):
-             local.store.context = self
- 
--        # Log only once the context has been configured to prevent
--        # format errors.
--        if kwargs:
--            LOG.debug(_('Arguments dropped when creating '
--                        'context: %s'), kwargs)
--
-     @property
-     def project_id(self):
-         return self.tenant
---- neutron-2014.2.2/neutron/tests/unit/test_neutron_context.py	2015-02-05 07:45:26.000000000 -0800
-+++ new/neutron/tests/unit/test_neutron_context.py	2015-10-16 12:51:55.872425513 -0700
-@@ -41,11 +41,6 @@
-         self.assertIsNone(ctx.tenant_name)
-         self.assertIsNone(ctx.auth_token)
- 
--    def test_neutron_context_create_logs_unknown_kwarg(self):
--        with mock.patch.object(context.LOG, 'debug') as mock_log:
--            context.Context('user_id', 'tenant_id', foo=None)
--        self.assertEqual(mock_log.call_count, 1)
--
-     def test_neutron_context_create_with_name(self):
-         ctx = context.Context('user_id', 'tenant_id',
-                               tenant_name='tenant_name', user_name='user_name')
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/neutron/vpnaas_patches/01-vpn_db_add_solaris.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,33 @@
+This works around a l3-agent bug which causes an exception if l3-agent is
+started and no VPN's have been defined. This function gets called with
+kwargs being NULL.
+
+This patch is Solaris-specific and not suitable for upstream
+contribution.
+
+--- vendor-packages/neutron_vpnaas/db/vpn/vpn_db.py	Fri Dec 11 09:16:02 2015
++++ new/usr/lib/python2.7/vendor-packages/neutron_vpnaas/db/vpn/vpn_db.py	Fri Dec 11 09:13:02 2015
+@@ -699,15 +699,20 @@
+             resource_id = kwargs.get('subnet_id')
+         check_func(context, resource_id)
+ 
+ 
+ def migration_callback(resource, event, trigger, **kwargs):
+-    context = kwargs['context']
+-    router = kwargs['router']
++    try:
++        context = kwargs['context']
++        router = kwargs['router']
++    except:
++        context = []
++        pass
++
+     vpnservice = manager.NeutronManager.get_service_plugins().get(
+         constants.VPN)
+-    if vpnservice:
++    if vpnservice and context:
+         vpnservice.check_router_in_use(context, router['id'])
+     return True
+ 
+ 
+ def subscribe():
--- a/components/openstack/nova/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/nova/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,26 +20,26 @@
 #
 
 #
-# Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		nova
-COMPONENT_CODENAME=	juno
-COMPONENT_VERSION=	2014.2.2
-COMPONENT_BE_VERSION=	2014.2
+COMPONENT_CODENAME=	kilo
+COMPONENT_VERSION=	2015.1.2
+COMPONENT_BE_VERSION=	2015.1
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:18dfd433aa043389318f28890578dcbe3c0606a38360f39ec8df8670150f89d7
+    sha256:8ea47c076367dec47d7bea89210f260da64171be5adf559ced8514d5fdb6c453
 COMPONENT_ARCHIVE_URL=	http://launchpad.net/$(COMPONENT_NAME)/$(COMPONENT_CODENAME)/$(COMPONENT_VERSION)/+download/$(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=			21825
+TPNO=			25792
 
 include $(WS_MAKE_RULES)/prep.mk
 include $(WS_MAKE_RULES)/setup.py.mk
@@ -62,22 +62,23 @@
 # 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) \
+	    /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; \
@@ -104,7 +105,7 @@
 REQUIRED_PACKAGES += library/python/eventlet-27
 REQUIRED_PACKAGES += library/python/iniparse-27
 REQUIRED_PACKAGES += library/python/oslo.config-27
-REQUIRED_PACKAGES += library/python/python-mysql-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
--- a/components/openstack/nova/files/nova-compute	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/nova/files/nova-compute	Fri Feb 05 17:54:17 2016 -0500
@@ -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
--- a/components/openstack/nova/files/nova-upgrade	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/nova/files/nova-upgrade	Fri Feb 05 17:54:17 2016 -0500
@@ -1,6 +1,6 @@
 #!/usr/bin/python2.7
 
-# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2015, 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,74 +27,25 @@
 from openstack_common import alter_mysql_tables, create_backups, modify_conf, \
     move_conf
 
-
 NOVA_CONF_MAPPINGS = {
-    # Deprecated group/name
-    ('DEFAULT', 'rabbit_durable_queues'): ('DEFAULT', 'amqp_durable_queues'),
-    ('rpc_notifier2', 'topics'): ('DEFAULT', 'notification_topics'),
-    ('DEFAULT', 'quota_injected_file_path_bytes'):
-        ('DEFAULT', 'quota_injected_file_path_length'),
-    ('DEFAULT', 'log_config'): ('DEFAULT', 'log_config_append'),
-    ('DEFAULT', 'logfile'): ('DEFAULT', 'log_file'),
-    ('DEFAULT', 'logdir'): ('DEFAULT', 'log_dir'),
-    ('DEFAULT', 'cinder_catalog_info'): ('cinder', 'catalog_info'),
-    ('DEFAULT', 'cinder_endpoint_template'): ('cinder', 'endpoint_template'),
-    ('DEFAULT', 'os_region_name'): ('cinder', 'os_region_name'),
-    ('DEFAULT', 'cinder_ca_certificates_file'):
-        ('cinder', 'ca_certificates_file'),
-    ('DEFAULT', 'cinder_http_retries'): ('cinder', 'http_retries'),
-    ('DEFAULT', 'cinder_http_timeout'): ('cinder', 'http_timeout'),
-    ('DEFAULT', 'cinder_api_insecure'): ('cinder', 'api_insecure'),
-    ('DEFAULT', 'cinder_cross_az_attach'): ('cinder', 'cross_az_attach'),
-    ('DEFAULT', 'db_backend'): ('database', 'backend'),
-    ('DEFAULT', 'sql_connection'): ('database', 'connection'),
-    ('sql', 'connection'): ('database', 'connection'),
-    ('DEFAULT', 'sql_idle_timeout'): ('database', 'idle_timeout'),
-    ('DATABASE', 'sql_idle_timeout'): ('database', 'idle_timeout'),
-    ('sql', 'idle_timeout'): ('database', 'idle_timeout'),
-    ('DEFAULT', 'sql_min_pool_size'): ('database', 'min_pool_size'),
-    ('DATABASE', 'sql_min_pool_size'): ('database', 'min_pool_size'),
-    ('DEFAULT', 'sql_max_pool_size'): ('database', 'max_pool_size'),
-    ('DATABASE', 'sql_max_pool_size'): ('database', 'max_pool_size'),
-    ('DEFAULT', 'sql_max_retries'): ('database', 'max_retries'),
-    ('DATABASE', 'sql_max_retries'): ('database', 'max_retries'),
-    ('DEFAULT', 'sql_retry_interval'): ('database', 'retry_interval'),
-    ('DATABASE', 'reconnect_interval'): ('database', 'retry_interval'),
-    ('DEFAULT', 'sql_max_overflow'): ('database', 'max_overflow'),
-    ('DATABASE', 'sqlalchemy_max_overflow'): ('database', 'max_overflow'),
-    ('DEFAULT', 'sql_connection_debug'): ('database', 'connection_debug'),
-    ('DEFAULT', 'sql_connection_trace'): ('database', 'connection_trace'),
-    ('DATABASE', 'sqlalchemy_pool_timeout'): ('database', 'pool_timeout'),
-    ('DEFAULT', 'glance_host'): ('glance', 'host'),
-    ('DEFAULT', 'glance_port'): ('glance', 'port'),
-    ('DEFAULT', 'glance_protocol'): ('glance', 'protocol'),
-    ('DEFAULT', 'glance_api_servers'): ('glance', 'api_servers'),
-    ('DEFAULT', 'glance_api_insecure'): ('glance', 'api_insecure'),
-    ('DEFAULT', 'glance_num_retries'): ('glance', 'num_retries'),
-    ('DEFAULT', 'memcache_servers'):
-        ('keystone_authtoken', 'memcached_servers'),
-    ('DEFAULT', 'matchmaker_ringfile'): ('matchmaker_ring', 'ringfile'),
-    ('DEFAULT', 'service_neutron_metadata_proxy'):
-        ('neutron', 'service_metadata_proxy'),
-    ('DEFAULT', 'neutron_metadata_proxy_shared_secret'):
-        ('neutron', 'metadata_proxy_shared_secret'),
-    ('DEFAULT', 'neutron_url'): ('neutron', 'url'),
-    ('DEFAULT', 'neutron_url_timeout'): ('neutron', 'url_timeout'),
-    ('DEFAULT', 'neutron_admin_username'): ('neutron', 'admin_username'),
-    ('DEFAULT', 'neutron_admin_password'): ('neutron', 'admin_password'),
-    ('DEFAULT', 'neutron_admin_tenant_id'): ('neutron', 'admin_tenant_id'),
-    ('DEFAULT', 'neutron_admin_tenant_name'): ('neutron', 'admin_tenant_name'),
-    ('DEFAULT', 'neutron_region_name'): ('neutron', 'region_name'),
-    ('DEFAULT', 'neutron_admin_auth_url'): ('neutron', 'admin_auth_url'),
-    ('DEFAULT', 'neutron_api_insecure'): ('neutron', 'api_insecure'),
-    ('DEFAULT', 'neutron_auth_strategy'): ('neutron', 'auth_strategy'),
-    ('DEFAULT', 'neutron_ovs_bridge'): ('neutron', 'ovs_bridge'),
-    ('DEFAULT', 'neutron_extension_sync_interval'):
-        ('neutron', 'extension_sync_interval'),
-    ('DEFAULT', 'neutron_ca_certificates_file'):
-        ('neutron', 'ca_certificates_file'),
-    ('DEFAULT', 'spicehtml5proxy_host'): ('spice', 'html5proxy_host'),
-    ('DEFAULT', 'spicehtml5proxy_port'): ('spice', 'html5proxy_port'),
+    # Deprecated group/name for Kilo
+    ('DEFAULT', 'network_device_mtu'): (None, None),
+    ('DEFAULT', 'log-format'): (None, None),
+    ('DEFAULT', 'use-syslog'): (None, None),
+    ('cinder', 'http_timeout'): ('cinder', 'timeout'),
+    ('ironic', 'client_log_level'): (None, None),
+    ('DEFAULT', 'osapi_max_request_body_size'):
+        ('oslo_middleware', 'max_request_body_size'),
+    ('neutron', 'ca_certificates_file'): ('neutron', 'cafile'),
+    ('neutron', 'admin_user_id'): (None, None),
+    ('neutron', 'admin_tenant_id'): (None, None),
+    ('DEFAULT', 'log_format'): (None, None),
+    ('cinder', 'api_insecure'): ('cinder', 'insecure'),
+    ('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),
 }
 
 NOVA_CONF_EXCEPTIONS = [
@@ -114,20 +65,6 @@
     ('neutron', 'service_metadata_proxy'),
 ]
 
-NOVA_MOVE_CONFIG = {
-    ('filter:authtoken', 'auth_uri'): ('keystone_authtoken', 'auth_uri'),
-    ('filter:authtoken', 'identity_uri'):
-        ('keystone_authtoken', 'identity_uri'),
-    ('filter:authtoken', 'admin_tenant_name'):
-        ('keystone_authtoken', 'admin_tenant_name'),
-    ('filter:authtoken', 'admin_user'): ('keystone_authtoken', 'admin_user'),
-    ('filter:authtoken', 'admin_password'):
-        ('keystone_authtoken', 'admin_password'),
-    ('filter:authtoken', 'signing_dir'): ('keystone_authtoken', 'signing_dir'),
-    ('filter:authtoken', 'auth_version'):
-        ('keystone_authtoken', 'auth_version'),
-}
-
 
 def start():
     # pull out the current version of config/upgrade-id
@@ -179,7 +116,7 @@
                 ('DEFAULT', 'sql_connection')
             ]
             test = lambda x: old.has_section(x[0]) and \
-                    old.has_option(x[0], x[1])
+                old.has_option(x[0], x[1])
 
             if not any(map(test, options)):
                 if old.has_option('DEFAULT', 'state_path'):
@@ -198,11 +135,6 @@
                 with open('/etc/nova/nova.conf.new', 'w+') as fh:
                     new.write(fh)
 
-        # before modifying nova.conf, move the [filter:authtoken] entries from
-        # the updated api-paste.ini to the old nova.conf
-        move_conf('/etc/nova/api-paste.ini', '/etc/nova/nova.conf',
-                  NOVA_MOVE_CONFIG)
-
         modify_conf('/etc/nova/nova.conf', NOVA_CONF_MAPPINGS,
                     NOVA_CONF_EXCEPTIONS)
 
--- a/components/openstack/nova/files/nova.conf	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/nova/files/nova.conf	Fri Feb 05 17:54:17 2016 -0500
@@ -1,133 +1,110 @@
 [DEFAULT]
 
 #
+# 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 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
-
-# SSL version to use (valid only if SSL enabled). valid values
-# are TLSv1 and SSLv23. SSLv2 and SSLv3 may be available on
-# some distributions. (string value)
-#kombu_ssl_version=
-
-# SSL key file (valid only if SSL enabled). (string value)
-#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
-
-# RabbitMQ HA cluster host:port pairs. (list value)
-#rabbit_hosts=$rabbit_host:$rabbit_port
-
-# Connect over SSL for RabbitMQ. (boolean value)
-#rabbit_use_ssl=false
-
-# The RabbitMQ userid. (string value)
-#rabbit_userid=guest
-
-# The RabbitMQ password. (string value)
-#rabbit_password=guest
-
-# The RabbitMQ login method. (string value)
-#rabbit_login_method=AMQPLAIN
-
-# The RabbitMQ virtual host. (string value)
-#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)
-#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
-# value)
-#rabbit_ha_queues=false
-
-# Deprecated, use rpc_backend=kombu+memory or rpc_backend=fake
-# (boolean value)
-#fake_rabbit=false
-
 # 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=oslo.messaging._drivers.matchmaker.MatchMakerLocalhost
+#rpc_zmq_matchmaker=local
 
 # ZeroMQ receiver listening port. (integer value)
 #rpc_zmq_port=9501
@@ -157,7 +134,7 @@
 # Heartbeat time-to-live. (integer value)
 #matchmaker_heartbeat_ttl=600
 
-# Size of RPC greenthread pool. (integer value)
+# Size of RPC thread pool. (integer value)
 #rpc_thread_pool_size=64
 
 # Driver or drivers to handle sending notifications. (multi
@@ -244,6 +221,9 @@
 # IP address of this host (string value)
 #my_ip=10.0.0.1
 
+# 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
@@ -326,7 +306,6 @@
 #quota_injected_file_content_bytes=10240
 
 # Length of injected file path (integer value)
-# Deprecated group/name - [DEFAULT]/quota_injected_file_path_bytes
 #quota_injected_file_path_length=255
 
 # Number of security groups per project (integer value)
@@ -348,11 +327,18 @@
 # value)
 #reservation_expire=86400
 
-# Count of reservations until usage is refreshed (integer
-# value)
+# 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
+# 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
 
@@ -445,14 +431,6 @@
 
 
 #
-# Options defined in nova.test
-#
-
-# File name of clean sqlite db (string value)
-#sqlite_clean_db=clean.sqlite
-
-
-#
 # Options defined in nova.utils
 #
 
@@ -524,7 +502,7 @@
 # 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=0
+#client_socket_timeout=900
 
 
 #
@@ -536,8 +514,12 @@
 # v3 api. (boolean value)
 #api_rate_limit=false
 
-# The strategy to use for auth: noauth or keystone. (string
-# value)
+#  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
@@ -572,6 +554,9 @@
 # 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
@@ -592,7 +577,7 @@
 
 # The path prefix used to call the ec2 API server (string
 # value)
-#ec2_path=/services/Cloud
+#ec2_path=/
 
 # List of region=fqdn pairs separated by commas (list value)
 #region_list=
@@ -611,6 +596,19 @@
 
 
 #
+# 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
 #
 
@@ -677,6 +675,10 @@
 # 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
@@ -707,15 +709,6 @@
 
 
 #
-# Options defined in nova.api.sizelimit
-#
-
-# The maximum body size per each osapi request(bytes) (integer
-# value)
-#osapi_max_request_body_size=114688
-
-
-#
 # Options defined in nova.cert.rpcapi
 #
 
@@ -818,7 +811,7 @@
 # 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-%(uuid)s
+#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
@@ -872,6 +865,10 @@
 # (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
@@ -882,17 +879,15 @@
 
 # Interval to pull network bandwidth usage info. Not supported
 # on all hypervisors. Set to -1 to disable. Setting this to 0
-# will disable, but this will change in the K release to mean
-# "run at the default rate". (integer value)
+# 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
-# disable, but this will change in Juno to mean "run at the
-# default rate". (integer value)
+# 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 info_cache self healing
+# Number of seconds between instance network information cache
 # updates (integer value)
 #heal_instance_info_cache_interval=60
 
@@ -905,27 +900,34 @@
 #volume_usage_poll_interval=0
 
 # Interval in seconds for polling shelved instances to
-# offload. Set to -1 to disable.Setting this to 0 will
-# disable, but this will change in Juno to mean "run at the
-# default rate". (integer value)
+# 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 when
-# shelved (integer value)
+# 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 (integer value)
+# 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
 
-# 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)
+# 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.
@@ -943,7 +945,8 @@
 #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)
+# 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
@@ -1032,18 +1035,6 @@
 
 
 #
-# Options defined in nova.console.vmrc
-#
-
-# DEPRECATED. Port for VMware VMRC connections (integer value)
-#console_vmrc_port=443
-
-# DEPRECATED. Number of retries for retrieving VMRC
-# information (integer value)
-#console_vmrc_error_retries=10
-
-
-#
 # Options defined in nova.console.xvp
 #
 
@@ -1262,7 +1253,7 @@
 # servers. (boolean value)
 #use_network_dns_servers=false
 
-# A list of dmz range that should be accepted (list value)
+# A list of dmz ranges that should be accepted (list value)
 #dmz_cidr=
 
 # Traffic to this range will always be snatted to the fallback
@@ -1302,12 +1293,12 @@
 # The port for the metadata API port (integer value)
 #metadata_port=8775
 
-# Regular expression to match iptables rule that should always
-# be on the top. (string value)
+# Regular expression to match the iptables rule that should
+# always be on the top. (string value)
 #iptables_top_regex=
 
-# Regular expression to match iptables rule that should always
-# be on the bottom. (string value)
+# 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
@@ -1323,6 +1314,14 @@
 # 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
@@ -1461,156 +1460,7 @@
 
 
 #
-# 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.lockutils
-#
-
-# Enables or disables inter-process locks. (boolean value)
-#disable_process_locking=false
-
-# Directory to use for lock files. (string value)
-lock_path=$state_path/lock
-
-
-#
-# Options defined in nova.openstack.common.log
-#
-
-# Print debugging output (set logging level to DEBUG instead
-# of default WARNING level). (boolean value)
-#debug=false
-
-# Print more verbose output (set logging level to INFO instead
-# of default WARNING level). (boolean value)
-#verbose=false
-
-# Log output to standard error. (boolean value)
-#use_stderr=true
-
-# Format string to use for log messages with context. (string
-# value)
-#logging_context_format_string=%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s
-
-# Format string to use for log messages without context.
-# (string value)
-#logging_default_format_string=%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s
-
-# Data to append to log format when level is DEBUG. (string
-# value)
-#logging_debug_format_suffix=%(funcName)s %(pathname)s:%(lineno)d
-
-# Prefix each line of exception output with this format.
-# (string value)
-#logging_exception_prefix=%(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s
-
-# List of logger=LEVEL pairs. (list value)
-#default_log_levels=amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN
-
-# Enables or disables publication of error events. (boolean
-# value)
-#publish_errors=false
-
-# Enables or disables fatal status of deprecations. (boolean
-# value)
-#fatal_deprecations=false
-
-# The format for an instance that is passed with the log
-# message. (string value)
-#instance_format="[instance: %(uuid)s] "
-
-# The format for an instance UUID that is passed with the log
-# message. (string value)
-#instance_uuid_format="[instance: %(uuid)s] "
-
-# The name of a logging configuration file. This file is
-# appended to any existing logging configuration files. For
-# details about logging configuration files, see the Python
-# logging module documentation. (string value)
-# Deprecated group/name - [DEFAULT]/log_config
-#log_config_append=<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
-
-
-#
-# 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
-
-
-#
-# Options defined in nova.pci.pci_request
+# Options defined in nova.pci.request
 #
 
 # An alias for a PCI passthrough device requirement. This
@@ -1624,7 +1474,7 @@
 
 
 #
-# Options defined in nova.pci.pci_whitelist
+# Options defined in nova.pci.whitelist
 #
 
 # White list of PCI devices available to VMs. For example:
@@ -1739,8 +1589,8 @@
 
 # Filter classes available to the scheduler which may be
 # specified more than once.  An entry of
-# "nova.scheduler.filters.standard_filters" maps to all
-# filters included with nova. (multi valued)
+# "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
@@ -1751,6 +1601,10 @@
 # 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
@@ -1807,6 +1661,16 @@
 
 
 #
+# 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
 #
 
@@ -1832,12 +1696,9 @@
 # (string value)
 #config_drive_format=iso9660
 
-# DEPRECATED (not needed any more):  Where to put temporary
-# files associated with config drive creation (string value)
-#config_drive_tempdir=<None>
-
-# Set to force injection to take place on a config drive (if
-# set, valid options are: always) (string value)
+# 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
@@ -1930,9 +1791,8 @@
 #
 
 # Number of seconds to wait between runs of the image cache
-# manager. Set to -1 to disable. Setting this to 0 will
-# disable, but this will change in the K release to mean "run
-# at the default rate". (integer value)
+# 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
@@ -1982,7 +1842,8 @@
 # Glance image service. (string value)
 #solariszones_snapshots_directory=$instances_path/snapshots
 
-# Default path for suspend images for Solaris Zones. (string value)
+# Default path for suspend images for Solaris Zones. (string
+# value)
 #zones_suspend_path=/var/share/zones/SYSsuspend
 
 
@@ -2033,169 +1894,140 @@
 #volume_api_class=nova.volume.cinder.API
 
 
-[baremetal]
-
-#
-# Options defined in nova.virt.baremetal.db.api
-#
-
-# The backend to use for bare-metal database (string value)
-#db_backend=sqlalchemy
-
-
-#
-# Options defined in nova.virt.baremetal.db.sqlalchemy.session
-#
-
-# The SQLAlchemy connection string used to connect to the
-# bare-metal database (string value)
-#sql_connection=sqlite:///$state_path/baremetal_nova.sqlite
-
-
-#
-# Options defined in nova.virt.baremetal.driver
-#
-
-# Baremetal VIF driver. (string value)
-#vif_driver=nova.virt.baremetal.vif_driver.BareMetalVIFDriver
-
-# Baremetal volume driver. (string value)
-#volume_driver=nova.virt.baremetal.volume_driver.LibvirtVolumeDriver
-
-# A list of additional capabilities corresponding to
-# flavor_extra_specs for this compute host to advertise. Valid
-# entries are name=value, pairs For example, "key1:val1,
-# key2:val2" (list value)
-#flavor_extra_specs=
-
-# Baremetal driver back-end (pxe or tilera) (string value)
-#driver=nova.virt.baremetal.pxe.PXE
-
-# Baremetal power management method (string value)
-#power_manager=nova.virt.baremetal.ipmi.IPMI
-
-# Baremetal compute node's tftp root path (string value)
-#tftp_root=/tftpboot
-
-
-#
-# Options defined in nova.virt.baremetal.ipmi
-#
-
-# Path to baremetal terminal program (string value)
-#terminal=shellinaboxd
-
-# Path to baremetal terminal SSL cert(PEM) (string value)
-#terminal_cert_dir=<None>
-
-# Path to directory stores pidfiles of baremetal_terminal
+#
+# 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)
-#terminal_pid_dir=$state_path/baremetal/console
-
-# Maximal number of retries for IPMI operations (integer
-# value)
-#ipmi_power_retry=10
-
-
-#
-# Options defined in nova.virt.baremetal.pxe
-#
-
-# Default kernel image ID used in deployment phase (string
-# value)
-#deploy_kernel=<None>
-
-# Default ramdisk image ID used in deployment phase (string
-# value)
-#deploy_ramdisk=<None>
-
-# Template file for injected network config (string value)
-#net_config_template=$pybasedir/nova/virt/baremetal/net-dhcp.ubuntu.template
-
-# Additional append parameters for baremetal PXE boot (string
+#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
 # value)
-#pxe_append_params=nofb nomodeset vga=normal
-
-# Template file for PXE configuration (string value)
-#pxe_config_template=$pybasedir/nova/virt/baremetal/pxe_config.template
-
-# If True, enable file injection for network info, files and
-# admin password (boolean value)
-#use_file_injection=false
-
-# Timeout for PXE deployments. Default: 0 (unlimited) (integer
+#fatal_deprecations=false
+
+
+[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>
+
+# If True, SQLite uses synchronous mode. (boolean value)
+#sqlite_synchronous=true
+
+# Timeout before idle SQL connections are reaped. (integer
 # value)
-#pxe_deploy_timeout=0
-
-# If set, pass the network configuration details to the
-# initramfs via cmdline. (boolean value)
-#pxe_network_config=false
-
-# This gets passed to Neutron as the bootfile dhcp parameter.
+#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>
+
+
+[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
 # (string value)
-#pxe_bootfile_name=pxelinux.0
-
-
-#
-# Options defined in nova.virt.baremetal.tilera_pdu
-#
-
-# IP address of tilera pdu (string value)
-#tile_pdu_ip=10.0.100.1
-
-# Management script for tilera pdu (string value)
-#tile_pdu_mgr=/tftpboot/pdu_mgr
-
-# Power status of tilera PDU is OFF (integer value)
-#tile_pdu_off=2
-
-# Power status of tilera PDU is ON (integer value)
-#tile_pdu_on=1
-
-# Power status of tilera PDU (integer value)
-#tile_pdu_status=9
-
-# Wait time in seconds until check the result after tilera
-# power operations (integer value)
-#tile_power_wait=9
-
-
-#
-# Options defined in nova.virt.baremetal.virtual_power_driver
-#
-
-# IP or name to virtual power host (string value)
-#virtual_power_ssh_host=
-
-# Port to use for ssh to virtual power host (integer value)
-#virtual_power_ssh_port=22
-
-# Base command to use for virtual power(vbox, virsh) (string
-# value)
-#virtual_power_type=virsh
-
-# User to execute virtual power commands as (string value)
-#virtual_power_host_user=
-
-# Password for virtual power host_user (string value)
-#virtual_power_host_pass=
-
-# The ssh key for virtual power host_user (string value)
-#virtual_power_host_key=<None>
-
-
-#
-# Options defined in nova.virt.baremetal.volume_driver
-#
-
-# Do not set this out of dev/test environments. If a node does
-# not have a fixed PXE IP address, volumes are exported with
-# globally opened ACL (boolean value)
-#use_unsafe_iscsi=false
-
-# The iSCSI IQN prefix used in baremetal volume connections.
-# (string value)
-#iscsi_iqn_prefix=iqn.2010-10.org.openstack.baremetal
+#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>
 
 
 [cells]
@@ -2354,41 +2186,19 @@
 # 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)
-# Deprecated group/name - [DEFAULT]/cinder_catalog_info
-#catalog_info=volume:cinder:publicURL
+#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)
-# Deprecated group/name - [DEFAULT]/cinder_endpoint_template
 #endpoint_template=<None>
 
-# Region name of this node (string value)
-# Deprecated group/name - [DEFAULT]/os_region_name
-#os_region_name=<None>
-
-# Location of ca certificates file to use for cinder client
-# requests. (string value)
-# Deprecated group/name - [DEFAULT]/cinder_ca_certificates_file
-#ca_certificates_file=<None>
-
 # Number of cinderclient retries on failed http calls (integer
 # value)
-# Deprecated group/name - [DEFAULT]/cinder_http_retries
 #http_retries=3
 
-# HTTP inactivity timeout (in seconds) (integer value)
-# Deprecated group/name - [DEFAULT]/cinder_http_timeout
-#http_timeout=<None>
-
-# Allow to perform insecure SSL requests to cinder (boolean
-# value)
-# Deprecated group/name - [DEFAULT]/cinder_api_insecure
-#api_insecure=false
-
 # Allow attach between instance and volume in different
 # availability zones. (boolean value)
-# Deprecated group/name - [DEFAULT]/cinder_cross_az_attach
 #cross_az_attach=true
 
 
@@ -2466,8 +2276,9 @@
 # Deprecated group/name - [DATABASE]/sql_max_pool_size
 #max_pool_size=<None>
 
-# Maximum db connection retries during startup. Set to -1 to
-# specify an infinite retry count. (integer value)
+# 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
@@ -2503,21 +2314,49 @@
 # connection lost. (boolean value)
 #use_db_reconnect=false
 
-# Seconds between database connection retries. (integer value)
+# Seconds between retries of a database transaction. (integer
+# value)
 #db_retry_interval=1
 
-# If True, increases the interval between database connection
-# retries up to db_max_retry_interval. (boolean value)
+# 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
-# database connection retries. (integer value)
+# retries of a database operation. (integer value)
 #db_max_retry_interval=10
 
-# Maximum database connection retries before error is raised.
-# Set to -1 to specify an infinite retry count. (integer
+# 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]/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)
-#db_max_retries=20
+#mysql_sql_mode=TRADITIONAL
 
 
 [ephemeral_storage_encryption]
@@ -2548,32 +2387,26 @@
 #
 
 # Default glance hostname or IP address (string value)
-# Deprecated group/name - [DEFAULT]/glance_host
 #host=$my_ip
 
 # Default glance port (integer value)
-# Deprecated group/name - [DEFAULT]/glance_port
 #port=9292
 
 # Default protocol to use when connecting to glance. Set to
 # https for SSL. (string value)
-# Deprecated group/name - [DEFAULT]/glance_protocol
 #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)
-# Deprecated group/name - [DEFAULT]/glance_api_servers
 #api_servers=<None>
 
 # Allow to perform insecure SSL (https) requests to glance
 # (boolean value)
-# Deprecated group/name - [DEFAULT]/glance_api_insecure
 #api_insecure=false
 
-# Number of retries when downloading an image from glance
-# (integer value)
-# Deprecated group/name - [DEFAULT]/glance_num_retries
+# 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
@@ -2582,6 +2415,16 @@
 #allowed_direct_url_schemes=
 
 
+[guestfs]
+
+#
+# Options defined in nova.virt.disk.vfs.guestfs
+#
+
+# Enable guestfs debug (boolean value)
+#debug=false
+
+
 [hyperv]
 
 #
@@ -2715,7 +2558,8 @@
 
 # Log level override for ironicclient. Set this in order to
 # override the global "default_log_levels", "verbose", and
-# "debug" settings. (string value)
+# "debug" settings. DEPRECATED: use standard logging
+# configuration. (string value)
 #client_log_level=<None>
 
 # Ironic keystone tenant name. (string value)
@@ -2929,6 +2773,13 @@
 # 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>
+
 
 [libvirt]
 
@@ -2947,7 +2798,7 @@
 #rescue_ramdisk_id=<None>
 
 # Libvirt domain type (valid options are: kvm, lxc, qemu, uml,
-# xen) (string value)
+# xen and parallels) (string value)
 #virt_type=kvm
 
 # Override the default libvirt URI (which is dependent on
@@ -2988,11 +2839,6 @@
 # vdi). Defaults to same as source image (string value)
 #snapshot_image_format=<None>
 
-# DEPRECATED. Libvirt handlers for remote volumes. This option
-# is deprecated and will be removed in the Kilo release. (list
-# value)
-#volume_drivers=iscsi=nova.virt.libvirt.volume.LibvirtISCSIVolumeDriver,iser=nova.virt.libvirt.volume.LibvirtISERVolumeDriver,local=nova.virt.libvirt.volume.LibvirtVolumeDriver,fake=nova.virt.libvirt.volume.LibvirtFakeVolumeDriver,rbd=nova.virt.libvirt.volume.LibvirtNetVolumeDriver,sheepdog=nova.virt.libvirt.volume.LibvirtNetVolumeDriver,nfs=nova.virt.libvirt.volume.LibvirtNFSVolumeDriver,aoe=nova.virt.libvirt.volume.LibvirtAOEVolumeDriver,glusterfs=nova.virt.libvirt.volume.LibvirtGlusterfsVolumeDriver,fibre_channel=nova.virt.libvirt.volume.LibvirtFibreChannelVolumeDriver,scality=nova.virt.libvirt.volume.LibvirtScalityVolumeDriver,gpfs=nova.virt.libvirt.volume.LibvirtGPFSVolumeDriver
-
 # 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)
@@ -3078,14 +2924,6 @@
 # flag is set to True. (boolean value)
 #sparse_logical_volumes=false
 
-# 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
-
 # The RADOS pool in which rbd volumes are stored (string
 # value)
 #images_rbd_pool=rbd
@@ -3125,6 +2963,19 @@
 
 
 #
+# 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
 #
 
@@ -3166,10 +3017,19 @@
 # node (string value)
 #nfs_mount_point_base=$state_path/mnt
 
-# Mount options passedf to the NFS client. See section of the
+# 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
@@ -3195,6 +3055,21 @@
 # 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>
+
 
 [matchmaker_redis]
 
@@ -3264,12 +3139,10 @@
 
 # Set flag to indicate Neutron will proxy metadata requests
 # and resolve instance ids. (boolean value)
-# Deprecated group/name - [DEFAULT]/service_neutron_metadata_proxy
 service_metadata_proxy=true
 
 # Shared secret to validate proxies Neutron metadata requests
 # (string value)
-# Deprecated group/name - [DEFAULT]/neutron_metadata_proxy_shared_secret
 #metadata_proxy_shared_secret=
 
 
@@ -3277,77 +3150,133 @@
 # Options defined in nova.network.neutronv2.api
 #
 
+# Authentication URL (string value)
+#auth_url=<None>
+
+# Name of the plugin to load (string value)
+#auth_plugin=<None>
+
+# PEM encoded Certificate Authority to use when verifying
+# HTTPs connections. (string value)
+# Deprecated group/name - [neutron]/ca_certificates_file
+#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>
+
+# Verify HTTPS connections. (boolean value)
+# Deprecated group/name - [neutron]/api_insecure
+#insecure=false
+
+# PEM encoded client certificate key file (string value)
+#keyfile=<None>
+
+# 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>
+
+# Tenant ID to scope to (string value)
+#tenant_id=<None>
+
+# Tenant name to scope to (string value)
+#tenant_name=<None>
+
+# Timeout value for http requests (integer value)
+# Deprecated group/name - [neutron]/url_timeout
+#timeout=<None>
+
+# Trust ID (string value)
+#trust_id=<None>
+
+# 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>
+
 # URL for connecting to neutron (string value)
-# Deprecated group/name - [DEFAULT]/neutron_url
 #url=http://127.0.0.1:9696
 
-# Timeout value for connecting to neutron in seconds (integer
-# value)
-# Deprecated group/name - [DEFAULT]/neutron_url_timeout
-#url_timeout=30
-
-# User id for connecting to neutron in admin context (string
-# value)
+# 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 (string
-# value)
-# Deprecated group/name - [DEFAULT]/neutron_admin_username
+# Username for connecting to neutron in admin context
+# DEPRECATED: specify an auth_plugin and appropriate
+# credentials instead. (string value)
 #admin_username=<None>
 
-# Password for connecting to neutron in admin context (string
-# value)
-# Deprecated group/name - [DEFAULT]/neutron_admin_password
+# 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 (string
-# value)
-# Deprecated group/name - [DEFAULT]/neutron_admin_tenant_id
+# 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. (string value)
-# Deprecated group/name - [DEFAULT]/neutron_admin_tenant_name
+# within a domain. DEPRECATED: specify an auth_plugin and
+# appropriate credentials instead. (string value)
 #admin_tenant_name=<None>
 
 # Region name for connecting to neutron in admin context
 # (string value)
-# Deprecated group/name - [DEFAULT]/neutron_region_name
 #region_name=<None>
 
-# Authorization URL for connecting to neutron in admin context
-# (string value)
-# Deprecated group/name - [DEFAULT]/neutron_admin_auth_url
+# 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
 
-# If set, ignore any SSL validation issues (boolean value)
-# Deprecated group/name - [DEFAULT]/neutron_api_insecure
-#api_insecure=false
-
 # Authorization strategy for connecting to neutron in admin
-# context (string value)
-# Deprecated group/name - [DEFAULT]/neutron_auth_strategy
+# 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
 
 # Name of Integration Bridge used by Open vSwitch (string
 # value)
-# Deprecated group/name - [DEFAULT]/neutron_ovs_bridge
 #ovs_bridge=br-int
 
 # Number of seconds before querying neutron for extensions
 # (integer value)
-# Deprecated group/name - [DEFAULT]/neutron_extension_sync_interval
 #extension_sync_interval=600
 
-# Location of CA certificates file to use for neutron client
-# requests. (string value)
-# Deprecated group/name - [DEFAULT]/neutron_ca_certificates_file
-#ca_certificates_file=<None>
-
-# Allow an instance to have multiple vNICs attached to the
-# same Neutron network. (boolean value)
+# 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
 
 
@@ -3370,6 +3299,23 @@
 #extensions_whitelist=
 
 
+[oslo_concurrency]
+
+#
+# Options defined in 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
+
+
 [oslo_messaging_amqp]
 
 #
@@ -3418,6 +3364,170 @@
 #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
+
+
+[oslo_messaging_rabbit]
+
+#
+# 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
+
+# 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=
+
+# SSL key file (valid only if SSL enabled). (string value)
+#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
+
+# RabbitMQ HA cluster host:port pairs. (list value)
+#rabbit_hosts=$rabbit_host:$rabbit_port
+
+# Connect over SSL for RabbitMQ. (boolean value)
+#rabbit_use_ssl=false
+
+# The RabbitMQ userid. (string value)
+#rabbit_userid=guest
+
+# The RabbitMQ password. (string value)
+#rabbit_password=guest
+
+# The RabbitMQ login method. (string value)
+#rabbit_login_method=AMQPLAIN
+
+# The RabbitMQ virtual host. (string value)
+#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)
+#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
+# 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
+
+
+[oslo_middleware]
+
+#
+# Options defined in oslo.middleware
+#
+
+# The maximum body size for each  request, in bytes. (integer
+# value)
+# Deprecated group/name - [DEFAULT]/osapi_max_request_body_size
+# Deprecated group/name - [DEFAULT]/max_request_body_size
+#max_request_body_size=114688
+
+
 [rdp]
 
 #
@@ -3476,12 +3586,10 @@
 #
 
 # Host on which to listen for incoming requests (string value)
-# Deprecated group/name - [DEFAULT]/spicehtml5proxy_host
 #html5proxy_host=0.0.0.0
 
 # Port on which to listen for incoming requests (integer
 # value)
-# Deprecated group/name - [DEFAULT]/spicehtml5proxy_port
 #html5proxy_port=6082
 
 
@@ -3603,9 +3711,11 @@
 #
 
 # Set a version cap for messages sent to compute services. If
-# you plan to do a live upgrade from havana to icehouse, you
-# should set this option to "icehouse-compat" before beginning
-# the live upgrade procedure. (string value)
+# 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>
 
 
@@ -3660,6 +3770,20 @@
 # Options defined in nova.virt.vmwareapi.driver
 #
 
+# The PBM status. (boolean value)
+#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.
 # (string value)
 #host_ip=<None>
@@ -3728,6 +3852,42 @@
 #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>
+
+
+[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
+
+
 [xenserver]
 
 #
@@ -3923,7 +4083,8 @@
 # rsynced (boolean value)
 #sparse_copy=true
 
-# Maximum number of retries to unplug VBD (integer value)
+# 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
--- a/components/openstack/nova/files/release	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/nova/files/release	Fri Feb 05 17:54:17 2016 -0500
@@ -1,4 +1,4 @@
 [Nova]
 vendor = Oracle Solaris
 product = OpenStack Nova
-package = Juno 2014.2.2
+package = Kilo 2015.1.2
--- a/components/openstack/nova/files/solariszones/driver.py	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/nova/files/solariszones/driver.py	Fri Feb 05 17:54:17 2016 -0500
@@ -35,9 +35,16 @@
 from solaris_install.target.size import Size
 
 from cinderclient import exceptions as cinder_exception
+from cinderclient.v1 import client as v1_client
 from eventlet import greenthread
+from keystoneclient import exceptions as keystone_exception
 from lxml import etree
+from oslo_concurrency import processutils
 from oslo_config import cfg
+from oslo_log import log as logging
+from oslo_serialization import jsonutils
+from oslo_utils import excutils
+from oslo_utils import strutils
 from passlib.hash import sha256_crypt
 
 from nova.api.metadata import password
@@ -49,21 +56,16 @@
 from nova import context as nova_context
 from nova import crypto
 from nova import exception
-from nova.i18n import _
+from nova.i18n import _, _LE, _LI
 from nova.image import glance
-from nova.network import neutronv2
+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 excutils
 from nova.openstack.common import fileutils
-from nova.openstack.common import jsonutils
-from nova.openstack.common import log as logging
-from nova.openstack.common import loopingcall
-from nova.openstack.common import processutils
-from nova.openstack.common import strutils
 from nova import utils
 from nova.virt import driver
 from nova.virt import event as virtevent
+from nova.virt import hardware
 from nova.virt import images
 from nova.virt.solariszones import sysconfig
 from nova.volume.cinder import API
@@ -242,6 +244,8 @@
 
         Returns a volume object
         """
+        client = cinderclient(context)
+
         if snapshot is not None:
             snapshot_id = snapshot['id']
         else:
@@ -261,11 +265,10 @@
                       imageRef=image_id,
                       source_volid=source_volid)
 
-        version = get_cinder_client_version(context)
-        if version == '1':
+        if isinstance(client, v1_client.Client):
             kwargs['display_name'] = name
             kwargs['display_description'] = description
-        elif version == '2':
+        else:
             kwargs['name'] = name
             kwargs['description'] = description
 
@@ -274,8 +277,9 @@
             return _untranslate_volume_summary_view(context, item)
         except cinder_exception.OverLimit:
             raise exception.OverQuota(overs='volumes')
-        except cinder_exception.BadRequest as err:
-            raise exception.InvalidInput(reason=unicode(err))
+        except (cinder_exception.BadRequest,
+                keystone_exception.BadRequest) as reason:
+            raise exception.InvalidInput(reason=reason)
 
     @translate_volume_exception
     def update(self, context, volume_id, fields):
@@ -704,26 +708,18 @@
 
         :param instance: nova.objects.instance.Instance object
 
-        Returns a dict containing:
-
-        :state:           the running state, one of the power_state codes
-        :max_mem:         (int) the maximum memory in KBytes allowed
-        :mem:             (int) the memory in KBytes used by the domain
-        :num_cpu:         (int) the number of virtual CPUs for the domain
-        :cpu_time:        (int) the CPU time used in nanoseconds
+        Returns a InstanceInfo object
         """
         # TODO(Vek): Need to pass context in for access to auth_token
         name = instance['name']
         zone = self._get_zone_by_name(name)
         if zone is None:
             raise exception.InstanceNotFound(instance_id=name)
-        return {
-            'state':    self._get_state(zone),
-            'max_mem':  self._get_max_mem(zone),
-            'mem':      self._get_mem(zone),
-            'num_cpu':  self._get_num_cpu(zone),
-            'cpu_time': self._get_cpu_time(zone)
-        }
+        return hardware.InstanceInfo(state=self._get_state(zone),
+                                     max_mem_kb=self._get_max_mem(zone),
+                                     mem_kb=self._get_mem(zone),
+                                     num_cpu=self._get_num_cpu(zone),
+                                     cpu_time_ns=self._get_cpu_time(zone))
 
     def get_num_instances(self):
         """Return the total number of virtual machines.
@@ -891,6 +887,7 @@
             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:
@@ -899,11 +896,6 @@
                 self._volume_api.detach(context, root_ci['serial'])
                 self._volume_api.delete(context, root_ci['serial'])
 
-                # We need to clear the block device mapping for the root device
-                bdmobj = objects.BlockDeviceMapping()
-                bdm = bdmobj.get_by_volume_id(context, root_ci['serial'])
-                bdm.destroy(context)
-
         instance.task_state = task_states.REBUILD_SPAWNING
         instance.save(
             expected_task_state=[task_states.REBUILD_BLOCK_DEVICE_MAPPING])
@@ -988,10 +980,10 @@
         try:
             ua = self._archive_manager.getArchive(image)
         except Exception as ex:
-                reason = ex.get_payload().info
-                raise exception.ImageUnacceptable(
-                    image_id=instance['image_ref'],
-                    reason=reason)
+            reason = ex.get_payload().info
+            raise exception.ImageUnacceptable(
+                image_id=instance['image_ref'],
+                reason=reason)
 
         # Validate the image at this point to ensure:
         # - contains one deployable system
@@ -1018,11 +1010,12 @@
         self._validated_archives.append(instance['image_ref'])
 
     def _suri_from_volume_info(self, connection_info):
-        """Returns a suri(5) formatted string based on connection_info
-        Currently supports local ZFS volume and iSCSI driver types.
+        """Returns a suri(5) formatted string based on connection_info.
+        Currently supports local ZFS volume, NFS, Fibre Channel and iSCSI
+        driver types.
         """
         driver_type = connection_info['driver_volume_type']
-        if driver_type not in ['iscsi', 'fibre_channel', 'local']:
+        if driver_type not in ['iscsi', 'fibre_channel', 'local', 'nfs']:
             raise exception.VolumeDriverNotFound(driver_type=driver_type)
         if driver_type == 'local':
             suri = 'dev:/dev/zvol/dsk/%s' % connection_info['volume_path']
@@ -1038,6 +1031,13 @@
                                                     data['target_iqn'],
                                                     data['target_lun'])
             # TODO(npower): need to handle CHAP authentication also
+        elif driver_type == 'nfs':
+            data = connection_info['data']
+            suri = (
+                'nfs://cinder:cinder@%s/%s' %
+                (data['export'].replace(':', ''), data['name'])
+            )
+
         elif driver_type == 'fibre_channel':
             data = connection_info['data']
             target_wwn = data['target_wwn']
@@ -1263,7 +1263,7 @@
                 return
 
         tenant_id = None
-        network_plugin = neutronv2.get_client(context)
+        network_plugin = neutronv2_api.get_client(context)
         for netid, network in enumerate(network_info):
             if tenant_id is None:
                 tenant_id = network['network']['meta']['tenant_id']
@@ -1638,8 +1638,7 @@
         console_fmri = VNC_CONSOLE_BASE_FMRI + ':' + name
         # TODO(npower): investigate using RAD instead of CLI invocation
         try:
-            utils.execute('/usr/bin/svcs', '-H', '-o', 'state',
-                          console_fmri)
+            utils.execute('/usr/bin/svcs', '-H', '-o', 'state', console_fmri)
             return True
         except Exception:
             return False
@@ -1809,16 +1808,19 @@
             shutil.rmtree(sc_dir)
 
         if connection_info is not None:
-            bdm = objects.BlockDeviceMapping(
-                    source_type='volume',
-                    destination_type='volume',
-                    instance_uuid=instance.uuid,
-                    volume_id=volume_id,
-                    connection_info=jsonutils.dumps(connection_info),
-                    device_name=mountpoint,
-                    delete_on_termination=True,
-                    volume_size=instance['root_gb'])
-            bdm.create(context)
+            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]
+
+            # update the required attributes
+            bdm['connection_info'] = jsonutils.dumps(connection_info)
+            bdm['source_type'] = 'volume'
+            bdm['destination_type'] = 'volume'
+            bdm['device_name'] = mountpoint
+            bdm['delete_on_termination'] = True
+            bdm['volume_id'] = volume_id
+            bdm['volume_size'] = instance['root_gb']
             bdm.save()
 
     def _power_off(self, instance, halt_type):
@@ -1853,21 +1855,15 @@
         """
         self.power_off(instance)
 
-        inst_type = flavor_obj.Flavor.get_by_id(
-            nova_context.get_admin_context(read_deleted='yes'),
-            instance['instance_type_id'])
-        extra_specs = inst_type['extra_specs'].copy()
+        extra_specs = self._get_extra_specs(instance)
         brand = extra_specs.get('zonecfg:brand', ZONE_BRAND_SOLARIS)
 
         name = instance['name']
 
-        cpu = int(instance.system_metadata['old_instance_type_vcpus'])
-        mem = int(instance.system_metadata['old_instance_type_memory_mb'])
-
-        self._set_num_cpu(name, cpu, brand)
-        self._set_memory_cap(name, mem, brand)
-
-        rgb = int(instance.system_metadata['new_instance_type_root_gb'])
+        self._set_num_cpu(name, instance.vcpus, brand)
+        self._set_memory_cap(name, instance.memory_mb, brand)
+
+        rgb = instance.root_gb
         old_rvid = instance.system_metadata.get('old_instance_volid')
         if old_rvid:
             new_rvid = instance.system_metadata.get('new_instance_volid')
@@ -1897,8 +1893,6 @@
         """
         if (instance['task_state'] == task_states.RESIZE_REVERTING and
                 instance.system_metadata['old_vm_state'] == vm_states.RESIZED):
-            self._samehost_revert_resize(context, instance, network_info,
-                                         block_device_info)
             return
 
         # A destroy is issued for the original zone for an evac case.  If
@@ -2341,10 +2335,10 @@
         LOG.debug("Starting migrate_disk_and_power_off", instance=instance)
 
         samehost = (dest == self.get_host_ip_addr())
-        inst_type = flavor_obj.Flavor.get_by_id(
-            nova_context.get_admin_context(read_deleted='yes'),
-            instance['instance_type_id'])
-        extra_specs = inst_type['extra_specs'].copy()
+        if samehost:
+            instance.system_metadata['resize_samehost'] = samehost
+
+        extra_specs = self._get_extra_specs(instance)
         brand = extra_specs.get('zonecfg:brand', ZONE_BRAND_SOLARIS)
         if brand != ZONE_BRAND_SOLARIS_KZ and not samehost:
             reason = (_("'%s' branded zones do not currently support resize "
@@ -2356,7 +2350,7 @@
             raise exception.MigrationPreCheckError(reason=reason)
 
         orgb = instance['root_gb']
-        nrgb = int(instance.system_metadata['new_instance_type_root_gb'])
+        nrgb = flavor.root_gb
         if orgb > nrgb:
             msg = (_("Unable to resize to a smaller boot volume."))
             raise exception.ResizeError(reason=msg)
@@ -2451,6 +2445,7 @@
                 'image_state': 'available',
                 'owner_id': instance['project_id'],
                 'instance_uuid': instance['uuid'],
+                'image_type': snapshot['properties']['image_type'],
             }
         }
         # Match architecture, hypervisor_type and vm_mode properties to base
@@ -2461,7 +2456,7 @@
                 metadata['properties'][prop] = base_prop
 
         # Set generic container and disk formats initially in case the glance
-        # service rejects unified archives (uar) and zfs in metadata
+        # service rejects Unified Archives (uar) and ZFS in metadata.
         metadata['container_format'] = 'ovf'
         metadata['disk_format'] = 'raw'
 
@@ -2580,10 +2575,7 @@
         if samehost:
             instance.system_metadata['old_vm_state'] = vm_states.RESIZED
 
-        inst_type = flavor_obj.Flavor.get_by_id(
-            nova_context.get_admin_context(read_deleted='yes'),
-            instance['instance_type_id'])
-        extra_specs = inst_type['extra_specs'].copy()
+        extra_specs = self._get_extra_specs(instance)
         brand = extra_specs.get('zonecfg:brand', ZONE_BRAND_SOLARIS)
         name = instance['name']
 
@@ -2598,18 +2590,15 @@
 
         try:
             if samehost:
-                metadstr = 'new_instance_type_vcpus'
-                cpu = int(instance.system_metadata[metadstr])
-                metadstr = 'new_instance_type_memory_mb'
-                mem = int(instance.system_metadata[metadstr])
+                cpu = instance.vcpus
+                mem = instance.memory_mb
                 self._set_num_cpu(name, cpu, brand)
                 self._set_memory_cap(name, mem, brand)
 
                 # Add the new disk to the volume if the size of the disk
                 # changed
                 if disk_info:
-                    metadstr = 'new_instance_type_root_gb'
-                    rgb = int(instance.system_metadata[metadstr])
+                    rgb = instance.root_gb
                     self._resize_disk_migration(context, instance,
                                                 root_ci['serial'],
                                                 disk_info['id'],
@@ -2688,6 +2677,8 @@
 
         if not samehost:
             self.destroy(context, instance, network_info)
+        else:
+            del instance.system_metadata['resize_samehost']
 
     def _resize_disk_migration(self, context, instance, configured,
                                replacement, newvolumesz, mountdev,
@@ -2764,8 +2755,14 @@
                          otherwise
         """
         # If this is not a samehost migration then we need to re-attach the
-        # original volume to the instance.  If this was processed in the
-        # initial revert handling this work has already been done.
+        # original volume to the instance. Otherwise we need to update the
+        # original zone configuration.
+        samehost = instance.system_metadata.get('resize_samehost')
+        if samehost:
+            self._samehost_revert_resize(context, instance, network_info,
+                                         block_device_info)
+            del instance.system_metadata['resize_samehost']
+
         old_rvid = instance.system_metadata.get('old_instance_volid')
         if old_rvid:
             connector = self.get_volume_connector(instance)
@@ -2813,12 +2810,12 @@
         # TODO(Vek): Need to pass context in for access to auth_token
         raise NotImplementedError()
 
-    def suspend(self, instance):
+    def suspend(self, context, instance):
         """suspend the specified instance.
 
+        :param context: the context for the suspend
         :param instance: nova.objects.instance.Instance
         """
-        # TODO(Vek): Need to pass context in for access to auth_token
         name = instance['name']
         zone = self._get_zone_by_name(name)
         if zone is None:
@@ -3216,7 +3213,7 @@
         back to the source host to check the results.
 
         :param context: security context
-        :param instance: nova.db.sqlalchemy.models.Instance
+        :param instance: nova.objects.instance.Instance object
         """
         raise NotImplementedError()
 
@@ -3306,7 +3303,7 @@
                 raise exception.MigrationPreCheckError(reason=reason)
 
     def check_can_live_migrate_source(self, context, instance,
-                                      dest_check_data, block_device_info):
+                                      dest_check_data, block_device_info=None):
         """Check if it is possible to execute live migration.
 
         This checks if the live migration can succeed, based on the
@@ -3328,12 +3325,11 @@
             raise exception.MigrationPreCheckError(reason=reason)
         return dest_check_data
 
-    def get_instance_disk_info(self, instance_name,
+    def get_instance_disk_info(self, instance,
                                block_device_info=None):
         """Retrieve information about actual disk sizes of an instance.
 
-        :param instance_name:
-            name of a nova instance as returned by list_instances()
+        :param instance: nova.objects.Instance
         :param block_device_info:
             Optional; Can be used to filter out devices which are
             actually volumes.
@@ -3474,7 +3470,7 @@
         """Set the root password on the specified instance.
 
         :param instance: nova.objects.instance.Instance
-        :param new_password: the new password
+        :param new_pass: the new password
         """
         name = instance['name']
         zone = self._get_zone_by_name(name)
@@ -3483,8 +3479,8 @@
 
         if zone.state == ZONE_STATE_RUNNING:
             out, err = utils.execute('/usr/sbin/zlogin', '-S', name,
-                                     '/usr/bin/passwd', '-p', "'%s'" %
-                                     sha256_crypt.encrypt(new_pass))
+                                     '/usr/bin/passwd', '-p',
+                                     "'%s'" % sha256_crypt.encrypt(new_pass))
         else:
             raise exception.InstanceNotRunning(instance_id=name)
 
@@ -3532,7 +3528,7 @@
         # TODO(Vek): Need to pass context in for access to auth_token
         raise NotImplementedError()
 
-    def host_power_action(self, host, action):
+    def host_power_action(self, action):
         """Reboots, shuts down or powers up the host."""
         raise NotImplementedError()
 
@@ -3542,12 +3538,12 @@
         """
         raise NotImplementedError()
 
-    def set_host_enabled(self, host, enabled):
+    def set_host_enabled(self, enabled):
         """Sets the specified host's ability to accept new instances."""
         # TODO(Vek): Need to pass context in for access to auth_token
         raise NotImplementedError()
 
-    def get_host_uptime(self, host):
+    def get_host_uptime(self):
         """Returns the result of calling "uptime" on the target host."""
         # TODO(Vek): Need to pass context in for access to auth_token
         return utils.execute('/usr/bin/uptime')[0]
@@ -3567,23 +3563,6 @@
         """
         raise NotImplementedError()
 
-    def get_host_stats(self, refresh=False):
-        """Return currently known host stats.
-
-        If the hypervisor supports pci passthrough, the returned
-        dictionary includes a key-value pair for it.
-        The key of pci passthrough device is "pci_passthrough_devices"
-        and the value is a json string for the list of assignable
-        pci devices. Each device is a dictionary, with mandatory
-        keys of 'address', 'vendor_id', 'product_id', 'dev_type',
-        'dev_id', 'label' and other optional device specific information.
-
-        Refer to the objects/pci_device.py for more idea of these keys.
-        """
-        if refresh or not self._host_stats:
-            self._update_host_stats()
-        return self._host_stats
-
     def get_host_cpu_stats(self):
         """Get the currently known host CPU stats.
 
@@ -3606,9 +3585,9 @@
         """
         raise NotImplementedError()
 
-    def block_stats(self, instance_name, disk_id):
+    def block_stats(self, instance, disk_id):
         """Return performance counters associated with the given disk_id on the
-        given instance_name.  These are returned as [rd_req, rd_bytes, wr_req,
+        given instance.  These are returned as [rd_req, rd_bytes, wr_req,
         wr_bytes, errs], where rd indicates read, wr indicates write, req is
         the total number of I/O requests made, bytes is the total number of
         bytes transferred, and errs is the number of requests held up due to a
@@ -3625,25 +3604,6 @@
         """
         raise NotImplementedError()
 
-    def interface_stats(self, instance_name, iface_id):
-        """Return performance counters associated with the given iface_id
-        on the given instance_id.  These are returned as [rx_bytes, rx_packets,
-        rx_errs, rx_drop, tx_bytes, tx_packets, tx_errs, tx_drop], where rx
-        indicates receive, tx indicates transmit, bytes and packets indicate
-        the total number of bytes or packets transferred, and errs and dropped
-        is the total number of packets failed / dropped.
-
-        All counters are long integers.
-
-        This method is optional.  On some platforms (e.g. XenAPI) performance
-        statistics can be retrieved directly in aggregate form, without Nova
-        having to do the aggregation.  On those platforms, this method is
-        unused.
-
-        Note that this function takes an instance ID.
-        """
-        raise NotImplementedError()
-
     def deallocate_networks_on_reschedule(self, instance):
         """Does the driver want networks deallocated on reschedule?"""
         return False
@@ -3701,7 +3661,7 @@
              |    ]
 
         """
-        pass
+        return None
 
     def manage_image_cache(self, context, all_instances):
         """Manage the driver's local image cache.
@@ -3711,7 +3671,7 @@
         related to other calls into the driver. The prime example is to clean
         the cache and remove images which are no longer of interest.
 
-        :param instances: nova.objects.instance.InstanceList
+        :param all_instances: nova.objects.instance.InstanceList
         """
         pass
 
@@ -3784,7 +3744,9 @@
         by the service. Otherwise, this method should return
         [hypervisor_hostname].
         """
-        stats = self.get_host_stats(refresh=refresh)
+        if refresh or not self._host_stats:
+            self._update_host_stats()
+        stats = self._host_stats
         if not isinstance(stats, list):
             stats = [stats]
         return [s['hypervisor_hostname'] for s in stats]
@@ -3869,7 +3831,7 @@
             LOG.debug("Emitting event %s", str(event))
             self._compute_event_callback(event)
         except Exception as ex:
-            LOG.error(_("Exception dispatching event %(event)s: %(ex)s"),
+            LOG.error(_LE("Exception dispatching event %(event)s: %(ex)s"),
                       {'event': event, 'ex': ex})
 
     def delete_instance_files(self, instance):
@@ -3951,3 +3913,33 @@
         #                 type and implement this function at their
         #                 virt layer.
         return False
+
+    def quiesce(self, context, instance, image_meta):
+        """Quiesce the specified instance to prepare for snapshots.
+
+        If the specified instance doesn't support quiescing,
+        InstanceQuiesceNotSupported is raised. When it fails to quiesce by
+        other errors (e.g. agent timeout), NovaException is raised.
+
+        :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
+        """
+        raise NotImplementedError()
+
+    def unquiesce(self, context, instance, image_meta):
+        """Unquiesce the specified instance after snapshots.
+
+        If the specified instance doesn't support quiescing,
+        InstanceQuiesceNotSupported is raised. When it fails to quiesce by
+        other errors (e.g. agent timeout), NovaException is raised.
+
+        :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
+        """
+        raise NotImplementedError()
--- a/components/openstack/nova/nova.license	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/nova/nova.license	Fri Feb 05 17:54:17 2016 -0500
@@ -182,132 +182,138 @@
       defend, and hold each Contributor harmless for any liability
       incurred by, or claims asserted against, such Contributor by reason
       of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
+============================================================
 
-   Copyright [yyyy] [name of copyright owner]
-
-   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
+#    Copyright (c) 2010 Citrix Systems, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+#
 
-   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.
-
-Copyright (c) 2005, the Lawrence Journal-World
-All rights reserved.
 
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-   1. Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-
-   2. Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-
-   3. Neither the name of Django nor the names of its contributors may be
-      used to endorse or promote products derived from this software without
-      specific prior written permission.
+# Parts of this file are based upon xmlrpclib.py, the XML-RPC client
+# interface included in the Python distribution.
+#
+# Copyright (c) 1999-2002 by Secret Labs AB
+# Copyright (c) 1999-2002 by Fredrik Lundh
+#
+# By obtaining, using, and/or copying this software and/or its
+# associated documentation, you agree that you have read, understood,
+# and will comply with the following terms and conditions:
+#
+# Permission to use, copy, modify, and distribute this software and
+# its associated documentation for any purpose and without fee is
+# hereby granted, provided that the above copyright notice appears in
+# all copies, and that both that copyright notice and this permission
+# notice appear in supporting documentation, and that the name of
+# Secret Labs AB or the author not be used in advertising or publicity
+# pertaining to distribution of the software without specific, written
+# prior permission.
+#
+# SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
+# TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT-
+# ABILITY AND FITNESS.  IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR
+# BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
+# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+# OF THIS SOFTWARE.
+# --------------------------------------------------------------------
 
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------
-
-Copyright (c) 2006-2010 Mitch Garnaat http://garnaat.org/
-Copyright (c) 2010, Eucalyptus Systems, Inc.
-All rights reserved.
+# Copyright (c) 2011 X.commerce, a business unit of eBay Inc.
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
+# Copyright 2013 Red Hat, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
 
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish, dis-
-tribute, sublicense, and/or sell copies of the Software, and to permit
-persons to whom the Software is furnished to do so, subject to the fol-
-lowing conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
-ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.
-
---------------------------------------------------------------------------
-
-Copyright (c) 2006-2009 Mitch Garnaat http://garnaat.org/
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish, dis-
-tribute, sublicense, and/or sell copies of the Software, and to permit
-persons to whom the Software is furnished to do so, subject to the fol-
-lowing conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
-ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.
-http://code.google.com/p/boto
-
---------------------------------------------------------------------------
-
-Colorizer Code is borrowed from Twisted:
-Copyright (c) 2001-2010 Twisted Matrix Laboratories.
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+# Interactive shell based on Django:
+#
+# Copyright (c) 2005, the Lawrence Journal-World
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+#     1. Redistributions of source code must retain the above copyright notice,
+#        this list of conditions and the following disclaimer.
+#
+#     2. Redistributions in binary form must reproduce the above copyright
+#        notice, this list of conditions and the following disclaimer in the
+#        documentation and/or other materials provided with the distribution.
+#
+#     3. Neither the name of Django nor the names of its contributors may be
+#        used to endorse or promote products derived from this software without
+#        specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+--------------------------------------------------------------------
+# Copyright (c) 2013, Nebula, Inc.
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+#
+# Colorizer Code is borrowed from Twisted:
+# Copyright (c) 2001-2010 Twisted Matrix Laboratories.
+#
+#    Permission is hereby granted, free of charge, to any person obtaining
+#    a copy of this software and associated documentation files (the
+#    "Software"), to deal in the Software without restriction, including
+#    without limitation the rights to use, copy, modify, merge, publish,
+#    distribute, sublicense, and/or sell copies of the Software, and to
+#    permit persons to whom the Software is furnished to do so, subject to
+#    the following conditions:
+#
+#    The above copyright notice and this permission notice shall be
+#    included in all copies or substantial portions of the Software.
+#
+#    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+#    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+#    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+#    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+#    LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+#    OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+#    WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+============================================================
--- a/components/openstack/nova/nova.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/nova/nova.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -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="Juno $(COMPONENT_VERSION)"
+set name=pkg.human-version value="Kilo $(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 \
@@ -41,7 +41,8 @@
 set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
 set name=openstack.upgrade-id reboot-needed=true value=$(COMPONENT_BE_VERSION)
 set name=org.opensolaris.arc-caseid value=PSARC/2013/350 value=PSARC/2014/049 \
-    value=PSARC/2014/210 value=PSARC/2015/110
+    value=PSARC/2014/210 value=PSARC/2015/110 value=PSARC/2015/324 \
+    value=PSARC/2015/357 value=PSARC/2015/535
 set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
 dir  path=etc/nova owner=nova group=nova mode=0700
 #
@@ -130,6 +131,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/metadata/password.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/metadata/vendordata_json.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/api_version_request.py
 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
@@ -212,6 +214,7 @@
 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
@@ -237,29 +240,39 @@
 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
@@ -267,6 +280,7 @@
 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
@@ -275,12 +289,18 @@
 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
@@ -293,58 +313,62 @@
 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/schemas/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/atom-link.rng
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/atom.rng
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v1.1/addresses.rng
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v1.1/extension.rng
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v1.1/extensions.rng
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v1.1/flavor.rng
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v1.1/flavors.rng
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v1.1/flavors_index.rng
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v1.1/image.rng
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v1.1/images.rng
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v1.1/images_index.rng
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v1.1/limits.rng
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v1.1/metadata.rng
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v1.1/server.rng
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v1.1/servers.rng
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v1.1/servers_index.rng
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v1.1/version.rng
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/api/openstack/compute/schemas/v1.1/versions.rng
 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/extended_volumes.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/server_metadata.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/versions.py
@@ -356,9 +380,10 @@
 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/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/openstack/xmlutil.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
@@ -397,8 +422,7 @@
 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/baremetal_deploy_helper.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/cmd/baremetal_manage.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/cmd/baseproxy.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/cmd/cells.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/cmd/cert.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/cmd/compute.py
@@ -419,11 +443,12 @@
 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
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/build_results.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/cells_api.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/claims.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/fakevirtinstance.xml
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/cpumodel.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/flavors.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/hvtype.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/compute/hv_type.py
 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
@@ -455,13 +480,14 @@
 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.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
+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/rpcapi.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/context.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/crypto.py
@@ -471,6 +497,14 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/migration.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/api.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/api_migrations/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/api_migrations/migrate_repo/README
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/api_migrations/migrate_repo/__init__.py
+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/__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
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/manage.py
@@ -516,6 +550,32 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/252_add_instance_extra_table.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/253_add_pci_requests_to_instance_extra_table.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/254_add_request_id_in_pci_devices.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/255_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/256_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/257_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/258_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/259_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/260_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/261_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/262_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/263_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/264_placeholder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/265_remove_duplicated_index.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/266_add_instance_tags.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/267_instance_uuid_non_nullable.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/268_add_host_in_compute_node.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/269_add_numa_node_column.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/270_flavor_data_in_extra.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/271_sqlite_postgresql_indexes.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/272_add_keypair_type.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/273_sqlite_foreign_keys.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/274_update_instances_project_id_index.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/275_add_keypair_type.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/276_vcpu_model.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/db/sqlalchemy/migrate_repo/versions/277_add_fixed_ip_updated_index.py
+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/__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
@@ -540,6 +600,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/ipv6/api.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/ipv6/rfc2462.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/keymgr/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/keymgr/barbican.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/keymgr/conf_key_mgr.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/keymgr/key.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/keymgr/key_mgr.py
@@ -565,7 +626,6 @@
 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/nova_ipam_lib.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
@@ -579,6 +639,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/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
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/ec2.py
@@ -587,66 +648,60 @@
 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/hv_spec.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
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/instance_group.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/instance_info_cache.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/objects/instance_mapping.py
 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/migration.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/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/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/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/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/context.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/excutils.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/fixture/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/fixture/config.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/fixture/lockutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/fixture/logging.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/fixture/mockpatch.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/fixture/moxstubout.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/gettextutils.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/importutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/jsonutils.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/lockutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/log.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/base.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/network_utils.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/processutils.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
@@ -659,36 +714,30 @@
 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/strutils.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/timeutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/units.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/uuidutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/versionutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/openstack/common/xmlutils.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/pci_device.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/pci/pci_devspec.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/pci/pci_manager.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/pci/pci_request.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/pci/pci_stats.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/pci/pci_utils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/pci/pci_whitelist.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
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/pci/stats.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/pci/utils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nova/pci/whitelist.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/policy.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/quota.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/rdp/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/rpc.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/safe_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/scheduler/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/scheduler/baremetal_host_manager.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/scheduler/base_baremetal_host_manager.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/scheduler/caching_scheduler.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/scheduler/chance.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/scheduler/client/__init__.py
@@ -731,12 +780,14 @@
 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/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
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/service.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/servicegroup/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/servicegroup/api.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/servicegroup/drivers/__init__.py
+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
@@ -747,47 +798,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/version.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/baremetal_states.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/base.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/common.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/db/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/db/api.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/db/migration.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/db/sqlalchemy/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/db/sqlalchemy/api.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/db/sqlalchemy/migrate_repo/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/db/sqlalchemy/migrate_repo/migrate.cfg
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/001_init.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/002_drop_bm_deployments.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/003_add_uuid_to_bm_nodes.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/004_add_instance_name_to_bm_nodes.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/005_drop_unused_columns_from_nodes.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/006_move_prov_mac_address.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/007_drop_prov_mac_address.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/008_remove_bm_pxe_ips_table.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/009_add_ephemeral_mb_to_bm_nodes.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/010_add_preserve_ephemeral.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/db/sqlalchemy/migrate_repo/versions/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/db/sqlalchemy/migration.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/db/sqlalchemy/models.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/db/sqlalchemy/session.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/doc/README.rst
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/fake.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/iboot_pdu.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/ipmi.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/net-dhcp.ubuntu.template
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/net-static.ubuntu.template
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/pxe.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/pxe_config.template
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/tilera.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/tilera_pdu.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/utils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/vif_driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/virtual_power_driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/virtual_power_driver_settings.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/baremetal/volume_driver.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/block_device.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/configdrive.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/diagnostics.py
@@ -816,15 +826,20 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/ironic/patcher.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/nova/virt/libvirt/blockinfo.py
+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/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/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
@@ -837,7 +852,8 @@
 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/vnc/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/nova/vnc/xvp_proxy.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/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
@@ -874,10 +890,6 @@
 # force a group dependency on package delivering the optional xwininfo(1)
 depend type=group fmri=__TBD pkg.debug.depend.file=usr/bin/xwininfo
 
-# force a group dependency on the optional anyjson; pkgdepend work is needed to
-# flush this out.
-depend type=group fmri=library/python/anyjson-$(PYV)
-
 # force a group dependency on the optional python-ldap; pkgdepend work is needed
 # to flush this out.
 depend type=group fmri=library/python/python-ldap-$(PYV)
@@ -886,10 +898,6 @@
 # needed to flush this out.
 depend type=group fmri=library/python/python-memcached-$(PYV)
 
-# force a group dependency on the optional simplejson; pkgdepend work is needed
-# to flush this out.
-depend type=group fmri=library/python/simplejson-$(PYV)
-
 # force a group dependency on package delivering the optional solaris(5) brand
 depend type=group fmri=system/zones/brand/brand-solaris
 
@@ -897,6 +905,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
+
 # force a dependency on package delivering archiveadm(1M)
 depend type=require fmri=__TBD pkg.debug.depend.file=usr/sbin/archiveadm
 
@@ -919,8 +930,9 @@
 depend type=require fmri=__TBD \
     pkg.debug.depend.file=usr/share/novnc/vnc_auto.html
 
-# force a dependency on babel; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/babel-$(PYV)
+# force a dependency on barbicanclient; pkgdepend work is needed to flush this
+# out.
+depend type=require fmri=library/python/barbicanclient-$(PYV)
 
 # force a dependency on boto; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/boto-$(PYV)
@@ -948,6 +960,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 keystoneclient; pkgdepend work is needed to flush this
+# out.
+depend type=require fmri=library/python/keystoneclient-$(PYV)
+
 # force a dependency on keystonemiddleware; used via a paste.deploy filter
 depend type=require fmri=library/python/keystonemiddleware-$(PYV)
 
@@ -957,20 +973,38 @@
 # force a dependency on netaddr; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/netaddr-$(PYV)
 
+# force a dependency on netifaces; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/netifaces-$(PYV)
+
 # force a dependency on neutronclient; pkgdepend work is needed to flush this
 # out.
 depend type=require fmri=library/python/neutronclient-$(PYV)
 
+# force a dependency on oslo.concurrency; pkgdepend work is needed to flush this
+# out.
+depend type=require fmri=library/python/oslo.concurrency-$(PYV)
+
+# force a dependency on oslo.context; pkgdepend work is needed to flush this
+# out.
+depend type=require fmri=library/python/oslo.context-$(PYV)
+
 # force a dependency on oslo.db; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/oslo.db-$(PYV)
 
 # 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.utils; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/oslo.utils-$(PYV)
 
@@ -987,12 +1021,21 @@
 # force a dependency on pbr; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/pbr-$(PYV)
 
+# 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)
 
@@ -1023,7 +1066,7 @@
 depend type=require fmri=system/management/rad/client/rad-python
 
 # force a dependency on rad-archivemgr
-depend type=require fmri=system/management/rad/module/rad-archivemgr
+#depend type=require fmri=system/management/rad/module/rad-archivemgr
 
 # force a dependency on rad-kstat
 depend type=require fmri=system/management/rad/module/rad-kstat
--- a/components/openstack/nova/patches/01-Solaris-vm_mode.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/nova/patches/01-Solaris-vm_mode.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -2,9 +2,9 @@
 ImagePropertiesFilter scheduling filter.  This patch has not yet been
 submitted upstream.
 
---- nova-2014.2.2/nova/compute/vm_mode.py.orig	Thu Oct 17 11:25:43 2013
-+++ nova-2014.2.2/nova/compute/vm_mode.py	Tue Mar  4 23:59:38 2014
-@@ -31,8 +31,9 @@
+--- nova-2015.1.2/nova/compute/vm_mode.py.~1~	2015-10-13 07:52:35.000000000 -0700
++++ nova-2015.1.2/nova/compute/vm_mode.py	2015-12-31 20:11:22.020900882 -0800
+@@ -31,8 +31,9 @@ HVM = "hvm"  # Native ABI (aka fully vir
  XEN = "xen"  # Xen 3.0 paravirtualized
  UML = "uml"  # User Mode Linux paravirtualized
  EXE = "exe"  # Executables in containers
--- a/components/openstack/nova/patches/02-requirements.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/nova/patches/02-requirements.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,99 +1,59 @@
 In-house patch to remove unnecessary dependencies from Nova's
 requirements files. The specific reasons are as follows:
 
-keystoneclient	Not applicable
-
-kombu		Not applicable
+babel			Not applicable
 
-lockfile	Not applicable
-
-oslo.rootwrap	Not applicable to Solaris
+oslo.rootwrap		Not applicable to Solaris
 
-oslo.vmware	Not applicable to Solaris (VMware specific)
-
-paramiko	Not applicable to Solaris
+paramiko		Not applicable
 
-posix_ipc	Not applicable
-
-pycadf		Not applicable
-
-suds		Not applicable to Solaris (VMware specific)
+python-cinderclient	Upgrade to version 1.3.1
 
---- nova-2014.2.2/nova.egg-info/requires.txt.~1~	2015-02-05 06:33:48.000000000 -0800
-+++ nova-2014.2.2/nova.egg-info/requires.txt	2015-02-25 00:59:17.326168445 -0800
-@@ -7,7 +7,6 @@ decorator>=3.4.0
- eventlet>=0.15.1,<0.16.0
- Jinja2
- keystonemiddleware>=1.0.0
--kombu>=2.5.0
- lxml>=2.3
- Routes>=1.12.3,!=2.0
- WebOb>=1.2.3
-@@ -16,9 +15,6 @@ PasteDeploy>=1.5.0
+--- 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.1
+ sqlalchemy-migrate!=0.9.8,<0.10.0,>=0.9.5
  netaddr>=0.7.12
--suds>=0.4
 -paramiko>=1.13.0
--posix_ipc
  pyasn1
- Babel>=1.3
+-Babel>=1.3
  iso8601>=0.1.9
-@@ -26,18 +22,13 @@ jsonschema>=2.0.0,<3.0.0
- python-cinderclient>=1.1.0
- python-neutronclient>=2.3.6,<3
- python-glanceclient>=0.14.0
--python-keystoneclient>=0.10.0
- six>=1.7.0
- stevedore>=1.0.0  # Apache-2.0
- websockify>=0.6.0,<0.7
- wsgiref>=0.1.2
- oslo.config>=1.4.0  # Apache-2.0
- oslo.db>=1.0.0,<1.1  # Apache-2.0
--oslo.rootwrap>=1.3.0
--pycadf>=0.6.0
- oslo.messaging>=1.4.0,!=1.5.0,<1.6.0
- oslo.i18n>=1.0.0  # Apache-2.0
--lockfile>=0.8
- simplejson>=2.2.0
- rfc3986>=0.2.0  # Apache-2.0
--oslo.vmware>=0.6.0,<0.9.0               # Apache-2.0
---- nova-2014.2.2/requirements.txt.~1~	2015-02-05 06:26:51.000000000 -0800
-+++ nova-2014.2.2/requirements.txt	2015-02-25 00:59:59.286958886 -0800
-@@ -11,7 +11,6 @@ decorator>=3.4.0
- eventlet>=0.15.1,<0.16.0
- Jinja2
- keystonemiddleware>=1.0.0
--kombu>=2.5.0
- lxml>=2.3
- Routes>=1.12.3,!=2.0
- WebOb>=1.2.3
-@@ -20,9 +19,6 @@ PasteDeploy>=1.5.0
+ 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.1
+ sqlalchemy-migrate!=0.9.8,<0.10.0,>=0.9.5
  netaddr>=0.7.12
--suds>=0.4
 -paramiko>=1.13.0
--posix_ipc
  pyasn1
- Babel>=1.3
+-Babel>=1.3
  iso8601>=0.1.9
-@@ -30,18 +26,13 @@ jsonschema>=2.0.0,<3.0.0
- python-cinderclient>=1.1.0
- python-neutronclient>=2.3.6,<3
- python-glanceclient>=0.14.0
--python-keystoneclient>=0.10.0
- six>=1.7.0
- stevedore>=1.0.0  # Apache-2.0
- websockify>=0.6.0,<0.7
- wsgiref>=0.1.2
- oslo.config>=1.4.0  # Apache-2.0
- oslo.db>=1.0.0,<1.1  # Apache-2.0
--oslo.rootwrap>=1.3.0
--pycadf>=0.6.0
- oslo.messaging>=1.4.0,!=1.5.0,<1.6.0
- oslo.i18n>=1.0.0  # Apache-2.0
--lockfile>=0.8
- simplejson>=2.2.0
- rfc3986>=0.2.0  # Apache-2.0
--oslo.vmware>=0.6.0,<0.9.0               # Apache-2.0
+ 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
--- a/components/openstack/nova/patches/03-Solaris-flavors.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/nova/patches/03-Solaris-flavors.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -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-2014.2.2/nova/db/sqlalchemy/migrate_repo/versions/216_havana.py.~1~	2015-02-05 06:26:50.000000000 -0800
-+++ nova-2014.2.2/nova/db/sqlalchemy/migrate_repo/versions/216_havana.py	2015-06-29 21:33:10.982774488 -0700
+--- 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
 @@ -85,17 +85,45 @@ def _create_shadow_tables(migrate_engine
              raise
  
@@ -65,7 +65,7 @@
 +            index += 1
      except Exception:
          LOG.info(repr(instance_types_table))
-         LOG.exception(_('Exception while seeding instance_types table'))
+         LOG.exception(_LE('Exception while seeding instance_types table'))
 @@ -1548,7 +1580,7 @@ def upgrade(migrate_engine):
      _create_shadow_tables(migrate_engine)
  
--- a/components/openstack/nova/patches/04-compute-hvtype.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/nova/patches/04-compute-hvtype.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,8 +1,9 @@
 In-house patch to add the 'solariszones' hypervisor to Nova's list of
 known hypervisors.  This patch has not yet been submitted upstream.
---- nova-2014.2.2/nova/compute/hvtype.py.orig	2014-11-13 11:47:50.409917449 -0700
-+++ nova-2014.2.2/nova/compute/hvtype.py	2014-11-13 11:48:11.032908030 -0700
-@@ -38,6 +38,7 @@ OPENVZ = "openvz"
+
+--- 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	2015-12-31 19:56:40.193951927 -0800
+@@ -40,6 +40,7 @@ OPENVZ = "openvz"
  PARALLELS = "parallels"
  PHYP = "phyp"
  QEMU = "qemu"
@@ -10,7 +11,7 @@
  TEST = "test"
  UML = "uml"
  VBOX = "vbox"
-@@ -56,6 +57,7 @@ ALL = (
+@@ -61,6 +62,7 @@ ALL = (
      PARALLELS,
      PHYP,
      QEMU,
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/nova/patches/05-force-driver-snapshot.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,19 @@
+In-house patch to force Nova to always use our driver's snapshot
+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):
+                     context, instance.uuid)
+
+         try:
+-            if self.compute_api.is_volume_backed_instance(context, instance,
+-                                                          bdms):
++            hypervisor = instance.system_metadata['image_hypervisor_type']
++            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(
--- a/components/openstack/nova/patches/05-launchpad-1391782.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-This upstream patch addresses Launchpad bug 1391782. Although it's been
-addressed in Kilo, the patch below is still not yet released for Juno.
-
-commit 6859dd61a8472e0cf8f9f4d30f1da7312dc0385d
-Author: Joe Gordon <[email protected]>
-Date:   Fri Nov 14 12:57:35 2014 -0800
-
-    Use oslo db concurrency to generate nova.conf.sample
-    
-    Make sure we include database and concurrency options in the
-    sample config file.
-    
-    Change-Id: I66e68ec120cba2cee86e36aa26720199876c40a4
-    Closes-Bug: #1391782
-
-diff --git a/tools/config/oslo.config.generator.rc b/tools/config/oslo.config.generator.rc
-index b6ed64e..afcad61 100644
---- a/tools/config/oslo.config.generator.rc
-+++ b/tools/config/oslo.config.generator.rc
-@@ -1,2 +1,2 @@
--NOVA_CONFIG_GENERATOR_EXTRA_LIBRARIES=oslo.messaging
-+NOVA_CONFIG_GENERATOR_EXTRA_LIBRARIES="oslo.messaging oslo.db oslo.concurrency"
- NOVA_CONFIG_GENERATOR_EXTRA_MODULES=keystonemiddleware.auth_token
--- a/components/openstack/nova/patches/06-Solaris-dev-name.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/nova/patches/06-Solaris-dev-name.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,9 +1,9 @@
-The patch is to fix the issue of linuxy devices names on Solaris instance recorded
-in the bugs (19987962 and 19277019).
+The patch is to fix the issue of linuxy devices names on Solaris
+instance recorded in the bugs (19987962 and 19277019).
 
---- nova-2014.2.2/nova/compute/utils.py.~1~	2015-02-05 06:26:50.000000000 -0800
-+++ nova-2014.2.2/nova/compute/utils.py	2015-02-09 10:13:15.882810433 -0800
-@@ -148,6 +148,23 @@
+--- 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
      name will be converted to the appropriate format.
      """
@@ -24,6 +24,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
- 
--- a/components/openstack/nova/patches/07-CVE-2015-0259.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,336 +0,0 @@
-Upstream patch to address CVE-2015-0259.  This fix will be included in
-the future 2014.2.3 (juno) release.
-
-From 676ba7bbc788a528b0fe4c87c1c4bf94b4bb6eb1 Mon Sep 17 00:00:00 2001
-From: Dave McCowan <[email protected]>
-Date: Tue, 24 Feb 2015 21:35:48 -0500
-Subject: [PATCH] Websocket Proxy should verify Origin header
-
-If the Origin HTTP header passed in the WebSocket handshake does
-not match the host, this could indicate an attempt at a
-cross-site attack.  This commit adds a check to verify
-the origin matches the host.
-
-Change-Id: Ica6ec23d6f69a236657d5ba0c3f51b693c633649
-Closes-Bug: 1409142
----
- nova/console/websocketproxy.py            |   45 +++++++
- nova/tests/console/test_websocketproxy.py |  185 ++++++++++++++++++++++++++++-
- 2 files changed, 226 insertions(+), 4 deletions(-)
-
-diff --git a/nova/console/websocketproxy.py b/nova/console/websocketproxy.py
-index ef684f5..7a1e056 100644
---- a/nova/console/websocketproxy.py
-+++ b/nova/console/websocketproxy.py
-@@ -22,17 +22,40 @@ import Cookie
- import socket
- import urlparse
- 
-+from oslo.config import cfg
- import websockify
- 
- from nova.consoleauth import rpcapi as consoleauth_rpcapi
- from nova import context
-+from nova import exception
- from nova.i18n import _
- from nova.openstack.common import log as logging
- 
- LOG = logging.getLogger(__name__)
- 
-+CONF = cfg.CONF
-+CONF.import_opt('novncproxy_base_url', 'nova.vnc')
-+CONF.import_opt('html5proxy_base_url', 'nova.spice', group='spice')
-+CONF.import_opt('base_url', 'nova.console.serial', group='serial_console')
-+
- 
- class NovaProxyRequestHandlerBase(object):
-+    def verify_origin_proto(self, console_type, origin_proto):
-+        if console_type == 'novnc':
-+            expected_proto = \
-+                urlparse.urlparse(CONF.novncproxy_base_url).scheme
-+        elif console_type == 'spice-html5':
-+            expected_proto = \
-+                urlparse.urlparse(CONF.spice.html5proxy_base_url).scheme
-+        elif console_type == 'serial':
-+            expected_proto = \
-+                urlparse.urlparse(CONF.serial_console.base_url).scheme
-+        else:
-+            detail = _("Invalid Console Type for WebSocketProxy: '%s'") % \
-+                        console_type
-+            raise exception.ValidationError(detail=detail)
-+        return origin_proto == expected_proto
-+
-     def new_websocket_client(self):
-         """Called after a new WebSocket connection has been established."""
-         # Reopen the eventlet hub to make sure we don't share an epoll
-@@ -62,6 +85,28 @@ class NovaProxyRequestHandlerBase(object):
-         if not connect_info:
-             raise Exception(_("Invalid Token"))
- 
-+        # Verify Origin
-+        expected_origin_hostname = self.headers.getheader('Host')
-+        if ':' in expected_origin_hostname:
-+            e = expected_origin_hostname
-+            expected_origin_hostname = e.split(':')[0]
-+        origin_url = self.headers.getheader('Origin')
-+        # missing origin header indicates non-browser client which is OK
-+        if origin_url is not None:
-+            origin = urlparse.urlparse(origin_url)
-+            origin_hostname = origin.hostname
-+            origin_scheme = origin.scheme
-+            if origin_hostname == '' or origin_scheme == '':
-+                detail = _("Origin header not valid.")
-+                raise exception.ValidationError(detail=detail)
-+            if expected_origin_hostname != origin_hostname:
-+                detail = _("Origin header does not match this host.")
-+                raise exception.ValidationError(detail=detail)
-+            if not self.verify_origin_proto(connect_info['console_type'],
-+                                              origin.scheme):
-+                detail = _("Origin header protocol does not match this host.")
-+                raise exception.ValidationError(detail=detail)
-+
-         self.msg(_('connect info: %s'), str(connect_info))
-         host = connect_info['host']
-         port = int(connect_info['port'])
-diff --git a/nova/tests/console/test_websocketproxy.py b/nova/tests/console/test_websocketproxy.py
-index 1e51a4d..66913c2 100644
---- a/nova/tests/console/test_websocketproxy.py
-+++ b/nova/tests/console/test_websocketproxy.py
-@@ -16,10 +16,14 @@
- 
- 
- import mock
-+from oslo.config import cfg
- 
- from nova.console import websocketproxy
-+from nova import exception
- from nova import test
- 
-+CONF = cfg.CONF
-+
- 
- class NovaProxyRequestHandlerBaseTestCase(test.TestCase):
- 
-@@ -31,15 +35,82 @@ class NovaProxyRequestHandlerBaseTestCase(test.TestCase):
-         self.wh.msg = mock.MagicMock()
-         self.wh.do_proxy = mock.MagicMock()
-         self.wh.headers = mock.MagicMock()
-+        CONF.set_override('novncproxy_base_url',
-+                          'https://example.net:6080/vnc_auto.html')
-+        CONF.set_override('html5proxy_base_url',
-+                          'https://example.net:6080/vnc_auto.html',
-+                          'spice')
-+
-+    def _fake_getheader(self, header):
-+        if header == 'cookie':
-+            return 'token="123-456-789"'
-+        elif header == 'Origin':
-+            return 'https://example.net:6080'
-+        elif header == 'Host':
-+            return 'example.net:6080'
-+        else:
-+            return
-+
-+    def _fake_getheader_bad_token(self, header):
-+        if header == 'cookie':
-+            return 'token="XXX"'
-+        elif header == 'Origin':
-+            return 'https://example.net:6080'
-+        elif header == 'Host':
-+            return 'example.net:6080'
-+        else:
-+            return
-+
-+    def _fake_getheader_bad_origin(self, header):
-+        if header == 'cookie':
-+            return 'token="123-456-789"'
-+        elif header == 'Origin':
-+            return 'https://bad-origin-example.net:6080'
-+        elif header == 'Host':
-+            return 'example.net:6080'
-+        else:
-+            return
-+
-+    def _fake_getheader_blank_origin(self, header):
-+        if header == 'cookie':
-+            return 'token="123-456-789"'
-+        elif header == 'Origin':
-+            return ''
-+        elif header == 'Host':
-+            return 'example.net:6080'
-+        else:
-+            return
-+
-+    def _fake_getheader_no_origin(self, header):
-+        if header == 'cookie':
-+            return 'token="123-456-789"'
-+        elif header == 'Origin':
-+            return None
-+        elif header == 'Host':
-+            return 'any-example.net:6080'
-+        else:
-+            return
-+
-+    def _fake_getheader_http(self, header):
-+        if header == 'cookie':
-+            return 'token="123-456-789"'
-+        elif header == 'Origin':
-+            return 'http://example.net:6080'
-+        elif header == 'Host':
-+            return 'example.net:6080'
-+        else:
-+            return
- 
-     @mock.patch('nova.consoleauth.rpcapi.ConsoleAuthAPI.check_token')
-     def test_new_websocket_client(self, check_token):
-         check_token.return_value = {
-             'host': 'node1',
--            'port': '10000'
-+            'port': '10000',
-+            'console_type': 'novnc'
-         }
-         self.wh.socket.return_value = '<socket>'
-         self.wh.path = "ws://127.0.0.1/?token=123-456-789"
-+        self.wh.headers.getheader = self._fake_getheader
- 
-         self.wh.new_websocket_client()
- 
-@@ -52,6 +123,7 @@ class NovaProxyRequestHandlerBaseTestCase(test.TestCase):
-         check_token.return_value = False
- 
-         self.wh.path = "ws://127.0.0.1/?token=XXX"
-+        self.wh.headers.getheader = self._fake_getheader
- 
-         self.assertRaises(Exception, self.wh.new_websocket_client)  # noqa
-         check_token.assert_called_with(mock.ANY, token="XXX")
-@@ -60,11 +132,12 @@ class NovaProxyRequestHandlerBaseTestCase(test.TestCase):
-     def test_new_websocket_client_novnc(self, check_token):
-         check_token.return_value = {
-             'host': 'node1',
--            'port': '10000'
-+            'port': '10000',
-+            'console_type': 'novnc'
-         }
-         self.wh.socket.return_value = '<socket>'
-         self.wh.path = "http://127.0.0.1/"
--        self.wh.headers.getheader.return_value = "token=123-456-789"
-+        self.wh.headers.getheader = self._fake_getheader
- 
-         self.wh.new_websocket_client()
- 
-@@ -77,7 +150,111 @@ class NovaProxyRequestHandlerBaseTestCase(test.TestCase):
-         check_token.return_value = False
- 
-         self.wh.path = "http://127.0.0.1/"
--        self.wh.headers.getheader.return_value = "token=XXX"
-+        self.wh.headers.getheader = self._fake_getheader_bad_token
- 
-         self.assertRaises(Exception, self.wh.new_websocket_client)  # noqa
-         check_token.assert_called_with(mock.ANY, token="XXX")
-+
-+    @mock.patch('nova.consoleauth.rpcapi.ConsoleAuthAPI.check_token')
-+    def test_new_websocket_client_novnc_bad_origin_header(self, check_token):
-+        check_token.return_value = {
-+            'host': 'node1',
-+            'port': '10000',
-+            'console_type': 'novnc'
-+        }
-+
-+        self.wh.path = "http://127.0.0.1/"
-+        self.wh.headers.getheader = self._fake_getheader_bad_origin
-+
-+        self.assertRaises(exception.ValidationError,
-+                          self.wh.new_websocket_client)
-+
-+    @mock.patch('nova.consoleauth.rpcapi.ConsoleAuthAPI.check_token')
-+    def test_new_websocket_client_novnc_blank_origin_header(self, check_token):
-+        check_token.return_value = {
-+            'host': 'node1',
-+            'port': '10000',
-+            'console_type': 'novnc'
-+        }
-+
-+        self.wh.path = "http://127.0.0.1/"
-+        self.wh.headers.getheader = self._fake_getheader_blank_origin
-+
-+        self.assertRaises(exception.ValidationError,
-+                          self.wh.new_websocket_client)
-+
-+    @mock.patch('nova.consoleauth.rpcapi.ConsoleAuthAPI.check_token')
-+    def test_new_websocket_client_novnc_no_origin_header(self, check_token):
-+        check_token.return_value = {
-+            'host': 'node1',
-+            'port': '10000',
-+            'console_type': 'novnc'
-+        }
-+        self.wh.socket.return_value = '<socket>'
-+        self.wh.path = "http://127.0.0.1/"
-+        self.wh.headers.getheader = self._fake_getheader_no_origin
-+
-+        self.wh.new_websocket_client()
-+
-+        check_token.assert_called_with(mock.ANY, token="123-456-789")
-+        self.wh.socket.assert_called_with('node1', 10000, connect=True)
-+        self.wh.do_proxy.assert_called_with('<socket>')
-+
-+    @mock.patch('nova.consoleauth.rpcapi.ConsoleAuthAPI.check_token')
-+    def test_new_websocket_client_novnc_bad_origin_proto_vnc(self,
-+                                                             check_token):
-+        check_token.return_value = {
-+            'host': 'node1',
-+            'port': '10000',
-+            'console_type': 'novnc'
-+        }
-+
-+        self.wh.path = "http://127.0.0.1/"
-+        self.wh.headers.getheader = self._fake_getheader_http
-+
-+        self.assertRaises(exception.ValidationError,
-+                          self.wh.new_websocket_client)
-+
-+    @mock.patch('nova.consoleauth.rpcapi.ConsoleAuthAPI.check_token')
-+    def test_new_websocket_client_novnc_bad_origin_proto_spice(self,
-+                                                               check_token):
-+        check_token.return_value = {
-+            'host': 'node1',
-+            'port': '10000',
-+            'console_type': 'spice-html5'
-+        }
-+
-+        self.wh.path = "http://127.0.0.1/"
-+        self.wh.headers.getheader = self._fake_getheader_http
-+
-+        self.assertRaises(exception.ValidationError,
-+                          self.wh.new_websocket_client)
-+
-+    @mock.patch('nova.consoleauth.rpcapi.ConsoleAuthAPI.check_token')
-+    def test_new_websocket_client_novnc_bad_origin_proto_serial(self,
-+                                                                check_token):
-+        check_token.return_value = {
-+            'host': 'node1',
-+            'port': '10000',
-+            'console_type': 'serial'
-+        }
-+
-+        self.wh.path = "http://127.0.0.1/"
-+        self.wh.headers.getheader = self._fake_getheader_http
-+
-+        self.assertRaises(exception.ValidationError,
-+                          self.wh.new_websocket_client)
-+
-+    @mock.patch('nova.consoleauth.rpcapi.ConsoleAuthAPI.check_token')
-+    def test_new_websocket_client_novnc_bad_console_type(self, check_token):
-+        check_token.return_value = {
-+            'host': 'node1',
-+            'port': '10000',
-+            'console_type': 'bad-console-type'
-+        }
-+
-+        self.wh.path = "http://127.0.0.1/"
-+        self.wh.headers.getheader = self._fake_getheader
-+
-+        self.assertRaises(exception.ValidationError,
-+                          self.wh.new_websocket_client)
--- 
-1.7.9.5
-
--- a/components/openstack/nova/patches/08-confirm_migration_context.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/nova/patches/08-confirm_migration_context.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,9 +1,9 @@
 In-house patch to fix a long standing "TODO" for adding the context
 argument to the confirm_migration() function.
 
---- ./nova/virt/driver.py.~1~	2015-07-06 14:54:33.047120275 -0700
-+++ ./nova/virt/driver.py	2015-07-06 14:54:38.753366130 -0700
-@@ -532,7 +532,7 @@ class ComputeDriver(object):
+--- ./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):
          """
          raise NotImplementedError()
  
@@ -12,9 +12,9 @@
          """Confirms a resize, destroying the source VM.
  
          :param instance: nova.objects.instance.Instance
---- ./nova/virt/hyperv/driver.py.~1~	2015-07-06 14:54:08.762060896 -0700
-+++ ./nova/virt/hyperv/driver.py	2015-07-06 14:54:15.312335765 -0700
-@@ -205,7 +205,7 @@ class HyperVDriver(driver.ComputeDriver)
+--- ./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)
                                                               timeout,
                                                               retry_interval)
  
@@ -23,9 +23,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-07-06 14:54:01.054149365 -0700
-+++ ./nova/virt/hyperv/migrationops.py	2015-07-06 14:54:07.641370995 -0700
-@@ -134,7 +134,7 @@ class MigrationOps(object):
+--- ./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):
          # disk_info is not used
          return ""
  
@@ -33,32 +33,32 @@
 +    def confirm_migration(self, context, migration, instance, network_info):
          LOG.debug("confirm_migration called", instance=instance)
  
-         self._pathutils.get_instance_migr_revert_dir(instance['name'],
---- ./nova/virt/vmwareapi/driver.py.~1~	2015-07-06 14:54:25.357745275 -0700
-+++ ./nova/virt/vmwareapi/driver.py	2015-07-06 14:54:31.960294652 -0700
-@@ -240,7 +240,7 @@ class VMwareVCDriver(driver.ComputeDrive
-         return _vmops.migrate_disk_and_power_off(context, instance,
-                                                  dest, flavor)
+         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
+         return self._vmops.migrate_disk_and_power_off(context, instance,
+                                                       dest, flavor)
  
 -    def confirm_migration(self, migration, instance, network_info):
 +    def confirm_migration(self, context, migration, instance, network_info):
          """Confirms a resize, destroying the source VM."""
-         _vmops = self._get_vmops_for_compute_node(instance['node'])
-         _vmops.confirm_migration(migration, instance, network_info)
---- ./nova/virt/vmwareapi/vmops.py.~1~	2015-07-06 14:54:16.425639034 -0700
-+++ ./nova/virt/vmwareapi/vmops.py	2015-07-06 14:54:24.242155495 -0700
-@@ -1038,7 +1038,7 @@ class VMwareVMOps(object):
-                                        step=3,
+         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):
+                                        step=4,
                                         total_steps=RESIZE_TOTAL_STEPS)
  
 -    def confirm_migration(self, migration, instance, network_info):
 +    def confirm_migration(self, context, migration, instance, network_info):
          """Confirms a resize, destroying the source VM."""
-         # Destroy the original VM. The vm_ref needs to be searched using the
-         # instance.uuid + self._migrate_suffix as the identifier. We will
---- ./nova/virt/xenapi/driver.py.~1~	2015-07-06 14:54:39.888243081 -0700
-+++ ./nova/virt/xenapi/driver.py	2015-07-06 14:54:57.800183720 -0700
-@@ -203,9 +203,8 @@ class XenAPIDriver(driver.ComputeDriver)
+         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)
          self._vmops.spawn(context, instance, image_meta, injected_files,
                            admin_password, network_info, block_device_info)
  
@@ -69,8 +69,8 @@
          self._vmops.confirm_migration(migration, instance, network_info)
  
      def finish_revert_migration(self, context, instance, network_info,
---- ./nova/virt/xenapi/vmops.py.~1~	2015-07-06 14:54:59.066221974 -0700
-+++ ./nova/virt/xenapi/vmops.py	2015-07-06 14:55:06.185514152 -0700
+--- ./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_uuids.append(nova_uuid)
          return nova_uuids
@@ -80,9 +80,9 @@
          self._destroy_orig_vm(instance, network_info)
  
      def _destroy_orig_vm(self, instance, network_info):
---- ./nova/virt/fake.py.~1~	2015-07-06 14:53:48.635021003 -0700
-+++ ./nova/virt/fake.py	2015-07-06 14:53:59.952265943 -0700
-@@ -434,7 +434,7 @@ class FakeDriver(driver.ComputeDriver):
+--- ./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
  
@@ -90,10 +90,10 @@
 +    def confirm_migration(self, context, migration, instance, network_info):
          return
  
-     def pre_live_migration(self, context, instance_ref, block_device_info,
---- ./nova/virt/libvirt/driver.py.~1~	2015-07-06 14:55:07.301721887 -0700
-+++ ./nova/virt/libvirt/driver.py	2015-07-06 14:55:13.513983532 -0700
-@@ -6095,7 +6095,7 @@ class LibvirtDriver(driver.ComputeDriver
+     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()
  
@@ -102,9 +102,9 @@
          """Confirms a resize, destroying the source VM."""
          self._cleanup_resize(instance, network_info)
  
---- ./nova/compute/manager.py.~1~	2015-07-06 14:56:34.328028956 -0700
-+++ ./nova/compute/manager.py	2015-07-06 14:56:48.919044192 -0700
-@@ -3431,7 +3431,7 @@ class ComputeManager(manager.Manager):
+--- ./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)
--- a/components/openstack/nova/patches/08-disable-sslv3.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-In-house patch to disable SSLv3 support. 
-(See also upstream bug #1395095)
-
---- nova-2014.2.2/nova/openstack/common/sslutils.py.orig	2015-08-13 21:05:03.502632113 -0400
-+++ nova-2014.2.2/nova/openstack/common/sslutils.py	2015-08-13 20:37:09.223554130 -0400
-@@ -77,8 +77,7 @@
- 
- _SSL_PROTOCOLS = {
-     "tlsv1": ssl.PROTOCOL_TLSv1,
--    "sslv23": ssl.PROTOCOL_SSLv23,
--    "sslv3": ssl.PROTOCOL_SSLv3
-+    "sslv23": ssl.PROTOCOL_SSLv23
- }
- 
- try:
-@@ -86,6 +85,11 @@
- except AttributeError:
-     pass
- 
-+try:
-+    _SSL_PROTOCOLS["sslv3"] = ssl.PROTOCOL_SSLv3
-+except AttributeError:
-+    pass
-+
- 
- def validate_ssl_version(version):
-     key = version.lower()
--- a/components/openstack/nova/patches/09-CVE-2015-3280.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,200 +0,0 @@
-Upstream patch to address CVE-2015-3280.  This fix will be included in
-the future 2014.2.3 (juno) release.
-
-From fa72fb8b51d59e04913c871539cee98a3da79058 Mon Sep 17 00:00:00 2001
-From: Rajesh Tailor <[email protected]>
-Date: Wed, 4 Mar 2015 05:05:19 -0800
-Subject: Delete orphaned instance files from compute nodes
-
-While resizing/revert-resizing instance, if instance gets deleted
-in between, then instance files remains either on the source or
-destination compute node.
-
-To address this issue, added a new periodic task
-'_cleanup_incomplete_migrations' which takes care of deleting
-instance files from source/destination compute nodes and then
-mark migration record as failed so that it doesn't appear again
-in the next periodic task run.
-
-Conflicts:
-	nova/compute/manager.py
-	nova/tests/unit/compute/test_compute_mgr.py
-
-SecurityImpact
-Closes-Bug: 1392527
-Change-Id: I9866d8e32e99b9f907921f4b226edf7b62bd83a7
-(cherry picked from commit 18d6b5cc79973fc553daf7a92f22cce4dc0ca013)
-
---- nova-2014.2.2/nova/compute/manager.py.~1~   2015-09-02 14:46:43.532548379 -0700
-+++ nova-2014.2.2/nova/compute/manager.py       2015-09-02 14:47:57.813280934 -0700
-@@ -257,12 +257,18 @@ def errors_out_migration(function):
-     def decorated_function(self, context, *args, **kwargs):
-         try:
-             return function(self, context, *args, **kwargs)
--        except Exception:
-+        except Exception as ex:
-             with excutils.save_and_reraise_exception():
-                 migration = kwargs['migration']
--                status = migration.status
--                if status not in ['migrating', 'post-migrating']:
--                    return
-+
-+                # NOTE(rajesht): If InstanceNotFound error is thrown from
-+                # decorated function, migration status should be set to
-+                # 'error', without checking current migration status.
-+                if not isinstance(ex, exception.InstanceNotFound):
-+                    status = migration.status
-+                    if status not in ['migrating', 'post-migrating']:
-+                        return
-+
-                 migration.status = 'error'
-                 try:
-                     migration.save(context.elevated())
-@@ -3469,6 +3475,7 @@ class ComputeManager(manager.Manager):
-     @wrap_exception()
-     @reverts_task_state
-     @wrap_instance_event
-+    @errors_out_migration
-     @wrap_instance_fault
-     def revert_resize(self, context, instance, migration, reservations):
-         """Destroys the new instance on the destination machine.
-@@ -3523,6 +3530,7 @@ class ComputeManager(manager.Manager):
-     @wrap_exception()
-     @reverts_task_state
-     @wrap_instance_event
-+    @errors_out_migration
-     @wrap_instance_fault
-     def finish_revert_resize(self, context, instance, reservations, migration):
-         """Finishes the second half of reverting a resize.
-@@ -6246,3 +6254,48 @@ class ComputeManager(manager.Manager):
-                     instance.cleaned = True
-                 with utils.temporary_mutation(context, read_deleted='yes'):
-                     instance.save(context)
-+
-+    @periodic_task.periodic_task(spacing=CONF.instance_delete_interval)
-+    def _cleanup_incomplete_migrations(self, context):
-+        """Delete instance files on failed resize/revert-resize operation
-+
-+        During resize/revert-resize operation, if that instance gets deleted
-+        in-between then instance files might remain either on source or
-+        destination compute node because of race condition.
-+        """
-+        LOG.debug('Cleaning up deleted instances with incomplete migration ')
-+        migration_filters = {'host':CONF.host,
-+                             'status': 'error'}
-+        migrations = objects.MigrationList.get_by_filters(context,
-+                                                         migration_filters)
-+
-+        if not migrations:
-+            return
-+
-+        inst_uuid_from_migrations = set([migration.instance_uuid for migration
-+                                         in migrations])
-+
-+        inst_filters = {'deleted': True, 'soft_deleted': False,
-+                        'uuid': inst_uuid_from_migrations}
-+        attrs = ['info_cache', 'security_groups', 'system_metadata']
-+        with utils.temporary_mutation(context, read_deleted='yes'):
-+            instances = objects.InstanceList.get_by_filters(
-+                context, inst_filters, expected_attrs=attrs, use_slave=True)
-+
-+        for instance in instances:
-+            if instance.host != CONF.host:
-+                for migration in migrations:
-+                    if instance.uuid == migration.instance_uuid:
-+                        # Delete instance files if not cleanup properly either
-+                        # from the source or destination compute nodes when
-+                        # the instance is deleted during resizing.
-+                        self.driver.delete_instance_files(instance)
-+                        try:
-+                            migration.status = 'failed'
-+                            migration.save(context.elevated())
-+                        except exception.MigrationNotFound:
-+                            LOG.warning(_LW("Migration %s is not found."),
-+                                        migration.id, context=context,
-+                                        instance=instance)
-+                        break
-+
-
---- ./nova/tests/compute/test_compute_mgr.py.~1~	2015-09-29 09:45:07.760433246 -0700
-+++ ./nova/tests/compute/test_compute_mgr.py		2015-09-29 09:48:00.008811912 -0700
-@@ -1047,6 +1047,79 @@ class ComputeManagerUnitTestCase(test.No
-         self.assertFalse(c.cleaned)
-         self.assertEqual('1', c.system_metadata['clean_attempts'])
- 
-+    @mock.patch.object(objects.Migration, 'save')
-+    @mock.patch.object(objects.MigrationList, 'get_by_filters')
-+    @mock.patch.object(objects.InstanceList, 'get_by_filters')
-+    def _test_cleanup_incomplete_migrations(self, inst_host,
-+                                            mock_inst_get_by_filters,
-+                                            mock_migration_get_by_filters,
-+                                            mock_save):
-+        def fake_inst(context, uuid, host):
-+            inst = objects.Instance(context)
-+            inst.uuid = uuid
-+            inst.host = host
-+            return inst
-+
-+        def fake_migration(uuid, status, inst_uuid, src_host, dest_host):
-+            migration = objects.Migration()
-+            migration.uuid = uuid
-+            migration.status = status
-+            migration.instance_uuid = inst_uuid
-+            migration.source_compute = src_host
-+            migration.dest_compute = dest_host
-+            return migration
-+
-+        fake_instances = [fake_inst(self.context, '111', inst_host),
-+                          fake_inst(self.context, '222', inst_host)]
-+
-+        fake_migrations = [fake_migration('123', 'error', '111',
-+                                          'fake-host', 'fake-mini'),
-+                           fake_migration('456', 'error', '222',
-+                                          'fake-host', 'fake-mini')]
-+
-+        mock_migration_get_by_filters.return_value = fake_migrations
-+        mock_inst_get_by_filters.return_value = fake_instances
-+
-+        with mock.patch.object(self.compute.driver, 'delete_instance_files'):
-+            self.compute._cleanup_incomplete_migrations(self.context)
-+
-+        # Ensure that migration status is set to 'failed' after instance
-+        # files deletion for those instances whose instance.host is not
-+        # same as compute host where periodic task is running.
-+        for inst in fake_instances:
-+            if inst.host != CONF.host:
-+                for mig in fake_migrations:
-+                    if inst.uuid == mig.instance_uuid:
-+                        self.assertEqual('failed', mig.status)
-+
-+    def test_cleanup_incomplete_migrations_dest_node(self):
-+        """Test to ensure instance files are deleted from destination node.
-+
-+        If an instance gets deleted during resizing/revert-resizing
-+        operation, in that case instance files gets deleted from
-+        instance.host (source host here), but there is possibility that
-+        instance files could be present on destination node.
-+
-+        This test ensures that `_cleanup_incomplete_migration` periodic
-+        task deletes orphaned instance files from destination compute node.
-+        """
-+        self.flags(host='fake-mini')
-+        self._test_cleanup_incomplete_migrations('fake-host')
-+
-+    def test_cleanup_incomplete_migrations_source_node(self):
-+        """Test to ensure instance files are deleted from source node.
-+
-+        If instance gets deleted during resizing/revert-resizing operation,
-+        in that case instance files gets deleted from instance.host (dest
-+        host here), but there is possibility that instance files could be
-+        present on source node.
-+
-+        This test ensures that `_cleanup_incomplete_migration` periodic
-+        task deletes orphaned instance files from source compute node.
-+        """
-+        self.flags(host='fake-host')
-+        self._test_cleanup_incomplete_migrations('fake-mini')
-+
-     def test_attach_interface_failure(self):
-         # Test that the fault methods are invoked when an attach fails
-         db_instance = fake_instance.fake_db_instance()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/nova/patches/09-generate_sample.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,38 @@
+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 \
++"
--- a/components/openstack/nova/patches/10-launchpad-1356552.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,208 +0,0 @@
-commit 42cae28241cd0c213201d036bfbe13fb118e4bee
-Author: Cyril Roelandt <[email protected]>
-Date:   Mon Aug 18 17:45:35 2014 +0000
-
-    libvirt: Make sure volumes are well detected during block migration
-    
-    Current implementation of live migration in libvirt incorrectly includes
-    block devices on shared storage (e.g., NFS) when computing destination
-    storage requirements. Since these volumes are already on shared storage
-    they do not need to be migrated. As a result, migration fails if the
-    amount of free space on the shared drive is less than the size of the
-    volume to be migrated. The problem is addressed by adding a
-    block_device_info parameter to check_can_live_migrate_source() to allow
-    volumes to be filtered correctly when computing migration space
-    requirements.
-    
-    This only fixes the issue on libvirt: it is unclear whether other
-    implementations suffer from the same issue.
-    
-    Thanks to Florent Flament for spotting and fixing an issue while trying out
-    this patch.
-    
-    Co-Authored-By: Florent Flament <[email protected]>
-    Change-Id: Iac7d2cd2a70800fd89864463ca45c030c47411b0
-    Closes-Bug: #1356552
-    (cherry picked from commit 671aa9f8b7ca5274696f83bde0d4822ee431b837)
-
---- nova-2014.2.2/nova/compute/manager.py.~3~	2015-12-01 05:07:52.781465660 -0800
-+++ nova-2014.2.2/nova/compute/manager.py	2015-12-01 05:07:52.795381628 -0800
-@@ -4891,8 +4891,11 @@ class ComputeManager(manager.Manager):
-         is_volume_backed = self.compute_api.is_volume_backed_instance(ctxt,
-                                                                       instance)
-         dest_check_data['is_volume_backed'] = is_volume_backed
-+        block_device_info = self._get_instance_block_device_info(
-+                            ctxt, instance, refresh_conn_info=True)
-         return self.driver.check_can_live_migrate_source(ctxt, instance,
--                                                         dest_check_data)
-+                                                         dest_check_data,
-+                                                         block_device_info)
- 
-     @object_compat
-     @wrap_exception()
---- nova-2014.2.2/nova/tests/compute/test_compute_mgr.py.~2~	2015-12-01 05:07:52.782691092 -0800
-+++ nova-2014.2.2/nova/tests/compute/test_compute_mgr.py	2015-12-01 05:07:52.796520248 -0800
-@@ -1302,13 +1302,19 @@ class ComputeManagerUnitTestCase(test.No
- 
-         self.mox.StubOutWithMock(self.compute.compute_api,
-                                  'is_volume_backed_instance')
-+        self.mox.StubOutWithMock(self.compute,
-+                                 '_get_instance_block_device_info')
-         self.mox.StubOutWithMock(self.compute.driver,
-                                  'check_can_live_migrate_source')
- 
-         self.compute.compute_api.is_volume_backed_instance(
-                 self.context, instance).AndReturn(is_volume_backed)
-+        self.compute._get_instance_block_device_info(
-+                self.context, instance, refresh_conn_info=True
-+                ).AndReturn({'block_device_mapping': 'fake'})
-         self.compute.driver.check_can_live_migrate_source(
--                self.context, instance, expected_dest_check_data)
-+                self.context, instance, expected_dest_check_data,
-+                {'block_device_mapping': 'fake'})
- 
-         self.mox.ReplayAll()
- 
-diff --git a/nova/tests/virt/libvirt/test_driver.py b/nova/tests/virt/libvirt/test_driver.py
-index 613943b..c686b88 100644
---- a/nova/tests/virt/libvirt/test_driver.py
-+++ b/nova/tests/virt/libvirt/test_driver.py
-@@ -5323,7 +5323,7 @@ class LibvirtConnTestCase(test.TestCase):
-         self.mox.StubOutWithMock(conn, "_assert_dest_node_has_enough_disk")
-         conn._assert_dest_node_has_enough_disk(
-             self.context, instance, dest_check_data['disk_available_mb'],
--            False)
-+            False, None)
- 
-         self.mox.ReplayAll()
-         ret = conn.check_can_live_migrate_source(self.context, instance,
-@@ -5386,8 +5386,9 @@ class LibvirtConnTestCase(test.TestCase):
-                 disk_available_mb=0)
- 
-         self.mox.StubOutWithMock(conn, "get_instance_disk_info")
--        conn.get_instance_disk_info(instance["name"]).AndReturn(
--                                            '[{"virt_disk_size":2}]')
-+        conn.get_instance_disk_info(instance["name"],
-+                                    block_device_info=None).AndReturn(
-+                                        '[{"virt_disk_size":2}]')
- 
-         self.mox.ReplayAll()
-         self.assertRaises(exception.MigrationError,
-diff --git a/nova/virt/driver.py b/nova/virt/driver.py
-index fd483e5..20f4dd1 100644
---- a/nova/virt/driver.py
-+++ b/nova/virt/driver.py
-@@ -808,7 +808,7 @@ class ComputeDriver(object):
-         raise NotImplementedError()
- 
-     def check_can_live_migrate_source(self, context, instance,
--                                      dest_check_data):
-+                                      dest_check_data, block_device_info=None):
-         """Check if it is possible to execute live migration.
- 
-         This checks if the live migration can succeed, based on the
-@@ -817,6 +817,7 @@ class ComputeDriver(object):
-         :param context: security context
-         :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)
-         """
-         raise NotImplementedError()
-diff --git a/nova/virt/fake.py b/nova/virt/fake.py
-index 049c519..fe9ff1c 100644
---- a/nova/virt/fake.py
-+++ b/nova/virt/fake.py
-@@ -426,7 +426,7 @@ class FakeDriver(driver.ComputeDriver):
-         return {}
- 
-     def check_can_live_migrate_source(self, ctxt, instance_ref,
--                                      dest_check_data):
-+                                      dest_check_data, block_device_info=None):
-         return
- 
-     def finish_migration(self, context, migration, instance, disk_info,
-diff --git a/nova/virt/hyperv/driver.py b/nova/virt/hyperv/driver.py
-index 485aa23..fa42130 100644
---- a/nova/virt/hyperv/driver.py
-+++ b/nova/virt/hyperv/driver.py
-@@ -169,7 +169,7 @@ class HyperVDriver(driver.ComputeDriver):
-             context, dest_check_data)
- 
-     def check_can_live_migrate_source(self, context, instance,
--                                      dest_check_data):
-+                                      dest_check_data, block_device_info=None):
-         return self._livemigrationops.check_can_live_migrate_source(
-             context, instance, dest_check_data)
- 
-diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py
-index cec2013..d420f15 100644
---- a/nova/virt/libvirt/driver.py
-+++ b/nova/virt/libvirt/driver.py
-@@ -5028,7 +5028,8 @@ class LibvirtDriver(driver.ComputeDriver):
-         self._cleanup_shared_storage_test_file(filename)
- 
-     def check_can_live_migrate_source(self, context, instance,
--                                      dest_check_data):
-+                                      dest_check_data,
-+                                      block_device_info=None):
-         """Check if it is possible to execute live migration.
- 
-         This checks if the live migration can succeed, based on the
-@@ -5037,6 +5038,7 @@ class LibvirtDriver(driver.ComputeDriver):
-         :param context: security context
-         :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
-         """
-         # Checking shared storage connectivity
-@@ -5058,7 +5060,8 @@ class LibvirtDriver(driver.ComputeDriver):
-                 raise exception.InvalidLocalStorage(reason=reason, path=source)
-             self._assert_dest_node_has_enough_disk(context, instance,
-                                     dest_check_data['disk_available_mb'],
--                                    dest_check_data['disk_over_commit'])
-+                                    dest_check_data['disk_over_commit'],
-+                                    block_device_info)
- 
-         elif not (dest_check_data['is_shared_block_storage'] or
-                   dest_check_data['is_shared_instance_path']):
-@@ -5106,7 +5109,8 @@ class LibvirtDriver(driver.ComputeDriver):
-         return False
- 
-     def _assert_dest_node_has_enough_disk(self, context, instance,
--                                             available_mb, disk_over_commit):
-+                                             available_mb, disk_over_commit,
-+                                             block_device_info=None):
-         """Checks if destination has enough disk for block migration."""
-         # Libvirt supports qcow2 disk format,which is usually compressed
-         # on compute nodes.
-@@ -5122,7 +5126,8 @@ class LibvirtDriver(driver.ComputeDriver):
-         if available_mb:
-             available = available_mb * units.Mi
- 
--        ret = self.get_instance_disk_info(instance['name'])
-+        ret = self.get_instance_disk_info(instance['name'],
-+                                          block_device_info=block_device_info)
-         disk_infos = jsonutils.loads(ret)
- 
-         necessary = 0
---- nova-2014.2.2/nova/virt/xenapi/driver.py.~2~	2015-12-01 05:16:19.562306358 -0800
-+++ nova-2014.2.2/nova/virt/xenapi/driver.py	2015-12-01 05:16:19.614403555 -0800
-@@ -501,7 +501,7 @@ class XenAPIDriver(driver.ComputeDriver)
-         pass
- 
-     def check_can_live_migrate_source(self, context, instance,
--                                      dest_check_data):
-+                                      dest_check_data, block_device_info=None):
-         """Check if it is possible to execute live migration.
- 
-         This checks if the live migration can succeed, based on the
-@@ -511,6 +511,7 @@ class XenAPIDriver(driver.ComputeDriver)
-         :param instance: nova.db.sqlalchemy.models.Instance
-         :param dest_check_data: result of check_can_live_migrate_destination
-                                 includes the block_migration flag
-+        :param block_device_info: result of _get_instance_block_device_info
-         """
-         return self._vmops.check_can_live_migrate_source(context, instance,
-                                                          dest_check_data)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/nova/patches/10-launchpad-1486590.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,74 @@
+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
--- a/components/openstack/nova/patches/11-launchpad-1377644.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-This external patch was a follow up fix to Launchpad bug 1377644.
-While the original fix was backported to Juno 2014.2.1, the subsequent
-one was not.
-
-commit 64882d39d9fea9d6001ccc61973624949825c52f
-Author: He Jie Xu <[email protected]>
-Date:   Fri Nov 7 23:24:12 2014 +0800
-
-    Fix circular reference error when live migration failed
-    
-    When unexpected exception raised in live migration, the MigrationError
-    carry another original exception in it. But when oslo.message
-    serialize the exception, the circular reference error happended. This
-    patch just pass the exception as unicode string into MigrationError.
-    
-    Change-Id: I4e449baae74bd9a15490ae7accbd2103bae90d57
-    Related-Bug: #1377644
-
---- nova-2014.2.2/nova/conductor/manager.py.~1~	2015-12-01 04:52:25.839270759 -0800
-+++ nova-2014.2.2/nova/conductor/manager.py	2015-12-01 04:54:08.341268026 -0800
-@@ -589,7 +589,7 @@ class ComputeTaskManager(base.Base):
-                        ' %(dest)s unexpectedly failed.'),
-                        {'instance_id': instance['uuid'], 'dest': destination},
-                        exc_info=True)
--            raise exception.MigrationError(reason=ex)
-+            raise exception.MigrationError(reason=six.text_type(ex))
- 
-     def build_instances(self, context, instances, image, filter_properties,
-             admin_password, injected_files, requested_networks,
---- nova-2014.2.2/nova/tests/conductor/test_conductor.py.~1~	2015-02-05 06:26:50.000000000 -0800
-+++ nova-2014.2.2/nova/tests/conductor/test_conductor.py	2015-12-01 04:55:27.135695264 -0800
-@@ -20,6 +20,7 @@ import contextlib
- import mock
- import mox
- from oslo import messaging
-+import six
- 
- from nova.api.ec2 import ec2utils
- from nova.compute import arch
-@@ -1711,18 +1712,19 @@ class ConductorTaskTestCase(_BaseTaskTes
-         self.mox.StubOutWithMock(scheduler_utils,
-                 'set_vm_state_and_notify')
- 
--        ex = IOError()
-+        expected_ex = IOError('fake error')
-         live_migrate.execute(self.context, mox.IsA(objects.Instance),
-                              'destination', 'block_migration',
--                             'disk_over_commit').AndRaise(ex)
-+                             'disk_over_commit').AndRaise(expected_ex)
-         self.mox.ReplayAll()
- 
-         self.conductor = utils.ExceptionHelper(self.conductor)
- 
--        self.assertRaises(exc.MigrationError,
-+        ex = self.assertRaises(exc.MigrationError,
-             self.conductor.migrate_server, self.context, inst_obj,
-             {'host': 'destination'}, True, False, None, 'block_migration',
-             'disk_over_commit')
-+        self.assertEqual(ex.kwargs['reason'], six.text_type(expected_ex))
- 
-     def test_set_vm_state_and_notify(self):
-         self.mox.StubOutWithMock(scheduler_utils,
--- a/components/openstack/nova/patches/12-launchpad-1397153.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
-commit 40a37269c52977a718e91012cfd4580b2e31ec65
-Author: He Jie Xu <[email protected]>
-Date:   Fri Nov 7 23:29:18 2014 +0800
-
-    Set vm state error when raising unexpected exception in live migrate
-    
-    The instance stuck at migrating task_state when unexpected exception.
-    This is confuse for user, this patch set the vm_state to error.
-    
-    Change-Id: Ib1b97452bc5e777c66c4d368f71156dbe1e116b7
-    Partial-Bug: 1397153
-
---- nova-2014.2.2/nova/conductor/manager.py.~2~	2015-12-01 04:57:58.583807338 -0800
-+++ nova-2014.2.2/nova/conductor/manager.py	2015-12-01 05:00:43.319845439 -0800
-@@ -558,6 +558,19 @@ class ComputeTaskManager(base.Base):
-     def _live_migrate(self, context, instance, scheduler_hint,
-                       block_migration, disk_over_commit):
-         destination = scheduler_hint.get("host")
-+
-+        def _set_vm_state(context, instance, ex, vm_state=None,
-+                          task_state=None):
-+            request_spec = {'instance_properties': {
-+                'uuid': instance['uuid'], },
-+            }
-+            scheduler_utils.set_vm_state_and_notify(context,
-+                'compute_task', 'migrate_server',
-+                dict(vm_state=vm_state,
-+                     task_state=task_state,
-+                     expected_task_state=task_states.MIGRATING,),
-+                ex, request_spec, self.db)
-+
-         try:
-             live_migrate.execute(context, instance, destination,
-                              block_migration, disk_over_commit)
-@@ -575,20 +588,14 @@ class ComputeTaskManager(base.Base):
-                 exception.LiveMigrationWithOldNovaNotSafe) as ex:
-             with excutils.save_and_reraise_exception():
-                 # TODO(johngarbutt) - eventually need instance actions here
--                request_spec = {'instance_properties': {
--                    'uuid': instance['uuid'], },
--                }
--                scheduler_utils.set_vm_state_and_notify(context,
--                        'compute_task', 'migrate_server',
--                        dict(vm_state=instance['vm_state'],
--                             task_state=None,
--                             expected_task_state=task_states.MIGRATING,),
--                        ex, request_spec, self.db)
-+                _set_vm_state(context, instance, ex, instance['vm_state'])
-         except Exception as ex:
-             LOG.error(_('Migration of instance %(instance_id)s to host'
-                        ' %(dest)s unexpectedly failed.'),
-                        {'instance_id': instance['uuid'], 'dest': destination},
-                        exc_info=True)
-+            _set_vm_state(context, instance, ex, vm_states.ERROR,
-+                          instance['task_state'])
-             raise exception.MigrationError(reason=six.text_type(ex))
- 
-     def build_instances(self, context, instances, image, filter_properties,
---- nova-2014.2.2/nova/tests/conductor/test_conductor.py.~2~	2015-12-01 04:57:58.599204982 -0800
-+++ nova-2014.2.2/nova/tests/conductor/test_conductor.py	2015-12-01 05:04:39.416251458 -0800
-@@ -1704,27 +1704,28 @@ class ConductorTaskTestCase(_BaseTaskTes
-         ex = exc.LiveMigrationWithOldNovaNotSafe(server='dummy')
-         self._test_migrate_server_deals_with_expected_exceptions(ex)
- 
--    def test_migrate_server_deals_with_unexpected_exceptions(self):
-+    @mock.patch.object(scheduler_utils, 'set_vm_state_and_notify')
-+    @mock.patch.object(live_migrate, 'execute')
-+    def test_migrate_server_deals_with_unexpected_exceptions(self,
-+            mock_live_migrate, mock_set_state):
-+        expected_ex = IOError('fake error')
-+        mock_live_migrate.side_effect = expected_ex
-         instance = fake_instance.fake_db_instance()
-         inst_obj = objects.Instance._from_db_object(
-             self.context, objects.Instance(), instance, [])
--        self.mox.StubOutWithMock(live_migrate, 'execute')
--        self.mox.StubOutWithMock(scheduler_utils,
--                'set_vm_state_and_notify')
--
--        expected_ex = IOError('fake error')
--        live_migrate.execute(self.context, mox.IsA(objects.Instance),
--                             'destination', 'block_migration',
--                             'disk_over_commit').AndRaise(expected_ex)
--        self.mox.ReplayAll()
--
--        self.conductor = utils.ExceptionHelper(self.conductor)
--
-         ex = self.assertRaises(exc.MigrationError,
-             self.conductor.migrate_server, self.context, inst_obj,
-             {'host': 'destination'}, True, False, None, 'block_migration',
-             'disk_over_commit')
--        self.assertEqual(ex.kwargs['reason'], six.text_type(expected_ex))
-+        request_spec = {'instance_properties': {
-+                'uuid': instance['uuid'], },
-+        }
-+        mock_set_state.assert_called_once_with(self.context,
-+                        'compute_task', 'migrate_server',
-+                        dict(vm_state=vm_states.ERROR,
-+                             task_state=inst_obj.task_state,
-+                             expected_task_state=task_states.MIGRATING,),
-+                        expected_ex, request_spec, self.conductor.db)
- 
-     def test_set_vm_state_and_notify(self):
-         self.mox.StubOutWithMock(scheduler_utils,
--- a/components/openstack/swift/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/swift/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,25 +20,25 @@
 #
 
 #
-# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		swift
 COMPONENT_CODENAME=	kilo
-COMPONENT_VERSION=	2.2.2
-COMPONENT_BE_VERSION=	2014.2
+COMPONENT_VERSION=	2.3.0
+COMPONENT_BE_VERSION=	2015.1
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:d97ff8e3c1381611ca2f9cd3eb13000e3339166e06d67ec079ce9ec958d1a088
+    sha256:7225061f92597e7eaf6196c9336c5e590c7626b7e84126c51e8ca5bf5b7bdae1
 COMPONENT_ARCHIVE_URL=	http://launchpad.net/$(COMPONENT_NAME)/$(COMPONENT_CODENAME)/$(COMPONENT_VERSION)/+download/$(COMPONENT_ARCHIVE)
 COMPONENT_SIG_URL=	$(COMPONENT_ARCHIVE_URL).asc
 COMPONENT_PROJECT_URL=	http://www.openstack.org/
 COMPONENT_BUGDB=	service/swift
 
-TPNO=			21826
+TPNO=			25793
 
 include $(WS_MAKE_RULES)/prep.mk
 include $(WS_MAKE_RULES)/setup.py.mk
--- a/components/openstack/swift/files/swift-upgrade	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/swift/files/swift-upgrade	Fri Feb 05 17:54:17 2016 -0500
@@ -1,6 +1,6 @@
 #!/usr/bin/python2.7
 
-# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2015, 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
--- a/components/openstack/swift/patches/CVE-2015-1856.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,242 +0,0 @@
-This upstream patch addresses CVE-2015-1856 in Swift. It should be able
-to be removed when Swift 2.3.0 or later is integrated.
-
-From 85afe9316570855c87ea731d0627f6f8f2b73264 Mon Sep 17 00:00:00 2001
-From: Alistair Coles <[email protected]>
-Date: Fri, 3 Apr 2015 17:05:36 +0100
-Subject: Prevent unauthorized delete in versioned container
-
-An authenticated user can delete the most recent version of any
-versioned object who's name is known if the user has listing access
-to the x-versions-location container. Only Swift setups with
-allow_version setting are affected.
-
-This patch closes this bug, tracked as CVE-2015-1856.
-
-Co-Authored-By: Clay Gerrard <[email protected]>
-Co-Authored-By: Christian Schwede <[email protected]>
-Co-Authored-By: Alistair Coles <[email protected]>
-
-Closes-Bug: 1430645
-
-Change-Id: I74448c12bc4d4cd07d4300f452cf3dd6f66ca70a
-
---- swift-2.2.2/swift/proxy/controllers/obj.py.~1~	2015-02-01 23:44:14.000000000 -0800
-+++ swift-2.2.2/swift/proxy/controllers/obj.py	2015-04-14 13:55:21.015697631 -0700
-@@ -772,6 +772,10 @@ class ObjectController(Controller):
-         req.acl = container_info['write_acl']
-         req.environ['swift_sync_key'] = container_info['sync_key']
-         object_versions = container_info['versions']
-+        if 'swift.authorize' in req.environ:
-+            aresp = req.environ['swift.authorize'](req)
-+            if aresp:
-+                return aresp
-         if object_versions:
-             # this is a version manifest and needs to be handled differently
-             object_versions = unquote(object_versions)
-@@ -842,11 +846,11 @@ class ObjectController(Controller):
-                 # remove 'X-If-Delete-At', since it is not for the older copy
-                 if 'X-If-Delete-At' in req.headers:
-                     del req.headers['X-If-Delete-At']
-+                if 'swift.authorize' in req.environ:
-+                    aresp = req.environ['swift.authorize'](req)
-+                    if aresp:
-+                        return aresp
-                 break
--        if 'swift.authorize' in req.environ:
--            aresp = req.environ['swift.authorize'](req)
--            if aresp:
--                return aresp
-         if not containers:
-             return HTTPNotFound(request=req)
-         partition, nodes = obj_ring.get_nodes(
---- swift-2.2.2/test/functional/tests.py.~1~	2015-02-01 23:44:11.000000000 -0800
-+++ swift-2.2.2/test/functional/tests.py	2015-04-14 13:55:21.017140281 -0700
-@@ -2407,6 +2407,14 @@ class TestObjectVersioningEnv(object):
-         cls.account = Account(cls.conn, tf.config.get('account',
-                                                       tf.config['username']))
- 
-+        # Second connection for ACL tests
-+        config2 = deepcopy(tf.config)
-+        config2['account'] = tf.config['account2']
-+        config2['username'] = tf.config['username2']
-+        config2['password'] = tf.config['password2']
-+        cls.conn2 = Connection(config2)
-+        cls.conn2.authenticate()
-+
-         # avoid getting a prefix that stops halfway through an encoded
-         # character
-         prefix = Utils.create_name().decode("utf-8")[:10].encode("utf-8")
-@@ -2460,6 +2468,14 @@ class TestCrossPolicyObjectVersioningEnv
-         cls.account = Account(cls.conn, tf.config.get('account',
-                                                       tf.config['username']))
- 
-+        # Second connection for ACL tests
-+        config2 = deepcopy(tf.config)
-+        config2['account'] = tf.config['account2']
-+        config2['username'] = tf.config['username2']
-+        config2['password'] = tf.config['password2']
-+        cls.conn2 = Connection(config2)
-+        cls.conn2.authenticate()
-+
-         # avoid getting a prefix that stops halfway through an encoded
-         # character
-         prefix = Utils.create_name().decode("utf-8")[:10].encode("utf-8")
-@@ -2494,6 +2510,15 @@ class TestObjectVersioning(Base):
-                 "Expected versioning_enabled to be True/False, got %r" %
-                 (self.env.versioning_enabled,))
- 
-+    def tearDown(self):
-+        super(TestObjectVersioning, self).tearDown()
-+        try:
-+            # delete versions first!
-+            self.env.versions_container.delete_files()
-+            self.env.container.delete_files()
-+        except ResponseError:
-+            pass
-+
-     def test_overwriting(self):
-         container = self.env.container
-         versions_container = self.env.versions_container
-@@ -2553,6 +2578,33 @@ class TestObjectVersioning(Base):
-         self.assertEqual(3, versions_container.info()['object_count'])
-         self.assertEqual("112233", man_file.read())
- 
-+    def test_versioning_check_acl(self):
-+        container = self.env.container
-+        versions_container = self.env.versions_container
-+        versions_container.create(hdrs={'X-Container-Read': '.r:*,.rlistings'})
-+
-+        obj_name = Utils.create_name()
-+        versioned_obj = container.file(obj_name)
-+        versioned_obj.write("aaaaa")
-+        self.assertEqual("aaaaa", versioned_obj.read())
-+
-+        versioned_obj.write("bbbbb")
-+        self.assertEqual("bbbbb", versioned_obj.read())
-+
-+        # Use token from second account and try to delete the object
-+        org_token = self.env.account.conn.storage_token
-+        self.env.account.conn.storage_token = self.env.conn2.storage_token
-+        try:
-+            self.assertRaises(ResponseError, versioned_obj.delete)
-+        finally:
-+            self.env.account.conn.storage_token = org_token
-+
-+        # Verify with token from first account
-+        self.assertEqual("bbbbb", versioned_obj.read())
-+
-+        versioned_obj.delete()
-+        self.assertEqual("aaaaa", versioned_obj.read())
-+
- 
- class TestObjectVersioningUTF8(Base2, TestObjectVersioning):
-     set_up = False
---- swift-2.2.2/test/unit/proxy/test_server.py.~1~	2015-02-01 23:44:11.000000000 -0800
-+++ swift-2.2.2/test/unit/proxy/test_server.py	2015-04-14 13:55:21.019825997 -0700
-@@ -56,7 +56,7 @@ from swift.proxy.controllers.base import
-     get_account_memcache_key, cors_validation
- import swift.proxy.controllers
- from swift.common.swob import Request, Response, HTTPUnauthorized, \
--    HTTPException
-+    HTTPException, HTTPForbidden
- from swift.common import storage_policy
- from swift.common.storage_policy import StoragePolicy, \
-     StoragePolicyCollection, POLICIES
-@@ -1609,6 +1609,7 @@ class TestObjectController(unittest.Test
-     ])
-     def test_DELETE_on_expired_versioned_object(self):
-         methods = set()
-+        authorize_call_count = [0]
- 
-         def test_connect(ipaddr, port, device, partition, method, path,
-                          headers=None, query_string=None):
-@@ -1634,6 +1635,10 @@ class TestObjectController(unittest.Test
-             for obj in object_list:
-                 yield obj
- 
-+        def fake_authorize(req):
-+            authorize_call_count[0] += 1
-+            return None  # allow the request
-+
-         with save_globals():
-             controller = proxy_server.ObjectController(self.app,
-                                                        'a', 'c', 'o')
-@@ -1645,7 +1650,8 @@ class TestObjectController(unittest.Test
-                              204, 204, 204,  # delete for the pre-previous
-                              give_connect=test_connect)
-             req = Request.blank('/v1/a/c/o',
--                                environ={'REQUEST_METHOD': 'DELETE'})
-+                                environ={'REQUEST_METHOD': 'DELETE',
-+                                         'swift.authorize': fake_authorize})
- 
-             self.app.memcache.store = {}
-             self.app.update_request(req)
-@@ -1655,6 +1661,67 @@ class TestObjectController(unittest.Test
-                            ('PUT', '/a/c/o'),
-                            ('DELETE', '/a/foo/2')]
-             self.assertEquals(set(exp_methods), (methods))
-+            self.assertEquals(authorize_call_count[0], 2)
-+
-+    @patch_policies([
-+        StoragePolicy(0, 'zero', False, object_ring=FakeRing()),
-+        StoragePolicy(1, 'one', True, object_ring=FakeRing())
-+    ])
-+    def test_denied_DELETE_of_versioned_object(self):
-+        """
-+        Verify that a request with read access to a versions container
-+        is unable to cause any write operations on the versioned container.
-+        """
-+        methods = set()
-+        authorize_call_count = [0]
-+
-+        def test_connect(ipaddr, port, device, partition, method, path,
-+                         headers=None, query_string=None):
-+            methods.add((method, path))
-+
-+        def fake_container_info(account, container, req):
-+            return {'status': 200, 'sync_key': None,
-+                    'meta': {}, 'cors': {'allow_origin': None,
-+                                         'expose_headers': None,
-+                                         'max_age': None},
-+                    'sysmeta': {}, 'read_acl': None, 'object_count': None,
-+                    'write_acl': None, 'versions': 'foo',
-+                    'partition': 1, 'bytes': None, 'storage_policy': '1',
-+                    'nodes': [{'zone': 0, 'ip': '10.0.0.0', 'region': 0,
-+                               'id': 0, 'device': 'sda', 'port': 1000},
-+                              {'zone': 1, 'ip': '10.0.0.1', 'region': 1,
-+                               'id': 1, 'device': 'sdb', 'port': 1001},
-+                              {'zone': 2, 'ip': '10.0.0.2', 'region': 0,
-+                               'id': 2, 'device': 'sdc', 'port': 1002}]}
-+
-+        def fake_list_iter(container, prefix, env):
-+            object_list = [{'name': '1'}, {'name': '2'}, {'name': '3'}]
-+            for obj in object_list:
-+                yield obj
-+
-+        def fake_authorize(req):
-+            # deny write access
-+            authorize_call_count[0] += 1
-+            return HTTPForbidden(req)  # allow the request
-+
-+        with save_globals():
-+            controller = proxy_server.ObjectController(self.app,
-+                                                       'a', 'c', 'o')
-+            controller.container_info = fake_container_info
-+            # patching _listing_iter simulates request being authorized
-+            # to list versions container
-+            controller._listing_iter = fake_list_iter
-+            set_http_connect(give_connect=test_connect)
-+            req = Request.blank('/v1/a/c/o',
-+                                environ={'REQUEST_METHOD': 'DELETE',
-+                                         'swift.authorize': fake_authorize})
-+
-+            self.app.memcache.store = {}
-+            self.app.update_request(req)
-+            resp = controller.DELETE(req)
-+            self.assertEqual(403, resp.status_int)
-+            self.assertFalse(methods, methods)
-+            self.assertEquals(authorize_call_count[0], 1)
- 
-     def test_PUT_auto_content_type(self):
-         with save_globals():
--- a/components/openstack/swift/patches/CVE-2015-5223.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/swift/patches/CVE-2015-5223.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,3 +1,6 @@
+This upstream patch addresses CVE-2015-5223 in swift. It may be removed
+when swift 2.4.0 or later is integrated.
+
 From 0694e1911d10a18075ff99462c96781372422b2c Mon Sep 17 00:00:00 2001
 From: Clay Gerrard <[email protected]>
 Date: Thu, 23 Jul 2015 22:36:21 -0700
@@ -25,20 +28,13 @@
 Closes-Bug: 1453948
 
 Change-Id: I91161dfb0f089c3990aca1b4255b520299ef73c8
----
- swift/common/middleware/tempurl.py          | 31 ++++++++++++++++++++++++-
- test/functional/tests.py                    | 36 +++++++++++++++++++++++++++++
- test/unit/common/middleware/test_tempurl.py | 19 +++++++++++++++
- 3 files changed, 85 insertions(+), 1 deletion(-)
 
-diff --git a/swift/common/middleware/tempurl.py b/swift/common/middleware/tempurl.py
-index c2381b3..1f94e8d 100644
---- a/swift/common/middleware/tempurl.py
-+++ b/swift/common/middleware/tempurl.py
-@@ -119,11 +119,13 @@ from urllib import urlencode
+--- swift-2.3.0/swift/common/middleware/tempurl.py.~1~	2015-04-30 09:57:42.000000000 -0400
++++ swift-2.3.0/swift/common/middleware/tempurl.py	2015-11-03 17:11:02.364113024 -0500
+@@ -122,11 +122,13 @@
  from urlparse import parse_qs
  
- from swift.proxy.controllers.base import get_account_info
+ from swift.proxy.controllers.base import get_account_info, get_container_info
 -from swift.common.swob import HeaderKeyDict, HTTPUnauthorized
 +from swift.common.swob import HeaderKeyDict, HTTPUnauthorized, HTTPBadRequest
  from swift.common.utils import split_path, get_valid_utf8_str, \
@@ -50,7 +46,7 @@
  #: Default headers to remove from incoming requests. Simply a whitespace
  #: delimited list of header names and names can optionally end with '*' to
  #: indicate a prefix match. DEFAULT_INCOMING_ALLOW_HEADERS is a list of
-@@ -227,6 +229,10 @@ class TempURL(object):
+@@ -230,6 +232,10 @@
          #: The methods allowed with Temp URLs.
          self.methods = methods
  
@@ -61,7 +57,7 @@
          headers = DEFAULT_INCOMING_REMOVE_HEADERS
          if 'incoming_remove_headers' in conf:
              headers = conf['incoming_remove_headers']
-@@ -320,6 +326,13 @@ class TempURL(object):
+@@ -323,6 +329,13 @@
                              for hmac in hmac_vals)
          if not is_valid_hmac:
              return self._invalid(env, start_response)
@@ -75,7 +71,7 @@
          self._clean_incoming_headers(env)
          env['swift.authorize'] = lambda req: None
          env['swift.authorize_override'] = True
-@@ -456,6 +469,22 @@ class TempURL(object):
+@@ -465,6 +478,22 @@
              body = '401 Unauthorized: Temp URL invalid\n'
          return HTTPUnauthorized(body=body)(env, start_response)
  
@@ -98,11 +94,9 @@
      def _clean_incoming_headers(self, env):
          """
          Removes any headers from the WSGI environment as per the
-diff --git a/test/functional/tests.py b/test/functional/tests.py
-index e57f22b..654949f 100644
---- a/test/functional/tests.py
-+++ b/test/functional/tests.py
-@@ -2687,6 +2687,42 @@ class TestTempurl(Base):
+--- swift-2.3.0/test/functional/tests.py.~1~	2015-04-30 09:57:42.000000000 -0400
++++ swift-2.3.0/test/functional/tests.py	2015-11-03 15:27:42.202245458 -0500
+@@ -2732,6 +2732,42 @@
          self.assert_(new_obj.info(parms=put_parms,
                                    cfg={'no_auth_token': True}))
  
@@ -145,11 +139,9 @@
      def test_HEAD(self):
          expires = int(time.time()) + 86400
          sig = self.tempurl_sig(
-diff --git a/test/unit/common/middleware/test_tempurl.py b/test/unit/common/middleware/test_tempurl.py
-index 0581077..ffb3b98 100644
---- a/test/unit/common/middleware/test_tempurl.py
-+++ b/test/unit/common/middleware/test_tempurl.py
-@@ -623,6 +623,25 @@ class TestTempURL(unittest.TestCase):
+--- swift-2.3.0/test/unit/common/middleware/test_tempurl.py.~1~	2015-04-30 09:57:42.000000000 -0400
++++ swift-2.3.0/test/unit/common/middleware/test_tempurl.py	2015-11-03 15:27:42.202552552 -0500
+@@ -649,6 +649,25 @@
          self.assertTrue('Temp URL invalid' in resp.body)
          self.assertTrue('Www-Authenticate' in resp.headers)
  
@@ -175,6 +167,3 @@
      def test_removed_incoming_header(self):
          self.tempurl = tempurl.filter_factory({
              'incoming_remove_headers': 'x-remove-this'})(self.auth)
--- 
-cgit v0.11.2
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/swift/patches/remove_PyECLib.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,57 @@
+In-house removal of PyECLib in Swift since we do not support the
+Erasure Code storage policy.
+This patch is Solaris-specific and not suitable for upstream.
+
+--- swift-2.3.0/requirements.txt.~1~	2015-04-30 09:57:42.000000000 -0400
++++ swift-2.3.0/requirements.txt	2016-01-22 14:34:21.669065681 -0500
+@@ -9,4 +9,3 @@
+ pastedeploy>=1.3.3
+ simplejson>=2.0.9
+ xattr>=0.4
+-PyECLib>=1.0.7
+--- swift-2.3.0/swift.egg-info/requires.txt.~1~	2015-04-30 09:59:12.000000000 -0400
++++ swift-2.3.0/swift.egg-info/requires.txt	2016-01-22 14:35:06.808030835 -0500
+@@ -5,4 +5,3 @@
+ pastedeploy>=1.3.3
+ simplejson>=2.0.9
+ xattr>=0.4
+-PyECLib>=1.0.7
+--- swift-2.3.0/swift/common/storage_policy.py.~1~	2015-04-30 09:57:42.000000000 -0400
++++ swift-2.3.0/swift/common/storage_policy.py	2016-01-22 14:34:21.669774386 -0500
+@@ -19,7 +19,12 @@
+ from swift.common.ring import Ring
+ from swift.common.utils import quorum_size
+ from swift.common.exceptions import RingValidationError
+-from pyeclib.ec_iface import ECDriver, ECDriverError, VALID_EC_TYPES
++
++# Attempt to load PyEClib if installed
++try:
++    from pyeclib.ec_iface import ECDriver, ECDriverError, VALID_EC_TYPES
++except ImportError:
++    pass
+ 
+ LEGACY_POLICY_NAME = 'Policy-0'
+ VALID_CHARS = '-' + string.letters + string.digits
+--- swift-2.3.0/swift/proxy/controllers/obj.py.~1~	2015-04-30 09:57:42.000000000 -0400
++++ swift-2.3.0/swift/proxy/controllers/obj.py	2016-01-22 14:34:21.670425554 -0500
+@@ -60,7 +60,7 @@
+     HTTP_SERVICE_UNAVAILABLE, HTTP_INSUFFICIENT_STORAGE,
+     HTTP_PRECONDITION_FAILED, HTTP_CONFLICT, is_informational)
+ from swift.common.storage_policy import (POLICIES, REPL_POLICY, EC_POLICY,
+-                                         ECDriverError, PolicyError)
++                                         PolicyError)
+ from swift.proxy.controllers.base import Controller, delay_denial, \
+     cors_validation
+ from swift.common.swob import HTTPAccepted, HTTPBadRequest, HTTPNotFound, \
+@@ -70,6 +70,11 @@
+ from swift.common.request_helpers import is_sys_or_user_meta, is_sys_meta, \
+     remove_items, copy_header_subset, close_if_possible
+ 
++# Load PyEClib if installed
++try:
++    from swift.common.storage_policy import ECDriverError
++except ImportError:
++    pass
+ 
+ def copy_headers_into(from_r, to_r):
+     """
--- a/components/openstack/swift/patches/requirements.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-In-house patch to remove unnecessary dependencies from Swift's
-requirements files. The specific reasons are as follows:
-
-greenlet	Not applicable
-
---- swift-2.2.0/requirements.txt
-+++ swift-2.2.0/requirements.txt
-@@ -4,7 +4,6 @@
- 
- dnspython>=1.9.4
- eventlet>=0.9.15
--greenlet>=0.3.1
- netifaces>=0.5,!=0.10.0,!=0.10.1
- pastedeploy>=1.3.3
- simplejson>=2.0.9
---- swift-2.2.0/swift.egg-info/requires.txt
-+++ swift-2.2.0/swift.egg-info/requires.txt
-@@ -1,6 +1,5 @@
- dnspython>=1.9.4
- eventlet>=0.9.15
--greenlet>=0.3.1
- netifaces>=0.5,!=0.10.0,!=0.10.1
- pastedeploy>=1.3.3
- simplejson>=2.0.9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/swift/swift.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,213 @@
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+  
+
+                               Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
--- a/components/openstack/swift/swift.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/openstack/swift/swift.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,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.
 #
 
 <transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
@@ -60,7 +60,7 @@
 set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
 set name=openstack.upgrade-id reboot-needed=true value=$(COMPONENT_BE_VERSION)
 set name=org.opensolaris.arc-caseid value=PSARC/2013/350 value=PSARC/2014/050 \
-    value=PSARC/2015/110
+    value=PSARC/2015/110 value=PSARC/2015/535
 set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
 file path=etc/security/auth_attr.d/cloud:openstack:swift
 file path=etc/security/exec_attr.d/cloud:openstack:swift
@@ -217,6 +217,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/swift/obj/expirer.py
 file path=usr/lib/python$(PYVER)/vendor-packages/swift/obj/mem_diskfile.py
 file path=usr/lib/python$(PYVER)/vendor-packages/swift/obj/mem_server.py
+file path=usr/lib/python$(PYVER)/vendor-packages/swift/obj/reconstructor.py
 file path=usr/lib/python$(PYVER)/vendor-packages/swift/obj/replicator.py
 file path=usr/lib/python$(PYVER)/vendor-packages/swift/obj/server.py
 file path=usr/lib/python$(PYVER)/vendor-packages/swift/obj/ssync_receiver.py
@@ -286,7 +287,10 @@
 user username=swift ftpuser=false gcos-field="Openstack Swift" group=swift \
     home-dir=/var/lib/swift uid=86
 #
-license LICENSE license="Apache v2.0"
+license swift.license license="Apache v2.0"
+
+# 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
 
 # force a dependency on dnspython; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/dnspython-$(PYV)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/aioeventlet/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,51 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+include ../../../make-rules/shared-macros.mk
+
+COMPONENT_NAME=		aioeventlet
+COMPONENT_VERSION=	0.4
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
+COMPONENT_ARCHIVE_HASH=	\
+    sha256:fe78c2b227ce077b1581e2ae2c071f351111d0878ec1b0216435f6a898df79a6
+COMPONENT_ARCHIVE_URL=	$(call pypi_url)
+COMPONENT_PROJECT_URL=	http://pypi.python.org/pypi/aioeventlet/
+COMPONENT_BUGDB=	python-mod/aioeventlet
+
+TPNO=			23145
+
+include $(WS_MAKE_RULES)/prep.mk
+include $(WS_MAKE_RULES)/setup.py.mk
+include $(WS_MAKE_RULES)/ips.mk
+
+ASLR_MODE = $(ASLR_NOT_APPLICABLE)
+
+# common targets
+build:		$(BUILD_NO_ARCH)
+
+install:	$(INSTALL_NO_ARCH)
+
+test:		$(NO_TESTS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/aioeventlet/aioeventlet-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,59 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+set name=pkg.fmri \
+    value=pkg:/library/python/aioeventlet-$(PYV)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary value="asyncio event loop scheduling callbacks in eventlet"
+set name=pkg.description \
+    value="aioeventlet implements the asyncio (PEP 3156) on top of eventlet. It makes possible to write asyncio code in a project currently written for eventlet."
+set name=com.oracle.info.description value="the Python aioeventlet module"
+set name=com.oracle.info.tpno value=$(TPNO)
+set name=info.classification \
+    value=org.opensolaris.category.2008:Development/Python
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=info.upstream value="Victor Stinner <[email protected]>"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=org.opensolaris.arc-caseid value=PSARC/2015/458
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+#
+file path=usr/lib/python$(PYVER)/vendor-packages/aioeventlet-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
+file path=usr/lib/python$(PYVER)/vendor-packages/aioeventlet-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/aioeventlet-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/aioeventlet-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/aioeventlet-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/aioeventlet.py
+#
+license aioeventlet.license license="Apache v2.0"
+
+# force a dependency on the Python runtime
+depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
+    pkg.debug.depend.path=usr/bin
+
+# force a dependency on the aioeventlet package
+depend type=require \
+    fmri=library/python/aioeventlet@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+
+# force a dependency on trollius; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/trollius-$(PYV)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/aioeventlet/aioeventlet.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,212 @@
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
--- a/components/python/barbicanclient/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/barbicanclient/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		python-barbicanclient
-COMPONENT_VERSION=	3.0.1
+COMPONENT_VERSION=	3.0.3
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:d298ee0fc9e785d44148d4590ac0d9eef05d560e379e98f75a7cb35ed6bfc7c8
+    sha256:959aca2ce3af2eed0f57e2fa9f0f9a484e40adc6b371e2c0fcc588aae9ca2b18
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	https://launchpad.net/python-barbicanclient
 COMPONENT_BUGDB=	service/barbican
 
-TPNO=			21635
+TPNO=			25748
 
 # Depends on keystoneclient which is not Python 3 ready.
 PYTHON_VERSIONS =	$(PYTHON2_VERSIONS)
--- a/components/python/barbicanclient/barbicanclient-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/barbicanclient/barbicanclient-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -19,7 +19,7 @@
 # CDDL HEADER END
 
 #
-# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 set name=pkg.fmri \
@@ -57,6 +57,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/barbicanclient/common/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/barbicanclient/common/config.py
 file path=usr/lib/python$(PYVER)/vendor-packages/barbicanclient/containers.py
+file path=usr/lib/python$(PYVER)/vendor-packages/barbicanclient/exceptions.py
 file path=usr/lib/python$(PYVER)/vendor-packages/barbicanclient/formatter.py
 file path=usr/lib/python$(PYVER)/vendor-packages/barbicanclient/orders.py
 file path=usr/lib/python$(PYVER)/vendor-packages/barbicanclient/secrets.py
@@ -69,7 +70,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/python_barbicanclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_barbicanclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
 #
-license LICENSE license="Apache v2.0"
+license barbicanclient.license license="Apache v2.0"
 
 # force a dependency on the barbicanclient package
 depend type=require \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/barbicanclient/barbicanclient.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,211 @@
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+		                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
--- a/components/python/ceilometerclient/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/ceilometerclient/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		python-ceilometerclient
-COMPONENT_VERSION=	1.0.12
+COMPONENT_VERSION=	1.1.1
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:6a90d1f057ab35584c319f19ef31f49ea8c1bb25278dafdf4b6d64aa37604a8e
+    sha256:f48e2d9ecef25ab784510fa0b299d0d73aa8f41652abf9f28393a93612416a29
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	http://launchpad.net/python-ceilometerclient
 COMPONENT_BUGDB=	service/ceilometer
 
-TPNO=			21727
+TPNO=			25749
 
 # Depends on keystoneclient which is not Python 3 ready.
 PYTHON_VERSIONS=	$(PYTHON2_VERSIONS)
--- a/components/python/ceilometerclient/ceilometerclient-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/ceilometerclient/ceilometerclient-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -53,16 +53,15 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/ceilometerclient/exc.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ceilometerclient/openstack/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ceilometerclient/openstack/common/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ceilometerclient/openstack/common/_i18n.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ceilometerclient/openstack/common/apiclient/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ceilometerclient/openstack/common/apiclient/auth.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ceilometerclient/openstack/common/apiclient/base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ceilometerclient/openstack/common/apiclient/client.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ceilometerclient/openstack/common/apiclient/exceptions.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ceilometerclient/openstack/common/apiclient/fake_client.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ceilometerclient/openstack/common/apiclient/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ceilometerclient/openstack/common/cliutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/ceilometerclient/openstack/common/gettextutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/ceilometerclient/openstack/common/importutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/ceilometerclient/openstack/common/strutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ceilometerclient/openstack/common/uuidutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ceilometerclient/shell.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ceilometerclient/v1/__init__.py
@@ -88,6 +87,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/python_ceilometerclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_ceilometerclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/entry_points.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_ceilometerclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/python_ceilometerclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
 file path=usr/lib/python$(PYVER)/vendor-packages/python_ceilometerclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_ceilometerclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
 #
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/ceilometerclient/patches/01-requirements.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,23 @@
+In-house patch to remove the dependency on argparse.  Since we use
+Python 2.7 only for OpenStack, argparse is already included.  If this
+line is present, stevedore will fail to find the pip package for it,
+causing a cascade of failures to other tools.
+
+--- python-ceilometerclient-1.1.1/requirements.txt.orig	2015-10-19 21:22:33.907035765 -0400
++++ python-ceilometerclient-1.1.1/requirements.txt	2015-10-19 21:23:51.056610220 -0400
+@@ -2,7 +2,6 @@
+ # of appearance. Changing the order has an impact on the overall integration
+ # process, which may cause wedges in the gate later.
+ pbr!=0.7,<1.0,>=0.6
+-argparse
+ iso8601>=0.1.9
+ oslo.i18n<1.6.0,>=1.5.0 # Apache-2.0
+ oslo.serialization<1.5.0,>=1.4.0 # Apache-2.0
+--- python-ceilometerclient-1.1.1/python_ceilometerclient.egg-info/requires.txt.orig	2015-10-19 21:23:12.458006696 -0400
++++ python-ceilometerclient-1.1.1/python_ceilometerclient.egg-info/requires.txt	2015-10-19 21:24:00.200036509 -0400
+@@ -1,5 +1,4 @@
+ pbr!=0.7,<1.0,>=0.6
+-argparse
+ iso8601>=0.1.9
+ oslo.i18n<1.6.0,>=1.5.0 # Apache-2.0
+ oslo.serialization<1.5.0,>=1.4.0 # Apache-2.0
--- a/components/python/cinderclient/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/cinderclient/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,21 +20,21 @@
 #
 
 #
-# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		python-cinderclient
-COMPONENT_VERSION=	1.1.1
+COMPONENT_VERSION=	1.3.1
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:107ff53c9bb9403c4e751b9a949cb84eff483d3378007415066d0c7727a6e37e
+    sha256:59ae1fbeeda7a12ac8635a7cce9bdc5e8bd080707e2dc12d858857713db1d233
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	http://launchpad.net/python-cinderclient
 COMPONENT_BUGDB=	service/cinder
 
-TPNO=			21728
+TPNO=			25750
 
 include $(WS_MAKE_RULES)/prep.mk
 include $(WS_MAKE_RULES)/setup.py.mk
@@ -52,8 +52,8 @@
 
 #
 # Tests require:
-# pyflakes, flake8, hacking, discover, fixtures, python-subunit,
-# sphinx, testtools, testrepository
+# pyflakes, flake8, hacking, discover, mock, python-subunit,
+# sphinx, testrepository
 # which haven't been integrated yet.
 #
 test:		$(NO_TESTS)
--- a/components/python/cinderclient/cinderclient-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/cinderclient/cinderclient-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -97,6 +97,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/cinderclient/v2/contrib/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinderclient/v2/contrib/list_extensions.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinderclient/v2/limits.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinderclient/v2/pools.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinderclient/v2/qos_specs.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinderclient/v2/quota_classes.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinderclient/v2/quotas.py
@@ -107,6 +108,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/cinderclient/v2/volume_encryption_types.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinderclient/v2/volume_snapshots.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinderclient/v2/volume_transfers.py
+file path=usr/lib/python$(PYVER)/vendor-packages/cinderclient/v2/volume_type_access.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinderclient/v2/volume_types.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cinderclient/v2/volumes.py
 file path=usr/lib/python$(PYVER)/vendor-packages/python_cinderclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
@@ -114,6 +116,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/python_cinderclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_cinderclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/entry_points.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_cinderclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/python_cinderclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
 file path=usr/lib/python$(PYVER)/vendor-packages/python_cinderclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_cinderclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
 #
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/cinderclient/patches/01-requirements.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,35 @@
+In-house patch to remove the dependency on argparse.  Since we use
+Python 2.7 only for OpenStack, argparse is already included.  If this
+line is present, stevedore will fail to find the pip package for it,
+causing a cascade of failures to other tools.
+
+Drop the required version of keystoneclient to be the same as Kilo
+global reqs.  This version of cinderclient was cherry picked to
+pull in features that were missed because the cinder team did not
+cut a cinderclient to match the kilo release.
+
+--- python-cinderclient-1.3.1/requirements.txt.orig	2015-11-19 14:55:25.974425490 -0700
++++ python-cinderclient-1.3.1/requirements.txt	2015-11-19 14:56:46.549580080 -0700
+@@ -2,9 +2,8 @@
+ # of appearance. Changing the order has an impact on the overall integration
+ # process, which may cause wedges in the gate later.
+ pbr<2.0,>=0.11
+-argparse
+ PrettyTable<0.8,>=0.7
+-python-keystoneclient>=1.6.0
++python-keystoneclient<1.4.0,>=1.2.0
+ requests>=2.5.2
+ simplejson>=2.2.0
+ Babel>=1.3
+
+--- python-cinderclient-1.3.1/python_cinderclient.egg-info/requires.txt.orig	2015-11-19 14:57:35.202730172 -0700
++++ python-cinderclient-1.3.1/python_cinderclient.egg-info/requires.txt	2015-11-19 14:57:18.307302488 -0700
+@@ -1,7 +1,6 @@
+ pbr<2.0,>=0.11
+-argparse
+ PrettyTable<0.8,>=0.7
+-python-keystoneclient>=1.6.0
++python-keystoneclient<1.4.0,>=1.2.0
+ requests>=2.5.2
+ simplejson>=2.2.0
+ Babel>=1.3
--- a/components/python/cliff/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/cliff/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		cliff
-COMPONENT_VERSION=	1.9.0
+COMPONENT_VERSION=	1.10.1
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:38f731fd585975f4a3aa8025d3be564bb8439fc1e0f96b6b1e442a9e0dc4d1ce
+    sha256:ddfec39bf0de7b53666045c946d495ca070e538e5f92dc19588596c9bcc52c6e
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	https://pypi.python.org/pypi/cliff
 COMPONENT_BUGDB=	python-mod/cliff
 
-TPNO=			21717
+TPNO=			25733
 
 include $(WS_MAKE_RULES)/prep.mk
 include $(WS_MAKE_RULES)/setup.py.mk
--- a/components/python/cliff/cliff-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/cliff/cliff-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -37,11 +37,13 @@
 set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
 set name=org.opensolaris.arc-caseid value=PSARC/2013/251
 set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+#
 file path=usr/lib/python$(PYVER)/vendor-packages/cliff-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
 file path=usr/lib/python$(PYVER)/vendor-packages/cliff-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/cliff-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/cliff-$(COMPONENT_VERSION)-py$(PYVER).egg-info/entry_points.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/cliff-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/cliff-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
 file path=usr/lib/python$(PYVER)/vendor-packages/cliff-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/cliff-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/cliff/__init__.py
@@ -60,6 +62,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/cliff/interactive.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cliff/lister.py
 file path=usr/lib/python$(PYVER)/vendor-packages/cliff/show.py
+#
 license cliff.license license="Apache v2.0, MIT"
 
 # force a group dependency on the optional prettytable; pkgdepend work is needed
--- a/components/python/cliff/cliff.license	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/cliff/cliff.license	Fri Feb 05 17:54:17 2016 -0500
@@ -200,61 +200,25 @@
    See the License for the specific language governing permissions and
    limitations under the License.
 
---------------------------------------------------------------------------------
-
-cliff-1.4/docs/build/html/_static/underscore.js
-
-// (c) 2009 Jeremy Ashkenas, DocumentCloud Inc.
-// Underscore is freely distributable under the terms of the MIT license.
-// Portions of Underscore are inspired by or borrowed from Prototype.js,
-// Oliver Steele's Functional, and John Resig's Micro-Templating.
-// For all details and documentation:
-// http://documentcloud.github.com/underscore/
+==============================================================================
 
---------------------------------------------------------------------------------
-
-cliff-1.4/docs/build/html/_static/jquery.js
+Additional copyrights/licenses seen:
 
-/*!
- * jQuery JavaScript Library v1.4.2
- * http://jquery.com/
- *
- * Copyright 2010, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
-
-Oracle chooses the MIT license.
+setup.py
 
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2010, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Sat Feb 13 22:33:48 2010 -0500
- */
-
-Oracle chooses the MIT license.
-
---------------------------------------------------------------------------------
-
-    The MIT License
+# Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
 
-    Permission is hereby granted, free of charge, to any person
-    obtaining a copy of this software and associated documentation
-    files (the "Software"), to deal in the Software without
-    restriction, including without limitation the rights to use,
-    copy, modify, merge, publish, distribute, sublicense, and/or
-    sell copies of the Software, and to permit persons to whom the
-    Software is furnished to do so, subject to the following conditions:
-
-    The above copyright notice and this permission notice shall be included
-    in all copies or substantial portions of the Software.
-
-    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-    THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-    DEALINGS IN THE SOFTWARE.
+==============================================================================
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/cliff/patches/01-requirements.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,24 @@
+In-house patch to remove the dependency on argparse.  Since we use
+Python 2.7 only for OpenStack, argparse is already included.  If this
+line is present, stevedore will fail to find the pip package for it,
+causing a cascade of failures to other tools.
+
+--- cliff-1.10.1/requirements.txt.orig	2015-03-09 09:58:33.000000000 -0400
++++ cliff-1.10.1/requirements.txt	2015-08-02 16:28:21.450926314 -0400
+@@ -2,7 +2,6 @@
+ # of appearance. Changing the order has an impact on the overall integration
+ # process, which may cause wedges in the gate later.
+ pbr>=0.6,!=0.7,<1.0
+-argparse
+ cmd2>=0.6.7
+ PrettyTable>=0.7,<0.8
+ pyparsing>=2.0.1
+
+--- cliff-1.10.1/cliff.egg-info/requires.txt.orig	2015-03-09 09:58:50.000000000 -0400
++++ cliff-1.10.1/cliff.egg-info/requires.txt	2015-08-02 16:28:21.451475905 -0400
+@@ -1,5 +1,4 @@
+ pbr>=0.6,!=0.7,<1.0
+-argparse
+ cmd2>=0.6.7
+ PrettyTable>=0.7,<0.8
+ pyparsing>=2.0.1
--- a/components/python/django_openstack_auth/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/django_openstack_auth/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		django_openstack_auth
-COMPONENT_VERSION=	1.1.9
+COMPONENT_VERSION=	1.2.0
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:650b3fd528d179a36cf629aa7dad53e03aed6cf9300ea4a337260887e71e9b53
+    sha256:5ad78e5c92502f1abfb10fd101c023adf74a3e728bd42ed19ffea2185680f9a6
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	http://www.openstack.org/
 COMPONENT_BUGDB=	python-mod/openstack-auth
 
-TPNO=			21746
+TPNO=			25734
 
 # Depends on django, which is not Python 3 ready.
 PYTHON_VERSIONS=	$(PYTHON2_VERSIONS)
--- a/components/python/django_openstack_auth/django_openstack_auth-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/django_openstack_auth/django_openstack_auth-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -59,6 +59,10 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_auth/openstack/common/local.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_auth/openstack/common/log.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_auth/openstack/common/policy.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_auth/plugin/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_auth/plugin/base.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_auth/plugin/password.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstack_auth/plugin/token.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_auth/policy.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_auth/urls.py
 file path=usr/lib/python$(PYVER)/vendor-packages/openstack_auth/user.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/django_openstack_auth/patches/02-launchpad-1451934.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,40 @@
+From d19c032abf932a6afc49423dc096fa8238e62687 Mon Sep 17 00:00:00 2001
+From: lin-hua-cheng <[email protected]>
+Date: Tue, 5 May 2015 10:07:45 -0700
+Subject: Set default value for new token attributes
+
+Two new attributes were recently added to token object:
+'unscoped_token' and 'is_federated'. When performing an
+upgrade, the existing token object stored in the session
+will not have the two attributes yet.  This patch fixes
+the issue by providing a default value so it won't interrupt
+service for existing login user during an upgrade.
+
+This fix is included in django_openstack_auth 1.3.0
+
+Change-Id: I6adf974876294168e2326b5e10c14da2dd3e52ea
+Closes-bug: #1451934
+(cherry picked from commit d8f5c949df8adea1e932e9ff3d1f39a1af014d16)
+---
+ openstack_auth/user.py | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/openstack_auth/user.py b/openstack_auth/user.py
+index 811fe84..132e37b 100644
+--- a/openstack_auth/user.py
++++ b/openstack_auth/user.py
+@@ -55,8 +55,9 @@ def create_user_from_token(request, token, endpoint, services_region=None):
+                 roles=token.roles,
+                 endpoint=endpoint,
+                 services_region=svc_region,
+-                is_federated=token.is_federated,
+-                unscoped_token=token.unscoped_token)
++                is_federated=getattr(token, 'is_federated', False),
++                unscoped_token=getattr(token, 'unscoped_token',
++                                       request.session.get('unscoped_token')))
+ 
+ 
+ class Token(object):
+-- 
+cgit v0.11.2
+
--- a/components/python/dnspython/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/dnspython/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,21 +20,21 @@
 #
 
 #
-# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		dnspython
-COMPONENT_VERSION=	1.11.1
+COMPONENT_VERSION=	1.12.0
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).zip
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:fd0fc7a656679a6fd1f83d980fc05776c76e70d66f6ee2aab12a3558fa10a206
+    sha256:63bd1fae61809eedb91f84b2185816fac1270ae51494fbdd36ea25f904a8502f
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	https://pypi.python.org/pypi/dnspython
 COMPONENT_BUGDB=	python-mod/dnspython
 
-TPNO=			17630
+TPNO=			26537
 
 # dnspython is not Python3 ready.  dnspython3 should be used for
 # Python3
--- a/components/python/eventlet/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/eventlet/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		eventlet
-COMPONENT_VERSION=	0.15.2
+COMPONENT_VERSION=	0.17.4
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:eaec368ce7b819f8615dcb51f63dcb5c910538cdedc99e4bba4c90ed0bf70fdc
+    sha256:8721e9714eaff8d20f2407e0d3a80069db6b57c9226c26ee9db25c541d06556d
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	http://eventlet.net/
 COMPONENT_BUGDB=	python-mod/eventlet
 
-TPNO=			21720
+TPNO=			25735
 
 include $(WS_MAKE_RULES)/prep.mk
 include $(WS_MAKE_RULES)/setup.py.mk
--- a/components/python/eventlet/eventlet-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/eventlet/eventlet-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,7 @@
 #
 
 #
-# Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
 #
 
 set name=pkg.fmri \
@@ -44,7 +44,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/api.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/backdoor.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/convenience.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/corolocal.py
@@ -70,20 +69,33 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/asyncore.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/builtin.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/ftplib.py
+file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/http/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/http/client.py
+file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/http/cookiejar.py
+file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/http/cookies.py
+file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/http/server.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/httplib.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/os.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/profile.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/select.py
+file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/selectors.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/socket.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/ssl.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/subprocess.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/thread.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/threading.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/time.py
-file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/urllib.py
+file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/urllib/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/urllib/error.py
+file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/urllib/parse.py
+file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/urllib/request.py
+file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/urllib/response.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/urllib2.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/green/zmq.py
-file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/greenio.py
+file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/greenio/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/greenio/base.py
+file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/greenio/py2.py
+file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/greenio/py3.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/greenpool.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/greenthread.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/hubs/__init__.py
@@ -94,12 +106,8 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/hubs/pyevent.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/hubs/selects.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/hubs/timer.py
-file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/hubs/twistedr.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/patcher.py
-file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/pool.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/pools.py
-file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/proc.py
-file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/processes.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/queue.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/semaphore.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/support/__init__.py
@@ -112,12 +120,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/support/stacklesss.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/timeout.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/tpool.py
-file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/twistedutil/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/twistedutil/join_reactor.py
-file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/twistedutil/protocol.py
-file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/twistedutil/protocols/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/twistedutil/protocols/basic.py
-file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/util.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/websocket.py
 file path=usr/lib/python$(PYVER)/vendor-packages/eventlet/wsgi.py
 license eventlet.license license="MIT, Apache 2.0, BSD"
--- a/components/python/eventlet/eventlet.license	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/eventlet/eventlet.license	Fri Feb 05 17:54:17 2016 -0500
@@ -1,3 +1,6 @@
+
+Unless otherwise noted, the files in Eventlet are under the following MIT license:
+
 Copyright (c) 2005-2006, Bob Ippolito
 Copyright (c) 2007-2010, Linden Research, Inc.
 Copyright (c) 2008-2010, Eventlet Contributors (see AUTHORS)
@@ -20,7 +23,9 @@
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 
---------------------------------------------------------------------------
+==============================================================================
+
+Additional License/Copyrights seen:
 
 # Copyright (c) 2010, CCP Games
 # All rights reserved.
@@ -46,23 +51,43 @@
 # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+==============================================================================
 
---------------------------------------------------------------------------
+eventlet/tpool.py
 
-# Copyright (c) 2009 Denis Bilenko, denis.bilenko at gmail com
+# Copyright (c) 2007-2009, Linden Research, Inc.
+# Copyright (c) 2007, IBM Corp.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+==============================================================================
+
+eventlet/timeout.py
+
+# Copyright (c) 2009-2010 Denis Bilenko, denis.bilenko at gmail com
 # Copyright (c) 2010 Eventlet Contributors (see AUTHORS)
 # and licensed under the MIT license:
-# 
+#
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to deal
 # in the Software without restriction, including without limitation the rights
 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 # copies of the Software, and to permit persons to whom the Software is
 # furnished to do so, subject to the following conditions:
-# 
+#
 # The above copyright notice and this permission notice shall be included in
 # all copies or substantial portions of the Software.
-# 
+#
 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -71,8 +96,31 @@
 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 # THE SOFTWARE.
 
+==============================================================================
 
---------------------------------------------------------------------------
+eventlet/support/six.py
+
+# Copyright (c) 2010-2014 Benjamin Peterson
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+==============================================================================
 
 # Portions of this code taken from the gogreen project:
 #   http://github.com/slideinc/gogreen
@@ -106,21 +154,45 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
---------------------------------------------------------------------------
+==============================================================================
 
 # Copyright (C) 2010 Daniele Varrazzo <[email protected]>
 # and licensed under the MIT license:
-# 
+#
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to deal
 # in the Software without restriction, including without limitation the rights
 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 # copies of the Software, and to permit persons to whom the Software is
 # furnished to do so, subject to the following conditions:
-# 
+#
 # The above copyright notice and this permission notice shall be included in
 # all copies or substantial portions of the Software.
-# 
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+==============================================================================
+
+# Copyright (c) 2009 Denis Bilenko, denis.bilenko at gmail com
+# Copyright (c) 2010 Eventlet Contributors (see AUTHORS)
+# and licensed under the MIT license:
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -129,246 +201,50 @@
 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 # THE SOFTWARE.
 
---------------------------------------------------------------------------
-
-# Copyright (c) 2007-2009, Linden Research, Inc.
-# Copyright (c) 2007, IBM Corp.
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
+==============================================================================
 
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
+# Copyright (c) 2007-2013, Michael Foord & the mock team
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+#       notice, this list of conditions and the following disclaimer.
+#
+#     * Redistributions in binary form must reproduce the above
+#       copyright notice, this list of conditions and the following
+#       disclaimer in the documentation and/or other materials provided
+#       with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   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.
-
-
---------------------------------------------------------------------------
-
-eventlet-0.13.0/tests/mock.py
-
-# Copyright (C) 2007-2009 Michael Foord
-# E-mail: fuzzyman AT voidspace DOT org DOT uk
-
-# mock 0.6.0
-# http://www.voidspace.org.uk/python/mock/
-
-# Released subject to the BSD License
-# Please see http://www.voidspace.org.uk/python/license.shtml
+# Copyright (c) 2007, Linden Research, Inc.
+# Copyright (c) 2007, IBM Corp.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
 
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without 
-modification, are permitted provided that the following conditions are met:
-
-    Redistributions of source code must retain the above copyright notice, this 
-    list of conditions and the following disclaimer.
-
-    Redistributions in binary form must reproduce the above copyright notice, 
-    this list of conditions and the following disclaimer in the documentation 
-    and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+==============================================================================
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/extras/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,51 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+include ../../../make-rules/shared-macros.mk
+
+COMPONENT_NAME=		extras
+COMPONENT_VERSION=	0.0.3
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
+COMPONENT_ARCHIVE_HASH=	\
+    sha256:7a60d84cb661b477c41a5ea35e931ae93860af8cd259ecc0a38a32ef1ae9ffc0
+COMPONENT_ARCHIVE_URL=	$(call pypi_url)
+COMPONENT_PROJECT_URL=	https://github.com/testing-cabal/extras
+COMPONENT_BUGDB=	python-mod/extras
+
+TPNO=			26389
+
+include $(WS_MAKE_RULES)/prep.mk
+include $(WS_MAKE_RULES)/setup.py.mk
+include $(WS_MAKE_RULES)/ips.mk
+
+ASLR_MODE = $(ASLR_NOT_APPLICABLE)
+
+# common targets
+build:		$(BUILD_NO_ARCH)
+
+install:	$(INSTALL_NO_ARCH)
+
+test:		$(NO_TESTS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/extras/extras-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,55 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+set name=pkg.fmri \
+    value=pkg:/library/python/extras-$(PYV)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary value="Useful extra bits for Python"
+set name=pkg.description \
+    value="extras is a set of extensions to the Python standard library, originally written to make the code within testtools cleaner, but now split out for general use outside of a testing context."
+set name=com.oracle.info.description value="the Python extras module"
+set name=com.oracle.info.tpno value=$(TPNO)
+set name=info.classification \
+    value=org.opensolaris.category.2008:Development/Python
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=info.upstream value="Testing cabal <[email protected]>"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=org.opensolaris.arc-caseid value=PSARC/2016/017
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+#
+file path=usr/lib/python$(PYVER)/vendor-packages/extras-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
+file path=usr/lib/python$(PYVER)/vendor-packages/extras-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/extras-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/extras-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/extras/__init__.py
+#
+license LICENSE license=MIT
+
+# force a dependency on the Python runtime
+depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
+    pkg.debug.depend.path=usr/bin
+
+# force a dependency on the extras package
+depend type=require \
+    fmri=library/python/extras@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/fixtures/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,54 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+include ../../../make-rules/shared-macros.mk
+
+COMPONENT_NAME=		fixtures
+COMPONENT_VERSION=	1.0.0
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
+COMPONENT_ARCHIVE_HASH=	\
+    sha256:4494c4862ad99ffb8354f7456f1c9a4ba68b607d9dabb912999d4ad60c7d9f54
+COMPONENT_ARCHIVE_URL=	$(call pypi_url)
+COMPONENT_PROJECT_URL=	https://launchpad.net/python-fixtures
+COMPONENT_BUGDB=	python-mod/fixtures
+
+TPNO=		26001
+
+# Depends on testtools which is not Python 3 ready.
+PYTHON_VERSIONS=	$(PYTHON2_VERSIONS)
+
+include $(WS_MAKE_RULES)/prep.mk
+include $(WS_MAKE_RULES)/setup.py.mk
+include $(WS_MAKE_RULES)/ips.mk
+
+ASLR_MODE = $(ASLR_NOT_APPLICABLE)
+
+# common targets
+build:		$(BUILD_NO_ARCH)
+
+install:	$(INSTALL_NO_ARCH)
+
+test:		$(NO_TESTS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/fixtures/fixtures-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,76 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+set name=pkg.fmri \
+    value=pkg:/library/python/fixtures-$(PYV)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary \
+    value="Fixtures, reusable state for writing clean tests and more."
+set name=pkg.description \
+    value="Fixtures defines a Python contract for reusable state / support logic, primarily for unit testing. Helper and adaption logic is included to make it easy to write your own fixtures using the fixtures contract. Glue code is provided that makes using fixtures that meet the Fixtures contract in unittest compatible test cases easy and straight forward."
+set name=com.oracle.info.description value="the Python fixtures module"
+set name=com.oracle.info.tpno value=$(TPNO)
+set name=info.classification \
+    value=org.opensolaris.category.2008:Development/Python
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=info.upstream value="Robert Collins <[email protected]>"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=org.opensolaris.arc-caseid value=PSARC/2015/538
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+#
+file path=usr/lib/python$(PYVER)/vendor-packages/fixtures-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
+file path=usr/lib/python$(PYVER)/vendor-packages/fixtures-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/fixtures-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/fixtures-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/fixtures-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/fixtures-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/fixtures/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/fixtures/_fixtures/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/fixtures/_fixtures/environ.py
+file path=usr/lib/python$(PYVER)/vendor-packages/fixtures/_fixtures/logger.py
+file path=usr/lib/python$(PYVER)/vendor-packages/fixtures/_fixtures/monkeypatch.py
+file path=usr/lib/python$(PYVER)/vendor-packages/fixtures/_fixtures/packagepath.py
+file path=usr/lib/python$(PYVER)/vendor-packages/fixtures/_fixtures/popen.py
+file path=usr/lib/python$(PYVER)/vendor-packages/fixtures/_fixtures/pythonpackage.py
+file path=usr/lib/python$(PYVER)/vendor-packages/fixtures/_fixtures/pythonpath.py
+file path=usr/lib/python$(PYVER)/vendor-packages/fixtures/_fixtures/streams.py
+file path=usr/lib/python$(PYVER)/vendor-packages/fixtures/_fixtures/tempdir.py
+file path=usr/lib/python$(PYVER)/vendor-packages/fixtures/_fixtures/temphomedir.py
+file path=usr/lib/python$(PYVER)/vendor-packages/fixtures/_fixtures/timeout.py
+file path=usr/lib/python$(PYVER)/vendor-packages/fixtures/callmany.py
+file path=usr/lib/python$(PYVER)/vendor-packages/fixtures/fixture.py
+file path=usr/lib/python$(PYVER)/vendor-packages/fixtures/testcase.py
+#
+license fixtures.license license="Apache 2.0"
+
+# force a dependency on the Python runtime
+depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
+    pkg.debug.depend.path=usr/bin
+
+# force a dependency on the fixtures package
+depend type=require \
+    fmri=library/python/fixtures@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+
+# force a dependency on testtools; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/testtools-$(PYV)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/fixtures/fixtures.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,268 @@
+Fixtures is licensed under two licenses, the Apache License, Version 2.0
+or the 3-clause BSD License. You may use this project under either of these
+licenses - choose the one that works best for you.
+
+We require contributions to be licensed under both licenses. The primary
+difference between them is that the Apache license takes care of potential
+issues with Patents and other intellectual property concerns that some users
+or contributors may find important.
+
+Generally every source file in Fixtures needs a license grant under both
+these licenses.  As the code is shipped as a single unit, a brief form is used:
+----
+Copyright (c) [yyyy][,yyyy]* [name or 'Fixtures Contributors']
+
+Licensed under either the Apache License, Version 2.0 or the BSD 3-clause
+license at the users choice. A copy of both licenses are available in the
+project source as Apache-2.0 and BSD. You may not use this file except in
+compliance with one of these two licences.
+
+Unless required by applicable law or agreed to in writing, software
+distributed under these licenses is distributed on an "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+license you chose for the specific language governing permissions and
+limitations under that license.
+----
+
+Code that has been incorporated into Fixtures from other projects will
+naturally be under its own license, and will retain that license.
+
+A known list of such code is maintained here:
+* No entries.
+
+=================================================================
+
+BSD:
+
+Copyright (c) Robert Collins and Fixtures contributors
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of Robert Collins nor the names of Subunit contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY ROBERT COLLINS AND SUBUNIT CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+=================================================================
+
+Apache-2.0:
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
--- a/components/python/glance_store/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/glance_store/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		glance_store
-COMPONENT_VERSION=	0.1.10
+COMPONENT_VERSION=	0.4.0
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:b390fea864f1398f79ab66ce99c3b868b86ac1bf97dbe89ba4498506e2af7d02
+    sha256:cd15e9f9a08dc8d3eeaa452682c8e53423f848eaadf064c0ee8068583aa31154
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	https://github.com/openstack/glance_store
 COMPONENT_BUGDB=	python-mod/glance_store
 
-TPNO=			21623
+TPNO=			25736
 
 # Depends on oslo.vmware which is not Python 3 ready.
 PYTHON_VERSIONS=	$(PYTHON2_VERSIONS)
--- a/components/python/glance_store/glance_store-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/glance_store/glance_store-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,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.
 #
 
 set name=pkg.fmri \
@@ -46,6 +46,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/glance_store-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/glance_store-$(COMPONENT_VERSION)-py$(PYVER).egg-info/entry_points.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/glance_store-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/glance_store-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
 file path=usr/lib/python$(PYVER)/vendor-packages/glance_store-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/glance_store-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/glance_store/__init__.py
@@ -62,6 +63,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/glance_store/_drivers/swift/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance_store/_drivers/vmware_datastore.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance_store/backend.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance_store/capabilities.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance_store/common/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance_store/common/auth.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance_store/common/config.py
@@ -69,14 +71,14 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/glance_store/driver.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance_store/exceptions.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glance_store/i18n.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glance_store/locale/glance_store-log-critical.pot
+file path=usr/lib/python$(PYVER)/vendor-packages/glance_store/locale/glance_store-log-error.pot
+file path=usr/lib/python$(PYVER)/vendor-packages/glance_store/locale/glance_store-log-info.pot
+file path=usr/lib/python$(PYVER)/vendor-packages/glance_store/locale/glance_store-log-warning.pot
+file path=usr/lib/python$(PYVER)/vendor-packages/glance_store/locale/glance_store.pot
 file path=usr/lib/python$(PYVER)/vendor-packages/glance_store/location.py
-file path=usr/lib/python$(PYVER)/vendor-packages/glance_store/openstack/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/glance_store/openstack/common/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/glance_store/openstack/common/_i18n.py
-file path=usr/lib/python$(PYVER)/vendor-packages/glance_store/openstack/common/context.py
-file path=usr/lib/python$(PYVER)/vendor-packages/glance_store/openstack/common/processutils.py
 #
-license LICENSE license="Apache v2.0"
+license glance_store.license license="Apache v2.0"
 
 # force a group dependency on the optional boto; pkgdepend work is needed to
 # flush this out.
@@ -98,6 +100,9 @@
 depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
     pkg.debug.depend.path=usr/bin
 
+# force a dependency on enum; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/enum-$(PYV)
+
 # force a dependency on eventlet; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/eventlet-$(PYV)
 
@@ -108,9 +113,15 @@
 # force a dependency on httplib2; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/httplib2-$(PYV)
 
+# force a dependency on jsonschema; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/jsonschema-$(PYV)
+
 # force a dependency on ordereddict; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/ordereddict-$(PYV)
 
+# force a dependency on oslo.concurrency; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/oslo.concurrency-$(PYV)
+
 # force a dependency on oslo.config; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/oslo.config-$(PYV)
 
--- a/components/python/glance_store/glance_store.license	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/glance_store/glance_store.license	Fri Feb 05 17:54:17 2016 -0500
@@ -8,13 +8,13 @@
 
 See the License for the specific language governing permissions and limitations under the License.
 
-		                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
+    		    	         Apache License
+			   Version 2.0, January 2004
+			http://www.apache.org/licenses/
 
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+  TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
 
-   1. Definitions.
+  1. Definitions.
 
       "License" shall mean the terms and conditions for use, reproduction,
       and distribution as defined by Sections 1 through 9 of this document.
@@ -183,29 +183,514 @@
       incurred by, or claims asserted against, such Contributor by reason
       of your accepting any such warranty or additional liability.
 
-   END OF TERMS AND CONDITIONS
+============================================================
+
+setup.py
+
+# Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+============================================================
+
+glance_store/locale/it/LC_MESSAGES/glance_store-log-error.po
+glance_store/locale/vi_VN/LC_MESSAGES/glance_store-log-error.po
+glance_store/locale/es/LC_MESSAGES/glance_store-log-error.po
+glance_store/locale/pt_BR/LC_MESSAGES/glance_store-log-error.po
+glance_store/locale/zh_CN/LC_MESSAGES/glance_store-log-error.po
+glance_store/locale/en_AU/LC_MESSAGES/glance_store-log-error.po
+glance_store/locale/ko_KR/LC_MESSAGES/glance_store-log-error.po
+glance_store/locale/fr/LC_MESSAGES/glance_store-log-error.po
+glance_store/locale/ja/LC_MESSAGES/glance_store-log-error.po
+
+# Translations template for glance_store.
+# Copyright (C) 2014 ORGANIZATION
+# This file is distributed under the same license as the glance_store
+# project.
+#
+# Translators:
+
+============================================================
+
+glance_store/locale/en_GB/LC_MESSAGES/glance_store-log-critical.po
+glance_store/locale/en_GB/LC_MESSAGES/glance_store-log-error.po
+
+# Translations template for heat.
+# Copyright (C) 2014 ORGANIZATION
+# This file is distributed under the same license as the heat project.
+#
+# Translators:
+# Andi Chandler <[email protected]>, 2014
+============================================================
+
+glance_store/locale/glance_store-log-critical.pot
+glance_store/locale/glance_store-log-warning.pot
+glance_store/locale/glance_store-log-error.pot
+glance_store/locale/glance_store-log-info.pot
+glance_store/locale/glance_store.pot
 
-   APPENDIX: How to apply the Apache License to your work.
+# Translations template for glance_store.
+# Copyright (C) 2014 ORGANIZATION
+# This file is distributed under the same license as the glance_store
+# project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+#
+============================================================
+
+glance_store/locale/en_AU/LC_MESSAGES/glance_store-log-error.po
+
+# Translations template for glance_store.
+# Copyright (C) 2014 ORGANIZATION
+# This file is distributed under the same license as the glance_store
+# project.
+#
+# Translators:
+# Andreas Jaeger <[email protected]>, 2014
+============================================================
+
+glance_store/locale/de/LC_MESSAGES/glance_store-log-error.po
+
+# Translations template for glance_store.
+# Copyright (C) 2014 ORGANIZATION
+# This file is distributed under the same license as the glance_store
+# project.
+#
+# Translators:
+# Andreas Jaeger <[email protected]>, 2014
+============================================================
+
+glance_store/__init__.py
+glance_store/exceptions.py
+glance_store/tests/utils.py
+glance_store/tests/fakes.py
+glance_store/i18n.py
+glance_store/_drivers/swift/__init__.py
+
+# Copyright 2014 Red Hat, Inc.
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+============================================================
+
+glance_store/location.py
+glance_store/openstack/common/timeutils.py
+glance_store/openstack/common/fileutils.py
+glance_store/openstack/common/processutils.py
+glance_store/openstack/common/importutils.py
+glance_store/openstack/common/strutils.py
+glance_store/openstack/common/local.py
+glance_store/openstack/common/context.py
+glance_store/common/config.py
+glance_store/common/auth.py
+tests/unit/test_swift_store.py
+tests/unit/test_s3_store.py
+tests/unit/test_filesystem_store.py
 
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
+# Copyright 2011 OpenStack Foundation
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+glance_store/openstack/common/gettextutils.py
+
+# Copyright 2012 Red Hat, Inc.
+# Copyright 2013 IBM Corp.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+
+glance_store/openstack/common/__init__.py
+
+#
+#    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.
+============================================================
+
+glance_store/openstack/common/jsonutils.py
+
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# Copyright 2011 Justin Santa Barbara
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+glance_store/openstack/common/log.py
+
+# Copyright 2011 OpenStack Foundation.
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+glance_store/openstack/common/excutils.py
+
+# Copyright 2011 OpenStack Foundation.
+# Copyright 2012, Red Hat, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+glance_store/openstack/common/units.py
+
+# Copyright 2013 IBM Corp
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+glance_store/_drivers/s3.py
+glance_store/_drivers/http.py
 
-   Copyright [yyyy] [name of copyright owner]
+# Copyright 2010 OpenStack Foundation
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+glance_store/_drivers/swift/utils.py
+
+#    Copyright 2014 Rackspace
+#
+#    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.
+============================================================
+
+glance_store/_drivers/swift/store.py
+glance_store/backend.py
+tests/unit/test_http_store.py
+
+# Copyright 2010-2011 OpenStack Foundation
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+glance_store/_drivers/filesystem.py
 
-   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
+# Copyright 2010 OpenStack Foundation
+# Copyright 2014 Red Hat, Inc.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+glance_store/_drivers/vmware_datastore.py
+tests/unit/test_vmware_store.py
+
+# Copyright 2014 OpenStack, LLC
+# 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.
+============================================================
+
+glance_store/_drivers/cinder.py
+
+#    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.
+============================================================
+
+glance_store/_drivers/sheepdog.py
+
+# Copyright 2013 Taobao Inc.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+glance_store/_drivers/rbd.py
 
-       http://www.apache.org/licenses/LICENSE-2.0
+# Copyright 2010-2011 Josh Durgin
+# 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.
+============================================================
+
+glance_store/_drivers/gridfs.py
+
+# Copyright 2013 Red Hat, Inc
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+glance_store/driver.py
+
+# Copyright 2011 OpenStack Foundation
+# Copyright 2012 RedHat Inc.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+glance_store/common/utils.py
 
-   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.
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+glance_store/tests/base.py
+
+# Copyright 2011 OpenStack Foundation
+# Copyright 2014 Red Hat, Inc
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+tests/unit/test_rbd_store.py
+tests/unit/test_cinder_store.py
+tests/unit/test_sheepdog_store.py
+tests/unit/test_gridfs_store.py
+
+# Copyright 2013 OpenStack Foundation
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+tests/unit/test_store_base.py
+
+# Copyright 2011-2013 OpenStack Foundation
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
--- a/components/python/glance_store/patches/no-tests.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/glance_store/patches/no-tests.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -3,8 +3,8 @@
 is printed in some of the Glance service logs. Not suitable for the
 upstream.
 
---- glance_store-0.1.10/setup.cfg.orig	2014-11-17 12:15:39.000000000 -0800
-+++ glance_store-0.1.10/setup.cfg	2015-01-27 09:38:35.386243430 -0800
+--- glance_store-0.4.0/setup.cfg.orig	2014-11-17 12:15:39.000000000 -0800
++++ glance_store-0.4.0/setup.cfg	2015-01-27 09:38:35.386243430 -0800
 @@ -33,8 +33,6 @@ glance_store.drivers =
  	cinder = glance_store._drivers.cinder:Store
  	gridfs = glance_store._drivers.gridfs:Store
--- a/components/python/glanceclient/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/glanceclient/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		python-glanceclient
-COMPONENT_VERSION=	0.15.0
+COMPONENT_VERSION=	0.17.2
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:491805e7ef2f35aaafd124af6f49347a440c4e8fa5f4fb0dd61f0666eee360d0
+    sha256:56ca8fe2c4f33d9dd9b045073bdd0dba09b1f6ef7af978175966d262678ecd0e
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	http://launchpad.net/python-glanceclient
 COMPONENT_BUGDB=	service/glance
 
-TPNO=			21731
+TPNO=			25751
 
 # Depends on keystoneclient & oslo.utils which are not Python 3 ready.
 PYTHON_VERSIONS=	$(PYTHON2_VERSIONS)
--- a/components/python/glanceclient/glanceclient-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/glanceclient/glanceclient-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,7 @@
 #
 
 #
-# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
 #
 
 set name=pkg.fmri \
@@ -46,6 +46,7 @@
 #
 file path=usr/bin/glance-$(PYVER)
 file path=usr/lib/python$(PYVER)/vendor-packages/glanceclient/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glanceclient/_i18n.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glanceclient/client.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glanceclient/common/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glanceclient/common/base.py
@@ -57,15 +58,14 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/glanceclient/exc.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glanceclient/openstack/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glanceclient/openstack/common/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glanceclient/openstack/common/_i18n.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glanceclient/openstack/common/apiclient/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glanceclient/openstack/common/apiclient/auth.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glanceclient/openstack/common/apiclient/base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glanceclient/openstack/common/apiclient/client.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glanceclient/openstack/common/apiclient/exceptions.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glanceclient/openstack/common/apiclient/fake_client.py
-file path=usr/lib/python$(PYVER)/vendor-packages/glanceclient/openstack/common/gettextutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/glanceclient/openstack/common/importutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/glanceclient/openstack/common/strutils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/glanceclient/openstack/common/apiclient/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glanceclient/shell.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glanceclient/v1/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/glanceclient/v1/client.py
@@ -86,6 +86,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/python_glanceclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_glanceclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/entry_points.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_glanceclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/python_glanceclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
 file path=usr/lib/python$(PYVER)/vendor-packages/python_glanceclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_glanceclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
 #
@@ -116,6 +117,9 @@
 # out.
 depend type=require fmri=library/python/keystoneclient-$(PYV)
 
+# 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.utils; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/oslo.utils-$(PYV)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/glanceclient/patches/01-requirements.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,24 @@
+In-house patch to remove the dependency on argparse.  Since we use
+Python 2.7 only for OpenStack, argparse is already included.  If this
+line is present, stevedore will fail to find the pip package for it,
+causing a cascade of failures to other tools.
+
+--- python-glanceclient-0.17.2/requirements.txt.orig	2015-10-19 22:00:13.091897213 -0400
++++ python-glanceclient-0.17.2/requirements.txt	2015-10-19 22:01:07.126301076 -0400
+@@ -3,7 +3,6 @@
+ # process, which may cause wedges in the gate later.
+ pbr!=0.7,<1.0,>=0.6
+ Babel>=1.3
+-argparse
+ PrettyTable<0.8,>=0.7
+ python-keystoneclient<1.4.0,>=1.2.0
+ pyOpenSSL>=0.11
+--- python-glanceclient-0.17.2/python_glanceclient.egg-info/requires.txt.orig	2015-10-19 22:00:38.507115182 -0400
++++ python-glanceclient-0.17.2/python_glanceclient.egg-info/requires.txt	2015-10-19 22:00:51.990643082 -0400
+@@ -1,6 +1,5 @@
+ pbr!=0.7,<1.0,>=0.6
+ Babel>=1.3
+-argparse
+ PrettyTable<0.8,>=0.7
+ python-keystoneclient<1.4.0,>=1.2.0
+ pyOpenSSL>=0.11
--- a/components/python/greenlet/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/greenlet/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,7 @@
 #
 
 #
-# Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 COMPILER =	gcc
@@ -28,16 +28,16 @@
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		greenlet
-COMPONENT_VERSION=	0.4.5
+COMPONENT_VERSION=	0.4.9
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).zip
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:b990f00f120c4cfb6672eec2acd32210990a2c7b70b815c034d1d8cbf08e2dbe
+    sha256:58b2f3a2e7075c655616bf95e82868db4980f3bb6661db70ad02a51e4ddd2252
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	https://github.com/python-greenlet/greenlet
 COMPONENT_BUGDB=	python-mod/greenlet
 
-TPNO=			21721
+TPNO=			26538
 
 include $(WS_MAKE_RULES)/prep.mk
 include $(WS_MAKE_RULES)/setup.py.mk
--- a/components/python/heatclient/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/heatclient/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		python-heatclient
-COMPONENT_VERSION=	0.2.12
+COMPONENT_VERSION=	0.4.0
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:e9d5b74206b322ce30184a1b132a78b8be1806be85c77361fb72a966c4c48afe
+    sha256:1b71e2bb5c380ac6b2e1f07b48b7b3e82e7364cc43255ed696c795ab5f8d5a1d
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	http://launchpad.net/python-heatclient
 COMPONENT_BUGDB=	service/heat
 
-TPNO=			21733
+TPNO=			25752
 
 # Depends on keystoneclient which is not Python 3 ready.
 PYTHON_VERSIONS=	$(PYTHON2_VERSIONS)
--- a/components/python/heatclient/heatclient-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/heatclient/heatclient-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -48,6 +48,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/client.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/common/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/common/deployment_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/common/environment_format.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/common/http.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/common/template_format.py
@@ -56,19 +57,15 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/exc.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/openstack/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/openstack/common/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/openstack/common/_i18n.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/openstack/common/apiclient/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/openstack/common/apiclient/auth.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/openstack/common/apiclient/base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/openstack/common/apiclient/client.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/openstack/common/apiclient/exceptions.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/openstack/common/apiclient/fake_client.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/openstack/common/apiclient/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/openstack/common/cliutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/openstack/common/gettextutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/openstack/common/importutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/openstack/common/jsonutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/openstack/common/strutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/openstack/common/timeutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/openstack/common/uuidutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/shell.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/v1/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/v1/actions.py
@@ -77,6 +74,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/v1/events.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/v1/resource_types.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/v1/resources.py
+file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/v1/services.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/v1/shell.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/v1/software_configs.py
 file path=usr/lib/python$(PYVER)/vendor-packages/heatclient/v1/software_deployments.py
@@ -86,15 +84,12 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/python_heatclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_heatclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/entry_points.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_heatclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/python_heatclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
 file path=usr/lib/python$(PYVER)/vendor-packages/python_heatclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_heatclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
 #
 license LICENSE license="Apache v2.0"
 
-# force a group dependency on the optional anyjson; pkgdepend work is needed to
-# flush this out.
-depend type=group fmri=library/python/anyjson-$(PYV)
-
 # force a group dependency on the optional simplejson; pkgdepend work is needed
 # to flush this out.
 depend type=group fmri=library/python/simplejson-$(PYV)
@@ -102,9 +97,6 @@
 # force a dependency on argparse; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/argparse-$(PYV)
 
-# force a dependency on babel; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/babel-$(PYV)
-
 # force a dependency on the heatclient package
 depend type=require \
     fmri=library/python/heatclient@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
@@ -116,15 +108,21 @@
 # out.
 depend type=require fmri=library/python/keystoneclient-$(PYV)
 
+# 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.serialization; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/oslo.serialization-$(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 pbr; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/pbr-$(PYV)
 
 # 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 pyyaml; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/pyyaml-$(PYV)
-
 # force a dependency on requests; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/requests-$(PYV)
 
@@ -133,3 +131,8 @@
 
 # force a dependency on stevedore; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/stevedore-$(PYV)
+
+# force a dependency on swiftclient; pkgdepend work is needed to flush this
+# out.
+depend type=require fmri=library/python/swiftclient-$(PYV)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/heatclient/patches/01-requirements.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,24 @@
+In-house patch to remove the dependency on argparse.  Since we use
+Python 2.7 only for OpenStack, argparse is already included.  If this
+line is present, stevedore will fail to find the pip package for it,
+causing a cascade of failures to other tools.
+
+--- python-heatclient-0.4.0/requirements.txt.orig	2015-10-19 22:19:56.430433886 -0400
++++ python-heatclient-0.4.0/requirements.txt	2015-10-19 22:21:01.984674272 -0400
+@@ -4,7 +4,6 @@
+ 
+ Babel>=1.3
+ pbr>=0.6,!=0.7,<1.0
+-argparse
+ iso8601>=0.1.9
+ PrettyTable>=0.7,<0.8
+ oslo.i18n>=1.5.0,<1.6.0  # Apache-2.0
+--- python-heatclient-0.4.0/python_heatclient.egg-info/requires.txt.orig	2015-10-19 22:20:35.968945850 -0400
++++ python-heatclient-0.4.0/python_heatclient.egg-info/requires.txt	2015-10-19 22:20:44.657091042 -0400
+@@ -1,6 +1,5 @@
+ Babel>=1.3
+ pbr>=0.6,!=0.7,<1.0
+-argparse
+ iso8601>=0.1.9
+ PrettyTable>=0.7,<0.8
+ oslo.i18n>=1.5.0,<1.6.0  # Apache-2.0
--- a/components/python/ironicclient/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/ironicclient/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		python-ironicclient
-COMPONENT_VERSION=	0.3.3
+COMPONENT_VERSION=	0.5.1
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:224b6c2ed2ee3b358684640f83ab1c7425a1d030e39a96a78d06c499adbe586e
+    sha256:91dca5039ca06d6dcd74a132a261db1d85ebf6dcdfb9d7cee4efff657f6729d6
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	https://launchpad.net/python-ironicclient
 COMPONENT_BUGDB=	service/ironic
 
-TPNO=			22204
+TPNO=			25753
 
 # Depends on keystoneclient which is not Python 3 ready.
 PYTHON_VERSIONS=	$(PYTHON2_VERSIONS)
--- a/components/python/ironicclient/ironicclient-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/ironicclient/ironicclient-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,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.
 #
 
 set name=pkg.fmri \
@@ -50,6 +50,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/ironicclient/common/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironicclient/common/base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironicclient/common/http.py
+file path=usr/lib/python$(PYVER)/vendor-packages/ironicclient/common/i18n.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironicclient/common/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironicclient/exc.py
 file path=usr/lib/python$(PYVER)/vendor-packages/ironicclient/openstack/__init__.py
@@ -89,7 +90,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/python_ironicclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_ironicclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
 #
-license LICENSE license="Apache 2.0"
+license ironicclient.license license="Apache 2.0"
 
 # force a group dependency on the optional simplejson; pkgdepend work is needed
 # to flush this out.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/ironicclient/ironicclient.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,530 @@
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+
+
+============================================================
+ironicclient/client.py
+ironicclient/shell.py
+ironicclient/tests/keystone_client_fixtures.py
+ironicclient/tests/test_client.py
+ironicclient/tests/test_shell.py
+ironicclient/tests/test_import.py
+ironicclient/openstack/common/apiclient/utils.py
+ironicclient/openstack/common/_i18n.py
+ironicclient/exc.py
+ironicclient/v1/shell.py
+
+#    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.
+
+============================================================
+ironicclient/openstack/common/apiclient/client.py
+
+# Copyright 2010 Jacob Kaplan-Moss
+# Copyright 2011 OpenStack Foundation
+# Copyright 2011 Piston Cloud Computing, Inc.
+# Copyright 2013 Alessio Ababilov
+# Copyright 2013 Grid Dynamics
+# Copyright 2013 OpenStack Foundation
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironicclient/openstack/common/apiclient/exceptions.py
+
+# Copyright 2010 Jacob Kaplan-Moss
+# Copyright 2011 Nebula, Inc.
+# Copyright 2013 Alessio Ababilov
+# Copyright 2013 OpenStack Foundation
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironicclient/openstack/common/apiclient/base.py
+
+# Copyright 2010 Jacob Kaplan-Moss
+# Copyright 2011 OpenStack Foundation
+# Copyright 2012 Grid Dynamics
+# Copyright 2013 OpenStack Foundation
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironicclient/openstack/common/importutils.py
+ironicclient/openstack/common/strutils.py
+
+# Copyright 2011 OpenStack Foundation.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironicclient/common/utils.py
+ironicclient/common/http.py
+ironicclient/common/base.py
+ironicclient/tests/test_http.py
+ironicclient/tests/utils.py
+ironicclient/v1/client.py
+
+# Copyright 2012 OpenStack LLC.
+# 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.
+
+============================================================
+ironicclient/openstack/common/uuidutils.py
+
+# Copyright (c) 2012 Intel Corporation.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironicclient/openstack/common/cliutils.py
+
+# Copyright 2012 Red Hat, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironicclient/openstack/common/gettextutils.py
+
+# Copyright 2012 Red Hat, Inc.
+# Copyright 2013 IBM Corp.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironicclient/tests/test_utils.py
+ironicclient/openstack/common/apiclient/fake_client.py
+
+# Copyright 2013 OpenStack LLC.
+# 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.
+
+============================================================
+setup.py
+ironicclient/__init__.py
+ironicclient/tests/v1/test_node.py
+ironicclient/v1/node.py
+
+# Copyright 2013 Hewlett-Packard Development Company, L.P.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironicclient/tests/v1/test_chassis_shell.py
+ironicclient/tests/v1/test_port_shell.py
+ironicclient/tests/v1/test_node_shell.py
+
+# Copyright 2013 IBM Corp
+#
+#   Licensed under the Apache License, Version 2.0 (the "License"); you may
+#   not use this file except in compliance with the License. You may obtain
+#   a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#   WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#   License for the specific language governing permissions and limitations
+#   under the License.
+
+============================================================
+ironicclient/tests/v1/test_driver.py
+ironicclient/tests/v1/test_port.py
+ironicclient/tests/v1/test_chassis.py
+ironicclient/v1/driver.py
+ironicclient/v1/node_shell.py
+ironicclient/v1/chassis.py
+ironicclient/v1/driver_shell.py
+ironicclient/v1/port.py
+ironicclient/v1/chassis_shell.py
+ironicclient/v1/port_shell.py
+
+# Copyright 2013 Red Hat, Inc.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironicclient/openstack/common/apiclient/auth.py
+
+# Copyright 2013 OpenStack Foundation
+# Copyright 2013 Spanish National Research Council.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+tools/install_venv_common.py
+
+# Copyright 2013 OpenStack Foundation
+# Copyright 2013 IBM Corp.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+ironicclient/tests/v1/test_driver_shell.py
+
+# Copyright 2014 Hewlett-Packard Development Company, L.P.
+#
+#   Licensed under the Apache License, Version 2.0 (the "License"); you may
+#   not use this file except in compliance with the License. You may obtain
+#   a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#   WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#   License for the specific language governing permissions and limitations
+#   under the License.
+
+============================================================
+ironicclient/v1/resource_fields.py
+
+# Copyright 2014 Red Hat, Inc.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
--- a/components/python/ironicclient/patches/01-boot-device-wanboot.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/ironicclient/patches/01-boot-device-wanboot.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,15 +1,15 @@
 Add wanboot to list of potentially supported boot devices.
 
---- python-ironicclient-0.3.2/ironicclient/v1/node_shell.py.~1~	2014-12-10 11:10:37.000000000 -0800
-+++ python-ironicclient-0.3.2/ironicclient/v1/node_shell.py	2015-01-09 00:10:16.660604875 -0800
-@@ -344,8 +344,8 @@ def do_node_set_console_mode(cc, args):
+--- ORIGINAL/ironicclient/v1/node_shell.py	2015-06-03 14:28:54.964047000 +0100
++++ python-ironicclient-0.5.1/ironicclient/v1/node_shell.py	2015-06-03 14:32:08.040441131 +0100
+@@ -383,8 +383,8 @@
  @cliutils.arg(
      'device',
-     metavar='<boot device>',
+     metavar='<boot-device>',
 -    choices=['pxe', 'disk', 'cdrom', 'bios', 'safe'],
--    help="Supported boot devices:  'pxe', 'disk', 'cdrom', 'bios', 'safe'")
+-    help="'pxe', 'disk', 'cdrom', 'bios', or 'safe'.")
 +    choices=['pxe', 'disk', 'cdrom', 'bios', 'safe', 'wanboot'],
-+    help="Supported boot devices:  'pxe', 'disk', 'cdrom', 'bios', 'safe', 'wanboot'")
++    help="'pxe', 'disk', 'cdrom', 'bios', 'safe' or 'wanboot'.")
  @cliutils.arg(
      '--persistent',
      dest='persistent',
--- a/components/python/keystoneclient/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/keystoneclient/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		python-keystoneclient
-COMPONENT_VERSION=	1.0.0
+COMPONENT_VERSION=	1.3.3
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:6d960d2196efc7a181519a77f757a27ceeeac71f41f624318ae7f1088d2e6db4
+	sha256:a1ecb2fd2631a64cfb8bd6bc5adcf19bfcdc488023e05082dc73dc18013a6f7e
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	http://launchpad.net/python-keystoneclient
 COMPONENT_BUGDB=	service/keystone
 
-TPNO=			21732
+TPNO=			25754
 
 # Depends on netaddr & python-memcached which are not Python 3 ready.
 PYTHON_VERSIONS=	$(PYTHON2_VERSIONS)
--- a/components/python/keystoneclient/keystoneclient-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/keystoneclient/keystoneclient-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -56,13 +56,18 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/auth/cli.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/auth/conf.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/auth/identity/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/auth/identity/access.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/auth/identity/base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/auth/identity/generic/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/auth/identity/generic/base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/auth/identity/generic/password.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/auth/identity/generic/token.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/auth/identity/v2.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/auth/identity/v3.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/auth/identity/v3/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/auth/identity/v3/base.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/auth/identity/v3/federated.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/auth/identity/v3/password.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/auth/identity/v3/token.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/auth/token_endpoint.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/baseclient.py
@@ -89,8 +94,11 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/generic/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/generic/client.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/generic/shell.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/hacking/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/hacking/checks.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/httpclient.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/i18n.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/locale/keystoneclient.pot
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/middleware/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/middleware/auth_token.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/middleware/memcache_crypt.py
@@ -112,6 +120,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/shell.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/v2_0/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/v2_0/certificates.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/v2_0/client.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/v2_0/ec2.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/v2_0/endpoints.py
@@ -135,6 +144,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/v3/contrib/federation/mappings.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/v3/contrib/federation/projects.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/v3/contrib/federation/protocols.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/v3/contrib/federation/service_providers.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/v3/contrib/oauth1/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/v3/contrib/oauth1/access_tokens.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/v3/contrib/oauth1/auth.py
@@ -142,6 +152,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/v3/contrib/oauth1/core.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/v3/contrib/oauth1/request_tokens.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/v3/contrib/oauth1/utils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/v3/contrib/simple_cert.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/v3/contrib/trusts.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/v3/credentials.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystoneclient/v3/domains.py
@@ -189,6 +200,9 @@
 # force a dependency on argparse; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/argparse-$(PYV)
 
+# force a dependency on iso8601; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/iso8601-$(PYV)
+
 # force a dependency on the keystoneclient package
 depend type=require \
     fmri=library/python/keystoneclient@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/keystoneclient/patches/01-requirements.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,23 @@
+In-house patch to remove the dependency on argparse.  Since we use
+Python 2.7 only for OpenStack, argparse is already included.  If this
+line is present, stevedore will fail to find the pip package for it,
+causing a cascade of failures to other tools.
+
+--- python-keystoneclient-1.3.3/requirements.txt.orig	2015-11-16 10:45:24.623755300 -0500
++++ python-keystoneclient-1.3.3/requirements.txt	2015-11-16 10:45:47.401243897 -0500
+@@ -4,7 +4,6 @@
+ 
+ pbr!=0.7,<1.0,>=0.6
+ 
+-argparse
+ Babel>=1.3
+ iso8601>=0.1.9
+ netaddr>=0.7.12
+--- python-keystoneclient-1.3.3/python_keystoneclient.egg-info/requires.txt.orig	2015-11-16 10:49:10.149423272 -0500
++++ python-keystoneclient-1.3.3/python_keystoneclient.egg-info/requires.txt	2015-11-16 10:45:39.585509328 -0500
+@@ -1,5 +1,4 @@
+ pbr!=0.7,<1.0,>=0.6
+-argparse
+ Babel>=1.3
+ iso8601>=0.1.9
+ netaddr>=0.7.12
--- a/components/python/keystoneclient/patches/CVE-2015-1852.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-This upstream patch addresses CVE-2015-1852 in keystoneclient. It
-should be able to be removed when keystoneclient 1.4.0 or later is
-integrated.
-
-From 710402426c6bda2fe9d9b4fde2f5b54f1790a60e Mon Sep 17 00:00:00 2001
-From: Brant Knudson <[email protected]>
-Date: Tue, 7 Apr 2015 19:38:29 +0000
-Subject: [PATCH] Fix s3_token middleware parsing insecure option
-
-The "insecure" option was being treated as a bool when it was
-actually provided as a string. The fix is to parse the string to
-a bool.
-
-Closes-Bug: 1411063
-Change-Id: Id674f40532215788675c97a8fdfa91d4420347b3
----
-
---- python-keystoneclient-1.0.0/keystoneclient/middleware/s3_token.py.~1~	2014-12-18 09:37:35.000000000 -0800
-+++ python-keystoneclient-1.0.0/keystoneclient/middleware/s3_token.py	2015-04-14 14:23:08.294228633 -0700
-@@ -34,6 +34,7 @@ This WSGI component:
- import logging
- 
- from oslo.serialization import jsonutils
-+from oslo.utils import strutils
- import requests
- import six
- from six.moves import urllib
-@@ -116,7 +117,7 @@ class S3Token(object):
-         self.request_uri = '%s://%s:%s' % (auth_protocol, auth_host, auth_port)
- 
-         # SSL
--        insecure = conf.get('insecure', False)
-+        insecure = strutils.bool_from_string(conf.get('insecure', False))
-         cert_file = conf.get('certfile')
-         key_file = conf.get('keyfile')
- 
---- python-keystoneclient-1.0.0/keystoneclient/tests/test_s3_token_middleware.py.~1~	2014-12-18 09:37:35.000000000 -0800
-+++ python-keystoneclient-1.0.0/keystoneclient/tests/test_s3_token_middleware.py	2015-04-14 14:23:09.919217052 -0700
-@@ -124,7 +124,7 @@ class S3TokenMiddlewareTestGood(S3TokenM
-     @mock.patch.object(requests, 'post')
-     def test_insecure(self, MOCK_REQUEST):
-         self.middleware = (
--            s3_token.filter_factory({'insecure': True})(FakeApp()))
-+            s3_token.filter_factory({'insecure': 'True'})(FakeApp()))
- 
-         text_return_value = jsonutils.dumps(GOOD_RESPONSE)
-         if six.PY3:
-@@ -142,6 +142,28 @@ class S3TokenMiddlewareTestGood(S3TokenM
-         mock_args, mock_kwargs = MOCK_REQUEST.call_args
-         self.assertIs(mock_kwargs['verify'], False)
- 
-+    def test_insecure_option(self):
-+        # insecure is passed as a string.
-+
-+        # Some non-secure values.
-+        true_values = ['true', 'True', '1', 'yes']
-+        for val in true_values:
-+            config = {'insecure': val, 'certfile': 'false_ind'}
-+            middleware = s3_token.filter_factory(config)(FakeApp())
-+            self.assertIs(False, middleware.verify)
-+
-+        # Some "secure" values, including unexpected value.
-+        false_values = ['false', 'False', '0', 'no', 'someweirdvalue']
-+        for val in false_values:
-+            config = {'insecure': val, 'certfile': 'false_ind'}
-+            middleware = s3_token.filter_factory(config)(FakeApp())
-+            self.assertEqual('false_ind', middleware.verify)
-+
-+        # Default is secure.
-+        config = {'certfile': 'false_ind'}
-+        middleware = s3_token.filter_factory(config)(FakeApp())
-+        self.assertIs('false_ind', middleware.verify)
-+
- 
- class S3TokenMiddlewareTestBad(S3TokenMiddlewareTestBase):
-     def setUp(self):
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/keystoneclient/patches/launchpad-1455673.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,31 @@
+From 7cf319e79002681ff7914a84bbc1e9af93d93e0f Mon Sep 17 00:00:00 2001
+From: Eric Brown <[email protected]>
+Date: Fri, 15 May 2015 14:54:16 -0700
+Subject: Typo in openstack client help
+
+The openstack client output for the help of --os-user-id states
+"longin" instead of "login".  The openstack client gets it's help
+output from the keystoneclient.
+
+Change-Id: I7c92a82cd60b2835d98101200cf641b46dd145b4
+Closes-Bug: #1455673
+---
+ keystoneclient/auth/identity/v2.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/keystoneclient/auth/identity/v2.py b/keystoneclient/auth/identity/v2.py
+index 8eaa9c5..c25ddfd 100644
+--- a/keystoneclient/auth/identity/v2.py
++++ b/keystoneclient/auth/identity/v2.py
+@@ -153,7 +153,7 @@ class Password(Auth):
+                        dest='username',
+                        deprecated_name='username',
+                        help='Username to login with'),
+-            cfg.StrOpt('user-id', help='User ID to longin with'),
++            cfg.StrOpt('user-id', help='User ID to login with'),
+             cfg.StrOpt('password', secret=True, help='Password to use'),
+         ])
+ 
+-- 
+cgit v0.11.2
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/keystoneclient/patches/launchpad-1498247.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,81 @@
+From 13bb2f74b0d65c1fef30f77d710d56e51e5f7841 Mon Sep 17 00:00:00 2001
+From: Monty Taylor <[email protected]>
+Date: Thu, 19 Nov 2015 10:22:31 -0500
+Subject: Swap the order of username deprecation
+
+The attempt at a move to user-name is an exercise in churn, and is
+filling everyone's logs with admonitions to change the name of their
+variables - which does not work if they do. Swap this, effectively
+reverting the attempt at a move. user-name will continue to work on
+the off chance anyone started consuming that path, which is unlikely
+because none of the consuming programs expose that as an actual option.
+
+Closes-Bug: 1498247
+
+Change-Id: I62d991fda1df63c9cbabfde2f6836bc031f5147c
+---
+
+--- python-keystoneclient-1.3.3/keystoneclient/auth/identity/generic/password.py.~1~	2015-11-10 11:46:38.000000000 -0800
++++ python-keystoneclient-1.3.3/keystoneclient/auth/identity/generic/password.py	2016-01-18 22:51:57.246982116 -0800
+@@ -26,8 +26,8 @@ LOG = logging.getLogger(__name__)
+ def get_options():
+     return [
+         cfg.StrOpt('user-id', help='User id'),
+-        cfg.StrOpt('user-name', dest='username', help='Username',
+-                   deprecated_name='username'),
++        cfg.StrOpt('username', dest='username', help='Username',
++                   deprecated_name='user-name'),
+         cfg.StrOpt('user-domain-id', help="User's domain id"),
+         cfg.StrOpt('user-domain-name', help="User's domain name"),
+         cfg.StrOpt('password', help="User's password"),
+--- python-keystoneclient-1.3.3/keystoneclient/auth/identity/v2.py.~2~	2016-01-18 22:51:57.231526891 -0800
++++ python-keystoneclient-1.3.3/keystoneclient/auth/identity/v2.py	2016-01-18 22:51:57.247726713 -0800
+@@ -149,9 +149,9 @@ class Password(Auth):
+         options = super(Password, cls).get_options()
+ 
+         options.extend([
+-            cfg.StrOpt('user-name',
++            cfg.StrOpt('username',
+                        dest='username',
+-                       deprecated_name='username',
++                       deprecated_name='user-name',
+                        help='Username to login with'),
+             cfg.StrOpt('user-id', help='User ID to login with'),
+             cfg.StrOpt('password', secret=True, help='Password to use'),
+--- python-keystoneclient-1.3.3/keystoneclient/auth/identity/v3/password.py.~1~	2015-11-10 11:46:38.000000000 -0800
++++ python-keystoneclient-1.3.3/keystoneclient/auth/identity/v3/password.py	2016-01-18 22:51:57.248446510 -0800
+@@ -78,8 +78,8 @@ class Password(base.AuthConstructor):
+ 
+         options.extend([
+             cfg.StrOpt('user-id', help='User ID'),
+-            cfg.StrOpt('user-name', dest='username', help='Username',
+-                       deprecated_name='username'),
++            cfg.StrOpt('username', dest='username', help='Username',
++                       deprecated_name='user-name'),
+             cfg.StrOpt('user-domain-id', help="User's domain id"),
+             cfg.StrOpt('user-domain-name', help="User's domain name"),
+             cfg.StrOpt('password', secret=True, help="User's password"),
+--- python-keystoneclient-1.3.3/keystoneclient/contrib/auth/v3/saml2.py.~1~	2015-11-10 11:46:38.000000000 -0800
++++ python-keystoneclient-1.3.3/keystoneclient/contrib/auth/v3/saml2.py	2016-01-18 22:51:57.249700774 -0800
+@@ -72,8 +72,8 @@ class _BaseSAMLPlugin(v3.AuthConstructor
+             cfg.StrOpt('identity-provider', help="Identity Provider's name"),
+             cfg.StrOpt('identity-provider-url',
+                        help="Identity Provider's URL"),
+-            cfg.StrOpt('user-name', dest='username', help='Username',
+-                       deprecated_name='username'),
++            cfg.StrOpt('username', dest='username', help='Username',
++                       deprecated_name='user-name'),
+             cfg.StrOpt('password', help='Password')
+         ])
+         return options
+--- python-keystoneclient-1.3.3/keystoneclient/tests/unit/auth/test_password.py.~1~	2015-11-10 11:46:38.000000000 -0800
++++ python-keystoneclient-1.3.3/keystoneclient/tests/unit/auth/test_password.py	2016-01-18 22:51:57.250527060 -0800
+@@ -43,7 +43,7 @@ class PasswordTests(utils.GenericPluginT
+     def test_options(self):
+         opts = [o.name for o in self.PLUGIN_CLASS.get_options()]
+ 
+-        allowed_opts = ['user-name',
++        allowed_opts = ['username',
+                         'user-domain-id',
+                         'user-domain-name',
+                         'user-id',
--- a/components/python/keystoneclient/patches/nopycrypto.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/keystoneclient/patches/nopycrypto.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,8 +1,8 @@
 In-house removal of PyCrypto dependency in keystoneclient. This patch
 is Solaris-specific and not suitable for upstream.
 
---- python-keystoneclient-1.0.0/keystoneclient/middleware/memcache_crypt.py.~1~	2014-12-18 09:37:35.000000000 -0800
-+++ python-keystoneclient-1.0.0/keystoneclient/middleware/memcache_crypt.py	2015-01-31 23:38:16.649757111 -0800
+--- python-keystoneclient-1.3.0/keystoneclient/middleware/memcache_crypt.py.~1~	2015-03-25 14:00:24.000000000 -0600
++++ python-keystoneclient-1.3.0/keystoneclient/middleware/memcache_crypt.py	2015-04-27 17:29:37.082689412 -0600
 @@ -17,7 +17,7 @@
  Utilities for memcache encryption and integrity check.
  
@@ -25,7 +25,7 @@
  except ImportError:
      AES = None
  
-@@ -72,6 +73,13 @@ class CryptoUnavailableError(Exception):
+@@ -72,6 +73,12 @@ class CryptoUnavailableError(Exception):
      pass
  
  
@@ -35,11 +35,10 @@
 +    """
 +    pass
 +
-+
  def assert_crypto_availability(f):
      """Ensure Crypto module is available."""
  
-@@ -131,31 +139,44 @@ def sign_data(key, data):
+@@ -131,31 +138,44 @@ def sign_data(key, data):
      return base64.b64encode(mac)
  
  
--- a/components/python/keystonemiddleware/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/keystonemiddleware/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		keystonemiddleware
-COMPONENT_VERSION=	1.3.1
+COMPONENT_VERSION=	1.5.2
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:0daaa16673bd664c8deeb58b3885ed8ae43dec07464c08f4e886c724cbd5c075
+	sha256:5f443162157946d2f33c4729d0bde55291f12963b0f1ee553984aedd8a509d51
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	http://launchpad.net/keystonemiddleware
 COMPONENT_BUGDB=	python-mod/keystonemiddle
 
-TPNO=			21624
+TPNO=			25737
 
 # Depends on keystoneclient which is not Python 3 ready.
 PYTHON_VERSIONS=	$(PYTHON2_VERSIONS)
--- a/components/python/keystonemiddleware/keystonemiddleware-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/keystonemiddleware/keystonemiddleware-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,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.
 #
 
 set name=pkg.fmri \
@@ -50,20 +50,28 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware/_memcache_crypt.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware/_memcache_pool.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware/audit.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware/auth_token.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware/auth_token/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware/auth_token/_auth.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware/auth_token/_base.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware/auth_token/_cache.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware/auth_token/_exceptions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware/auth_token/_identity.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware/auth_token/_memcache_crypt.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware/auth_token/_revocations.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware/auth_token/_signing_dir.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware/auth_token/_user_plugin.py
+file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware/auth_token/_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware/ec2_token.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware/i18n.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware/openstack/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware/openstack/common/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware/openstack/common/context.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware/openstack/common/memorycache.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware/opts.py
 file path=usr/lib/python$(PYVER)/vendor-packages/keystonemiddleware/s3_token.py
 #
-license LICENSE license="Apache v2.0"
+license keystonemiddleware.license license="Apache v2.0"
 
 # force a group dependency on the optional m2crypto; pkgdepend work is needed to
 # flush this out.
@@ -92,6 +100,9 @@
 # force a dependency on oslo.config; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/oslo.config-$(PYV)
 
+# force a dependency on oslo.context; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/oslo.context-$(PYV)
+
 # force a dependency on oslo.i18n; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/oslo.i18n-$(PYV)
 
@@ -102,6 +113,9 @@
 # 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 pbr; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/pbr-$(PYV)
+
 # force a dependency on pycadf; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/pycadf-$(PYV)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/keystonemiddleware/keystonemiddleware.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,554 @@
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+
+Copyright (c) 2009 Jacob Kaplan-Moss - initial codebase (Copyright (c) 2011 Rackspace - OpenStack extensions (>= v2.1)
+Copyright (c) 2011 Nebula, Inc - Keystone refactor (>= v2.7)
+All rights reserved.
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+--- License for python-keystoneclient versions prior to 2.1 ---
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    1. Redistributions of source code must retain the above copyright notice,
+       this list of conditions and the following disclaimer.
+
+    2. Redistributions in binary form must reproduce the above copyright
+       notice, this list of conditions and the following disclaimer in the
+       documentation and/or other materials provided with the distribution.
+
+    3. Neither the name of this project nor the names of its contributors may
+    be used to endorse or promote products derived from this software without
+    specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+============================================================
+
+tools/install_venv_common.py
+
+# Copyright 2013 OpenStack Foundation
+# Copyright 2013 IBM Corp.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+examples/pki/gen_cmsz.py
+keystonemiddleware/openstack/common/__init__.py
+keystonemiddleware/tests/utils.py
+keystonemiddleware/tests/test_connection_pool.py
+keystonemiddleware/tests/test_memcache_crypt.py
+
+# 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.
+============================================================
+
+examples/pki/run_all.sh
+examples/pki/gen_pki.sh
+keystonemiddleware/tests/test_s3_token_middleware.py
+keystonemiddleware/tests/test_auth_token_middleware.py
+
+# Copyright 2012 OpenStack Foundation
+#
+# 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.
+============================================================
+
+setup.py
+
+#!/usr/bin/env python
+# Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# 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.
+============================================================
+
+doc/source/middlewarearchitecture.rst
+      Copyright 2011-2013 OpenStack Foundation
+      All Rights Reserved.
+
+      Licensed under the Apache License, Version 2.0 (the "License"); you may
+      not use this file except in compliance with the License. You may obtain
+      a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+      License for the specific language governing permissions and limitations
+      under the License.
+============================================================
+
+doc/ext/apidoc.py
+keystonemiddleware/opts.py
+keystonemiddleware/tests/test_opts.py
+
+# Copyright 2014 OpenStack Foundation
+#
+# 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.
+============================================================
+
+keystonemiddleware/auth_token.py
+
+# Copyright 2010-2012 OpenStack Foundation
+#
+# 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.
+============================================================
+
+keystonemiddleware/_memcache_pool.py
+
+# Copyright 2014 Mirantis Inc
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+============================================================
+
+keystonemiddleware/s3_token.py
+
+# Copyright 2012 OpenStack Foundation
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# Copyright 2011,2012 Akira YOSHIYAMA <[email protected]>
+# 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.
+============================================================
+
+keystonemiddleware/ec2_token.py
+
+# Copyright 2012 OpenStack Foundation
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+============================================================
+
+keystonemiddleware/openstack/common/gettextutils.py
+
+# Copyright 2012 Red Hat, Inc.
+# Copyright 2013 IBM Corp.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+keystonemiddleware/openstack/common/importutils.py
+keystonemiddleware/openstack/common/timeutils.py
+keystonemiddleware/openstack/common/strutils.py
+
+# Copyright 2011 OpenStack Foundation.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+keystonemiddleware/openstack/common/memorycache.py
+
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+keystonemiddleware/openstack/common/jsonutils.py
+
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# Copyright 2011 Justin Santa Barbara
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+
+keystonemiddleware/_memcache_crypt.py
+
+# Copyright 2010-2013 OpenStack Foundation
+#
+# 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.
+
+============================================================
+
+keystonemiddleware/tests/client_fixtures.py
+
+# Copyright 2013 OpenStack Foundation
+#
+# 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.
+============================================================
+
+
+--- License for python-keystoneclient versions prior to 2.1 ---
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+3. Neither the name of this project nor the names of its contributors may
+be used to endorse or promote products derived from this software without
+specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--- a/components/python/keystonemiddleware/patches/CVE-2015-1852.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-This upstream patch addresses CVE-2015-1852 in keystonemiddleware. It
-should be able to be removed when keystoneclient 1.6.0 or later is
-integrated.
-
-From 59f720ccc9a92da025baf7dc692e8e582ebfae0a Mon Sep 17 00:00:00 2001
-From: Brant Knudson <[email protected]>
-Date: Mon, 23 Mar 2015 18:19:18 -0500
-Subject: [PATCH] Fix s3_token middleware parsing insecure option
-
-The "insecure" option was being treated as a bool when it was
-actually provided as a string. The fix is to parse the string to
-a bool.
-
-Closes-Bug: 1411063
-Change-Id: Id674f40532215788675c97a8fdfa91d4420347b3
----
- keystonemiddleware/s3_token.py                     |    3 ++-
- .../tests/test_s3_token_middleware.py              |   24 +++++++++++++++++++-
- 2 files changed, 25 insertions(+), 2 deletions(-)
-
-diff --git a/keystonemiddleware/s3_token.py b/keystonemiddleware/s3_token.py
-index 37bcf4c..6c716c3 100644
---- a/keystonemiddleware/s3_token.py
-+++ b/keystonemiddleware/s3_token.py
-@@ -35,6 +35,7 @@ import logging
- import webob
- 
- from oslo.serialization import jsonutils
-+from oslo.utils import strutils
- import requests
- import six
- from six.moves import urllib
-@@ -116,7 +117,7 @@ class S3Token(object):
-                                             auth_port)
- 
-         # SSL
--        insecure = conf.get('insecure', False)
-+        insecure = strutils.bool_from_string(conf.get('insecure', False))
-         cert_file = conf.get('certfile')
-         key_file = conf.get('keyfile')
- 
-diff --git a/keystonemiddleware/tests/test_s3_token_middleware.py b/keystonemiddleware/tests/test_s3_token_middleware.py
-index bf94391..6545fa3 100644
---- a/keystonemiddleware/tests/test_s3_token_middleware.py
-+++ b/keystonemiddleware/tests/test_s3_token_middleware.py
-@@ -124,7 +124,7 @@ class S3TokenMiddlewareTestGood(S3TokenMiddlewareTestBase):
-     @mock.patch.object(requests, 'post')
-     def test_insecure(self, MOCK_REQUEST):
-         self.middleware = (
--            s3_token.filter_factory({'insecure': True})(FakeApp()))
-+            s3_token.filter_factory({'insecure': 'True'})(FakeApp()))
- 
-         text_return_value = jsonutils.dumps(GOOD_RESPONSE)
-         if six.PY3:
-@@ -142,6 +142,28 @@ class S3TokenMiddlewareTestGood(S3TokenMiddlewareTestBase):
-         mock_args, mock_kwargs = MOCK_REQUEST.call_args
-         self.assertIs(mock_kwargs['verify'], False)
- 
-+    def test_insecure_option(self):
-+        # insecure is passed as a string.
-+
-+        # Some non-secure values.
-+        true_values = ['true', 'True', '1', 'yes']
-+        for val in true_values:
-+            config = {'insecure': val, 'certfile': 'false_ind'}
-+            middleware = s3_token.filter_factory(config)(FakeApp())
-+            self.assertIs(False, middleware._verify)
-+
-+        # Some "secure" values, including unexpected value.
-+        false_values = ['false', 'False', '0', 'no', 'someweirdvalue']
-+        for val in false_values:
-+            config = {'insecure': val, 'certfile': 'false_ind'}
-+            middleware = s3_token.filter_factory(config)(FakeApp())
-+            self.assertEqual('false_ind', middleware._verify)
-+
-+        # Default is secure.
-+        config = {'certfile': 'false_ind'}
-+        middleware = s3_token.filter_factory(config)(FakeApp())
-+        self.assertIs('false_ind', middleware._verify)
-+
- 
- class S3TokenMiddlewareTestBad(S3TokenMiddlewareTestBase):
-     def setUp(self):
--- 
-1.7.9.2
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/keystonemiddleware/patches/CVE-2015-7546.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,601 @@
+From 70eeda3e06f5422aa953a38fe93d302079d7cc21 Mon Sep 17 00:00:00 2001
+From: Brant Knudson <[email protected]>
+Date: Tue, 1 Dec 2015 16:08:00 -0600
+Subject: [PATCH] auth_token verify revocation by audit_id
+
+If the revocation list includes audit_ids, then when doing offline
+validation also validate the token isn't revoked by audit_id.
+
+Backport notes:
+- test_auth_token_middleware was refactored with commit 9cbd47b to
+  check responses differently, so the test changed to use the old
+  method.
+- reno was not supported so the release note is removed.
+
+Closes-Bug: 1490804
+Conflicts:
+	keystonemiddleware/auth_token/__init__.py
+
+(cherry picked from commit 96ab58e6863c92575ada57615b19652e502adfd8)
+Change-Id: I483bc57bd38eb81a0905bcaf94e4ea82604919d6
+---
+ examples/pki/cms/auth_token_scoped.json            |   5 +-
+ examples/pki/cms/auth_token_scoped.pem             | 148 ++++++++--------
+ examples/pki/cms/auth_token_scoped.pkiz            |   2 +-
+ examples/pki/cms/auth_v3_token_scoped.json         |   3 +
+ examples/pki/cms/auth_v3_token_scoped.pem          | 190 +++++++++++----------
+ examples/pki/cms/auth_v3_token_scoped.pkiz         |   2 +-
+ keystonemiddleware/auth_token/__init__.py          |  12 ++
+ keystonemiddleware/auth_token/_revocations.py      |  22 +++
+ .../tests/auth_token/test_auth_token_middleware.py |  26 +++
+ .../tests/auth_token/test_revocations.py           |  47 ++++-
+ 10 files changed, 283 insertions(+), 174 deletions(-)
+
+diff --git a/examples/pki/cms/auth_token_scoped.json b/examples/pki/cms/auth_token_scoped.json
+index 698e01d..cf18fa1 100644
+--- a/examples/pki/cms/auth_token_scoped.json
++++ b/examples/pki/cms/auth_token_scoped.json
+@@ -8,7 +8,10 @@
+                 "enabled": true,
+                 "description": null,
+                 "name": "tenant_name1"
+-            }
++            },
++            "audit_ids": [
++                "SLIXlXQUQZWUi9VJrqdXqA"
++            ]
+         },
+         "serviceCatalog": [
+             {
+diff --git a/examples/pki/cms/auth_token_scoped.pem b/examples/pki/cms/auth_token_scoped.pem
+index 4a5b3a2..68f5049 100644
+--- a/examples/pki/cms/auth_token_scoped.pem
++++ b/examples/pki/cms/auth_token_scoped.pem
+@@ -1,75 +1,77 @@
+ -----BEGIN CMS-----
+-MIINhwYJKoZIhvcNAQcCoIINeDCCDXQCAQExCTAHBgUrDgMCGjCCC5QGCSqGSIb3
+-DQEHAaCCC4UEgguBew0KICAgICJhY2Nlc3MiOiB7DQogICAgICAgICJ0b2tlbiI6
+-IHsNCiAgICAgICAgICAgICJleHBpcmVzIjogIjIwMzgtMDEtMThUMjE6MTQ6MDda
+-IiwNCiAgICAgICAgICAgICJpZCI6ICJwbGFjZWhvbGRlciIsDQogICAgICAgICAg
+-ICAidGVuYW50Ijogew0KICAgICAgICAgICAgICAgICJpZCI6ICJ0ZW5hbnRfaWQx
+-IiwNCiAgICAgICAgICAgICAgICAiZW5hYmxlZCI6IHRydWUsDQogICAgICAgICAg
+-ICAgICAgImRlc2NyaXB0aW9uIjogbnVsbCwNCiAgICAgICAgICAgICAgICAibmFt
+-ZSI6ICJ0ZW5hbnRfbmFtZTEiDQogICAgICAgICAgICB9DQogICAgICAgIH0sDQog
+-ICAgICAgICJzZXJ2aWNlQ2F0YWxvZyI6IFsNCiAgICAgICAgICAgIHsNCiAgICAg
+-ICAgICAgICAgICAiZW5kcG9pbnRzX2xpbmtzIjogW10sDQogICAgICAgICAgICAg
+-ICAgImVuZHBvaW50cyI6IFsNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAg
+-ICAgICAgICAgICAgICAgICAgImFkbWluVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6
+-ODc3Ni92MS82NGI2ZjNmYmNjNTM0MzVlOGE2MGZjZjg5YmI2NjE3YSIsDQogICAg
+-ICAgICAgICAgICAgICAgICAgICAicmVnaW9uIjogInJlZ2lvbk9uZSIsDQogICAg
+-ICAgICAgICAgICAgICAgICAgICAiaW50ZXJuYWxVUkwiOiAiaHR0cDovLzEyNy4w
+-LjAuMTo4Nzc2L3YxLzY0YjZmM2ZiY2M1MzQzNWU4YTYwZmNmODliYjY2MTdhIiwN
+-CiAgICAgICAgICAgICAgICAgICAgICAgICJwdWJsaWNVUkwiOiAiaHR0cDovLzEy
+-Ny4wLjAuMTo4Nzc2L3YxLzY0YjZmM2ZiY2M1MzQzNWU4YTYwZmNmODliYjY2MTdh
+-Ig0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgXSwNCiAg
+-ICAgICAgICAgICAgICAidHlwZSI6ICJ2b2x1bWUiLA0KICAgICAgICAgICAgICAg
+-ICJuYW1lIjogInZvbHVtZSINCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICB7
+-DQogICAgICAgICAgICAgICAgImVuZHBvaW50c19saW5rcyI6IFtdLA0KICAgICAg
+-ICAgICAgICAgICJlbmRwb2ludHMiOiBbDQogICAgICAgICAgICAgICAgICAgIHsN
+-CiAgICAgICAgICAgICAgICAgICAgICAgICJhZG1pblVSTCI6ICJodHRwOi8vMTI3
+-LjAuMC4xOjkyOTIvdjEiLA0KICAgICAgICAgICAgICAgICAgICAgICAgInJlZ2lv
+-biI6ICJyZWdpb25PbmUiLA0KICAgICAgICAgICAgICAgICAgICAgICAgImludGVy
+-bmFsVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6OTI5Mi92MSIsDQogICAgICAgICAg
+-ICAgICAgICAgICAgICAicHVibGljVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6OTI5
+-Mi92MSINCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIF0s
+-DQogICAgICAgICAgICAgICAgInR5cGUiOiAiaW1hZ2UiLA0KICAgICAgICAgICAg
+-ICAgICJuYW1lIjogImdsYW5jZSINCiAgICAgICAgICAgIH0sDQogICAgICAgICAg
+-ICB7DQogICAgICAgICAgICAgICAgImVuZHBvaW50c19saW5rcyI6IFtdLA0KICAg
+-ICAgICAgICAgICAgICJlbmRwb2ludHMiOiBbDQogICAgICAgICAgICAgICAgICAg
+-IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICJhZG1pblVSTCI6ICJodHRwOi8v
+-MTI3LjAuMC4xOjg3NzQvdjEuMS82NGI2ZjNmYmNjNTM0MzVlOGE2MGZjZjg5YmI2
+-NjE3YSIsDQogICAgICAgICAgICAgICAgICAgICAgICAicmVnaW9uIjogInJlZ2lv
+-bk9uZSIsDQogICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJuYWxVUkwiOiAi
+-aHR0cDovLzEyNy4wLjAuMTo4Nzc0L3YxLjEvNjRiNmYzZmJjYzUzNDM1ZThhNjBm
+-Y2Y4OWJiNjYxN2EiLA0KICAgICAgICAgICAgICAgICAgICAgICAgInB1YmxpY1VS
+-TCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzQvdjEuMS82NGI2ZjNmYmNjNTM0MzVl
+-OGE2MGZjZjg5YmI2NjE3YSINCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg
+-ICAgICAgICAgIF0sDQogICAgICAgICAgICAgICAgInR5cGUiOiAiY29tcHV0ZSIs
+-DQogICAgICAgICAgICAgICAgIm5hbWUiOiAibm92YSINCiAgICAgICAgICAgIH0s
+-DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgImVuZHBvaW50c19saW5r
+-cyI6IFtdLA0KICAgICAgICAgICAgICAgICJlbmRwb2ludHMiOiBbDQogICAgICAg
+-ICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICJhZG1pblVS
+-TCI6ICJodHRwOi8vMTI3LjAuMC4xOjM1MzU3L3YyLjAiLA0KICAgICAgICAgICAg
+-ICAgICAgICAgICAgInJlZ2lvbiI6ICJSZWdpb25PbmUiLA0KICAgICAgICAgICAg
+-ICAgICAgICAgICAgImludGVybmFsVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6MzUz
+-NTcvdjIuMCIsDQogICAgICAgICAgICAgICAgICAgICAgICAicHVibGljVVJMIjog
+-Imh0dHA6Ly8xMjcuMC4wLjE6NTAwMC92Mi4wIg0KICAgICAgICAgICAgICAgICAg
+-ICB9DQogICAgICAgICAgICAgICAgXSwNCiAgICAgICAgICAgICAgICAidHlwZSI6
+-ICJpZGVudGl0eSIsDQogICAgICAgICAgICAgICAgIm5hbWUiOiAia2V5c3RvbmUi
+-DQogICAgICAgICAgICB9DQogICAgICAgIF0sDQogICAgICAgICJ1c2VyIjogew0K
+-ICAgICAgICAgICAgInVzZXJuYW1lIjogInVzZXJfbmFtZTEiLA0KICAgICAgICAg
+-ICAgInJvbGVzX2xpbmtzIjogWw0KICAgICAgICAgICAgICAgICJyb2xlMSIsDQog
+-ICAgICAgICAgICAgICAgInJvbGUyIg0KICAgICAgICAgICAgXSwNCiAgICAgICAg
+-ICAgICJpZCI6ICJ1c2VyX2lkMSIsDQogICAgICAgICAgICAicm9sZXMiOiBbDQog
+-ICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJy
+-b2xlMSINCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIHsNCiAg
+-ICAgICAgICAgICAgICAgICAgIm5hbWUiOiAicm9sZTIiDQogICAgICAgICAgICAg
+-ICAgfQ0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgICJuYW1lIjogInVzZXJf
+-bmFtZTEiDQogICAgICAgIH0NCiAgICB9DQp9DQoxggHKMIIBxgIBATCBpDCBnjEK
+-MAgGA1UEBRMBNTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRIwEAYDVQQHEwlT
+-dW5ueXZhbGUxEjAQBgNVBAoTCU9wZW5TdGFjazERMA8GA1UECxMIS2V5c3RvbmUx
+-JTAjBgkqhkiG9w0BCQEWFmtleXN0b25lQG9wZW5zdGFjay5vcmcxFDASBgNVBAMT
+-C1NlbGYgU2lnbmVkAgERMAcGBSsOAwIaMA0GCSqGSIb3DQEBAQUABIIBAGFaC8Po
+-svBez6wHfGxgqtX+Zk7kFH0xu/JA7fWp8L5e1k1q+wsSII/P6rATOXR8BSPwifat
+-mKRan9kzerLeb3A5g07VphvHfVkDEVaeihi33bpt7140ELSKu/ogWQPtasjBM9Eb
+-M9pS4N5NCtZ0erE5DgX//IRfrHFdZuhIbwlmei72692PV7Q70t/rbaH8ofIrH7Rz
+-Z1Kuvj0+7tELgd52wy5YnU0e879OEj+2qUk30TvqRG9jdKxLSanmR/8dSA2eNNgO
+-oHrtXc4EmpWFbP6yVxNwK3dQ6OvU4virV1YW5+De2ApLt+IeojaVPGnDPfsRvY5x
+-t0eIwpDqkgvkRP8=
++MIIN5QYJKoZIhvcNAQcCoIIN1jCCDdICAQExDTALBglghkgBZQMEAgEwggvqBgkq
++hkiG9w0BBwGgggvbBIIL13sNCiAgICAiYWNjZXNzIjogew0KICAgICAgICAidG9r
++ZW4iOiB7DQogICAgICAgICAgICAiZXhwaXJlcyI6ICIyMDM4LTAxLTE4VDIxOjE0
++OjA3WiIsDQogICAgICAgICAgICAiaWQiOiAicGxhY2Vob2xkZXIiLA0KICAgICAg
++ICAgICAgInRlbmFudCI6IHsNCiAgICAgICAgICAgICAgICAiaWQiOiAidGVuYW50
++X2lkMSIsDQogICAgICAgICAgICAgICAgImVuYWJsZWQiOiB0cnVlLA0KICAgICAg
++ICAgICAgICAgICJkZXNjcmlwdGlvbiI6IG51bGwsDQogICAgICAgICAgICAgICAg
++Im5hbWUiOiAidGVuYW50X25hbWUxIg0KICAgICAgICAgICAgfSwNCiAgICAgICAg
++ICAgICJhdWRpdF9pZHMiOiBbDQogICAgICAgICAgICAgICAgIlNMSVhsWFFVUVpX
++VWk5VkpycWRYcUEiDQogICAgICAgICAgICBdDQogICAgICAgIH0sDQogICAgICAg
++ICJzZXJ2aWNlQ2F0YWxvZyI6IFsNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAg
++ICAgICAiZW5kcG9pbnRzX2xpbmtzIjogW10sDQogICAgICAgICAgICAgICAgImVu
++ZHBvaW50cyI6IFsNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAg
++ICAgICAgICAgICAgImFkbWluVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6ODc3Ni92
++MS82NGI2ZjNmYmNjNTM0MzVlOGE2MGZjZjg5YmI2NjE3YSIsDQogICAgICAgICAg
++ICAgICAgICAgICAgICAicmVnaW9uIjogInJlZ2lvbk9uZSIsDQogICAgICAgICAg
++ICAgICAgICAgICAgICAiaW50ZXJuYWxVUkwiOiAiaHR0cDovLzEyNy4wLjAuMTo4
++Nzc2L3YxLzY0YjZmM2ZiY2M1MzQzNWU4YTYwZmNmODliYjY2MTdhIiwNCiAgICAg
++ICAgICAgICAgICAgICAgICAgICJwdWJsaWNVUkwiOiAiaHR0cDovLzEyNy4wLjAu
++MTo4Nzc2L3YxLzY0YjZmM2ZiY2M1MzQzNWU4YTYwZmNmODliYjY2MTdhIg0KICAg
++ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgXSwNCiAgICAgICAg
++ICAgICAgICAidHlwZSI6ICJ2b2x1bWUiLA0KICAgICAgICAgICAgICAgICJuYW1l
++IjogInZvbHVtZSINCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICB7DQogICAg
++ICAgICAgICAgICAgImVuZHBvaW50c19saW5rcyI6IFtdLA0KICAgICAgICAgICAg
++ICAgICJlbmRwb2ludHMiOiBbDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAg
++ICAgICAgICAgICAgICAgICAgICJhZG1pblVSTCI6ICJodHRwOi8vMTI3LjAuMC4x
++OjkyOTIvdjEiLA0KICAgICAgICAgICAgICAgICAgICAgICAgInJlZ2lvbiI6ICJy
++ZWdpb25PbmUiLA0KICAgICAgICAgICAgICAgICAgICAgICAgImludGVybmFsVVJM
++IjogImh0dHA6Ly8xMjcuMC4wLjE6OTI5Mi92MSIsDQogICAgICAgICAgICAgICAg
++ICAgICAgICAicHVibGljVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6OTI5Mi92MSIN
++CiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIF0sDQogICAg
++ICAgICAgICAgICAgInR5cGUiOiAiaW1hZ2UiLA0KICAgICAgICAgICAgICAgICJu
++YW1lIjogImdsYW5jZSINCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICB7DQog
++ICAgICAgICAgICAgICAgImVuZHBvaW50c19saW5rcyI6IFtdLA0KICAgICAgICAg
++ICAgICAgICJlbmRwb2ludHMiOiBbDQogICAgICAgICAgICAgICAgICAgIHsNCiAg
++ICAgICAgICAgICAgICAgICAgICAgICJhZG1pblVSTCI6ICJodHRwOi8vMTI3LjAu
++MC4xOjg3NzQvdjEuMS82NGI2ZjNmYmNjNTM0MzVlOGE2MGZjZjg5YmI2NjE3YSIs
++DQogICAgICAgICAgICAgICAgICAgICAgICAicmVnaW9uIjogInJlZ2lvbk9uZSIs
++DQogICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJuYWxVUkwiOiAiaHR0cDov
++LzEyNy4wLjAuMTo4Nzc0L3YxLjEvNjRiNmYzZmJjYzUzNDM1ZThhNjBmY2Y4OWJi
++NjYxN2EiLA0KICAgICAgICAgICAgICAgICAgICAgICAgInB1YmxpY1VSTCI6ICJo
++dHRwOi8vMTI3LjAuMC4xOjg3NzQvdjEuMS82NGI2ZjNmYmNjNTM0MzVlOGE2MGZj
++Zjg5YmI2NjE3YSINCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
++ICAgIF0sDQogICAgICAgICAgICAgICAgInR5cGUiOiAiY29tcHV0ZSIsDQogICAg
++ICAgICAgICAgICAgIm5hbWUiOiAibm92YSINCiAgICAgICAgICAgIH0sDQogICAg
++ICAgICAgICB7DQogICAgICAgICAgICAgICAgImVuZHBvaW50c19saW5rcyI6IFtd
++LA0KICAgICAgICAgICAgICAgICJlbmRwb2ludHMiOiBbDQogICAgICAgICAgICAg
++ICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICJhZG1pblVSTCI6ICJo
++dHRwOi8vMTI3LjAuMC4xOjM1MzU3L3YyLjAiLA0KICAgICAgICAgICAgICAgICAg
++ICAgICAgInJlZ2lvbiI6ICJSZWdpb25PbmUiLA0KICAgICAgICAgICAgICAgICAg
++ICAgICAgImludGVybmFsVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6MzUzNTcvdjIu
++MCIsDQogICAgICAgICAgICAgICAgICAgICAgICAicHVibGljVVJMIjogImh0dHA6
++Ly8xMjcuMC4wLjE6NTAwMC92Mi4wIg0KICAgICAgICAgICAgICAgICAgICB9DQog
++ICAgICAgICAgICAgICAgXSwNCiAgICAgICAgICAgICAgICAidHlwZSI6ICJpZGVu
++dGl0eSIsDQogICAgICAgICAgICAgICAgIm5hbWUiOiAia2V5c3RvbmUiDQogICAg
++ICAgICAgICB9DQogICAgICAgIF0sDQogICAgICAgICJ1c2VyIjogew0KICAgICAg
++ICAgICAgInVzZXJuYW1lIjogInVzZXJfbmFtZTEiLA0KICAgICAgICAgICAgInJv
++bGVzX2xpbmtzIjogWw0KICAgICAgICAgICAgICAgICJyb2xlMSIsDQogICAgICAg
++ICAgICAgICAgInJvbGUyIg0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgICJp
++ZCI6ICJ1c2VyX2lkMSIsDQogICAgICAgICAgICAicm9sZXMiOiBbDQogICAgICAg
++ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJyb2xlMSIN
++CiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAg
++ICAgICAgICAgICAgIm5hbWUiOiAicm9sZTIiDQogICAgICAgICAgICAgICAgfQ0K
++ICAgICAgICAgICAgXSwNCiAgICAgICAgICAgICJuYW1lIjogInVzZXJfbmFtZTEi
++DQogICAgICAgIH0NCiAgICB9DQp9DQoxggHOMIIBygIBATCBpDCBnjEKMAgGA1UE
++BRMBNTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRIwEAYDVQQHEwlTdW5ueXZh
++bGUxEjAQBgNVBAoTCU9wZW5TdGFjazERMA8GA1UECxMIS2V5c3RvbmUxJTAjBgkq
++hkiG9w0BCQEWFmtleXN0b25lQG9wZW5zdGFjay5vcmcxFDASBgNVBAMTC1NlbGYg
++U2lnbmVkAgERMAsGCWCGSAFlAwQCATANBgkqhkiG9w0BAQEFAASCAQCgtkCXRzS8
++s7WjZCsKDhMt6q5JQIm7x6EMKCBaOABQG9EOVIAyqfoJDdjDtz9rZEPO3UVTpPkg
++VjtA0QV97qT8bX55AcCkk7kBRDOKTtco5GOGwjMxL+GWbIwWiB7DKIP4RA6NLZtF
++WxUbLBY+OgBSiayuHqSx+Rd08QC9oHf25wRkTNp3VFPxtAleDmASzdAoIafoS+FB
++Po+9WuTaGdeya7S+ms4SSyXf9cdMKGv010R/aMINWUWaBrkB4wlespYLmKH/XzwS
++pENRIdbI9XHEOYTWKqul5tucA3p21IA24ND6acl9CXHr3KeqXpRwclSZ38Kg/23T
++92D+SowEjlGf
+ -----END CMS-----
+diff --git a/examples/pki/cms/auth_token_scoped.pkiz b/examples/pki/cms/auth_token_scoped.pkiz
+index 34d7706..cbfc082 100644
+--- a/examples/pki/cms/auth_token_scoped.pkiz
++++ b/examples/pki/cms/auth_token_scoped.pkiz
+@@ -1 +1 @@
+-PKIZ_eJylVst2ozgU3OsrZp_Tx4CNY5biaRFLGMx7ZyDGYMBObJ5fPwInpyedzkxmhhUIqVS36t4r_fhBH1HREPlDwrvx4wfACK1bM9CfziE6NjGBZiyd6dg1lyRxuZCgqXSSDddi6rzKKZa0cTxeaNLuRduhaA5kU1nDPR2MVkqaeo_PvX4MOFLEc5wZmfiIKvpehZeAc-XAt46RJlQoP6fe_JpFpXoD4Q4tkaRzEdexkedkGwlmocefYk24RJU1vE8OPOu293jXObUUGGb7tcXE8rkBm0HpSb9oNzmssX1ekCHmNvOg2wwBE-RhibkwCzjM4sEciOcsAjtow5KUhlxkQR5wANvJEWVtiiq9CLmiibKJUR96ySXi-G1U3lnR3ZnQ1-vA6z6wACON_8MCjDR-shDZoOwuAevubGlick7WVmtkqwbbaD5tIC06I0_nZAiaJFcaQHIrI2UwhKWeB4MzEBmzoX08klwsAy5YGJ6ekTzoCKdkB5e5UlDm2ReLUVxUhQ2I1u6NOjH-KKLSaiOuqJM1OURaUe_vVka-Txeu77a9uVZFmloHnJOBf2vbL3rxAOenfhTsvzoBvkL-CPy1uOCjuqfesNGo7mfByuIWeEkxAZZuHa7FZmQEYla40pfXuKfI6i057NqU1gOlyb4t5JukVL5McfBNscbkYqbkot7_1XrwT96PO8elW-09ob57_yb0SahH-wGNc6RUxCV_jNTvZKA5alTj3YojGuJAmFMyJcmJjRk8uIWhKRzWwjzMUz4oEUdyZR7cE61NPJ3qRb5VTL-N93fhgr_N9ZI0kS-yifa50fhcd4nK2wAmO1hW2Ei0fY060K400eNcPp5bzXsWfpXu4BsWDlQflvQCh7NF-2vKjy7svtt9fgcOPqN_t6k4LZZhA5Ic0QFd8HfjYouPtTcNPKug8V6S9elLAUctwCjg2-KGCjdlG62F4nktXmgGTpNQjlo8pDcsKzdsHx2cK0tsm0ssJ3twp013K9U6GSnTzkN3O9IwinD6tvrEc0Z7fxbY-3xVqME4iO-Zdgp9ksdl0SbaW1PReDbS2vHfJbzrwYzgNIzD3jM7VDH3Wnj72dI-l4fesYk0WhuZLoyxJz492rI7s7gUrnSTD_0SUE_pAue9pY3vPSqYXyi7A7X1MDVV-71CRzCcgRHlQwN5B6w-deKenp8Fzt4dm0DvGny1C41zsnQKoxAuoUzrxWcFHCCxp8c8jAMJ0PO_Tfdmm4aLTsohElPiitCxoe100gD1-3dgw8K1sXltJTOQXdNESqvLpq3sABahBllHETusO3O3jqqCoylcYAu1CpwmPyltsY01t3bmFr07XDvFhts78NUGknIrnn3C0Fqgdjotav96WzmJ6jF8Df1iSDTawhyxGYHiO1AdzfUKYMtslXTaSVbamx16XYlUcgkpYEgjUj5cbyAR09PL8ZRpQsuINHwVQLij9yBp74o5-3C9beMjRm4RGubu5K2F9HGJocPh_HJ7OM-zk36Nb-eHw2sxnGZ74rvrAqi2wSpx1jJyNWd7CHM1LftoqJiSh-nGUy32Js_OzhI1jmuXPJJmF9hh5aytDpquHbdgGGbIvIVPr71BcFdDy7fk2ZFJ92m33szIIMlu-IIEf-UzJFJOwolZRZ1hz-ONETD7_AwstzFmO7fpltxy63KH5wd0qXbBIt7HrOs-YWgF-_PT7CF9KnouPykraZg9YN1WOdW_7O0ckPm5UMNs268OL8QpD24qFNvu8eHFEjtI2uct79Qmn3P8cWWacap2kXw1ZCHP4Gzj16QE2-r1YrVQqwweOk_ybmMdDF83-GVNIJjuogqRf95L_wRcTpJ3
+\ No newline at end of file
++PKIZ_eJylVkuXojgY3edXzL5OnwLUKlnMgrdBwAJDgOx4KK-gVimC_PoJWFVdM93z6DNuNEFu7nfv98i3b-wjawZ0flPs7bj4BmwIV8s8MtdHAotr6khuqhzZ3nxQFFlcKpKr9SqSLDmneVHnMnFtTcq1Ls_DmZzXr6CoS0PsOFnujJxtHmUI9cXqXEaBU5HQGWB1zHc3k0uEC01K-ATZMxIWXRyaNL3BJwAVeLNVe24hqbeQNscq7DeVxm0qaRaU8AwV80QU9qJidomhVyQoronh0fT-jAMkWBTJwS03pfwMG9xGgXkmwbTm0gOmliKV8bSWyswYny-4UKC1vZ0AWhAFPB1pwoNHk0ZvM11sx733P9QsjCptaJcZ9DqFYCz4xOjFETgKcQ3i0NvHgTfFGtxMhDQaJXrhYazHmMenDSbr9KDXwUqXIeWnF1MB37KGVsR3CpAZ-jkR0pFywsRiLLwuEWibreyPvYIY_CmheIvuWhyzlddtyuXVRnAGrEpqbWXOhMtnzhBds0q7OpVXOk00kMasosEfHNXmCSoKp5KbSIjmm8AsnSrqHUErwUSpwYc4ENu7FiYlAou3Flty1-GUMH3Shomt_8gCjDT-Dwsw0phYrHCZGLTC2LQnJk3BZSvpybote7tKxwM6q9KeNmo6c0pRsLdLwTGgAEjFzmmcykE2Zw-YbgxNsA1SkSpfRA0UnEqbRVtTDLddPuYJWcnXmOVCyotn9v0GxnSE-iUbWWQr2rG4xxiFROj5JPAndiw_Ln_d3zPA0TXwq7Z916u-bRC8AiZY-X-cAH-H_An8L-KCT3URXNiTun8v2M_0AhO9QD-8U20_i6vJzqzyKsIALeVeqZ-AdyC2p9cgCWj7n7xXRnbz3hoiLqpIYwukjASbB_bgDk7gzyMUdaRxmo1Ky6hij1BWwLL7Lmg5CXcjQXZKhMVL0twtBiMlEo7Ue-zX3dQ44pXHperxag3azbmNLJjA6Dh3hpSzZlFvfUl18F8q7p_cAL8S78_CBZ_xHvjJHtYj69QQx8QZQqE_Jc3l3q14bmqiu1B-d8m5JqHMs470Q763yYwwQPbC2MK_AE5As7Hlexem3aQZ-AfRBlahvHNj4ZTz7ieObEdHwFdLfsGRT3DwHV3mo6Y_Rfy_VaHf2arEagWytSmCX8n7aUqx4cJmBLf7YbA0F7oLHTYDF_TDkSx0xhE2zcPp91jOrJlMU2pcU_EO8D6Fbqzb0D8zOLM-IZ4J-ugZ429Y3lnTejwYwAMemHBsOrn9u9JseOJPy77YOx1gf1bnnc1k4wfyHnN_Lul38AmEsdiHvGhHUB4qRZHS43h36EAeu11O5r1SSVDOHSxLPpKQ3yuDZN7XEZIoRrZ77hQ3UrHrQq0zVRdpW1uWDCDxvib3tunPcJscqMBygNoe7DRp-vNa6-hLypT3Z14RCedeQ9LLHfiMFO1CwYfy9tbvYPf1qlPLekHeSEiHzGDN1ZevI1B6B2Lpbh5sz-2Alk8nqVp3QSToG6g7J8IACYtI-8ndSHW_HqLJQHYlLc81aX3lauEoClh6VuT6CVmW_Xx4cUKMVpistrF-8znERbl2fHvMwv1Zg7ipXuENxJolYFGlM8EwxIGkw0pI51zZPri711NwFfOy9-h2eDMzXGe6HAtPSqjDtyZSZq0lXBUA-dVBNQ9FszxyDqe-1DG0sq2P0nb_-vCoLDptv3s43RpcnC1-vVPWh6J_uR7D1-xVklHsgVJt1t5DSq3mbKql9HradSuMTCoWQ_HywKdLk7-01l5nbWlbqI8WXjxrwgYhdFwe0MF9AUVO9lb9XD9JQ2Ku-TjaCYawm8_np5i1w2pmP9qSdKH5rttzT12SxPlSXOs3xXe0U6N6BnD2jNsSSlK1ffBnwirm-se3_a7NcLsk-e-_g-lCqznq98vtH9MPoOI=
+\ No newline at end of file
+diff --git a/examples/pki/cms/auth_v3_token_scoped.json b/examples/pki/cms/auth_v3_token_scoped.json
+index 082c1b1..9020745 100644
+--- a/examples/pki/cms/auth_v3_token_scoped.json
++++ b/examples/pki/cms/auth_v3_token_scoped.json
+@@ -1,5 +1,8 @@
+ {
+     "token": {
++        "audit_ids": [
++            "SLIXlXQUQZWUi9VJrqdXqA"
++        ],
+         "methods": [
+             "password"
+         ],
+diff --git a/examples/pki/cms/auth_v3_token_scoped.pem b/examples/pki/cms/auth_v3_token_scoped.pem
+index e11cf03..e83e7a0 100644
+--- a/examples/pki/cms/auth_v3_token_scoped.pem
++++ b/examples/pki/cms/auth_v3_token_scoped.pem
+@@ -1,98 +1,100 @@
+ -----BEGIN CMS-----
+-MIIR5gYJKoZIhvcNAQcCoIIR1zCCEdMCAQExCTAHBgUrDgMCGjCCD/MGCSqGSIb3
+-DQEHAaCCD+QEgg/gew0KICAgICJ0b2tlbiI6IHsNCiAgICAgICAgIm1ldGhvZHMi
+-OiBbDQogICAgICAgICAgICAicGFzc3dvcmQiDQogICAgICAgIF0sDQogICAgICAg
+-ICJyb2xlcyI6IFsNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAibmFt
+-ZSI6ICJyb2xlMSINCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICB7DQogICAg
+-ICAgICAgICAgICAgIm5hbWUiOiAicm9sZTIiDQogICAgICAgICAgICB9DQogICAg
+-ICAgIF0sDQogICAgICAgICJleHBpcmVzX2F0IjogIjIwMzgtMDEtMThUMjE6MTQ6
+-MDdaIiwNCiAgICAgICAgInByb2plY3QiOiB7DQogICAgICAgICAgICAiaWQiOiAi
+-dGVuYW50X2lkMSIsDQogICAgICAgICAgICAiZG9tYWluIjogew0KICAgICAgICAg
+-ICAgICAgICJpZCI6ICJkb21haW5faWQxIiwNCiAgICAgICAgICAgICAgICAibmFt
+-ZSI6ICJkb21haW5fbmFtZTEiDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAg
+-ImVuYWJsZWQiOiB0cnVlLA0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogbnVs
+-bCwNCiAgICAgICAgICAgICJuYW1lIjogInRlbmFudF9uYW1lMSINCiAgICAgICAg
+-fSwNCiAgICAgICAgImNhdGFsb2ciOiBbDQogICAgICAgICAgICB7DQogICAgICAg
+-ICAgICAgICAgImVuZHBvaW50cyI6IFsNCiAgICAgICAgICAgICAgICAgICAgew0K
+-ICAgICAgICAgICAgICAgICAgICAgICAgImludGVyZmFjZSI6ICJhZG1pbiIsDQog
+-ICAgICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHA6Ly8xMjcuMC4wLjE6
+-ODc3Ni92MS82NGI2ZjNmYmNjNTM0MzVlOGE2MGZjZjg5YmI2NjE3YSIsDQogICAg
+-ICAgICAgICAgICAgICAgICAgICAicmVnaW9uIjogInJlZ2lvbk9uZSINCiAgICAg
+-ICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAg
+-ICAgICAgICAgICAgICAgICAgImludGVyZmFjZSI6ICJpbnRlcm5hbCIsDQogICAg
+-ICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHA6Ly8xMjcuMC4wLjE6ODc3
+-Ni92MS82NGI2ZjNmYmNjNTM0MzVlOGE2MGZjZjg5YmI2NjE3YSIsDQogICAgICAg
+-ICAgICAgICAgICAgICAgICAicmVnaW9uIjogInJlZ2lvbk9uZSINCiAgICAgICAg
+-ICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAg
+-ICAgICAgICAgICAgICAgImludGVyZmFjZSI6ICJwdWJsaWMiLA0KICAgICAgICAg
+-ICAgICAgICAgICAgICAgInVybCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzYvdjEv
+-NjRiNmYzZmJjYzUzNDM1ZThhNjBmY2Y4OWJiNjYxN2EiLA0KICAgICAgICAgICAg
+-ICAgICAgICAgICAgInJlZ2lvbiI6ICJyZWdpb25PbmUiDQogICAgICAgICAgICAg
+-ICAgICAgIH0NCiAgICAgICAgICAgICAgICBdLA0KICAgICAgICAgICAgICAgICJ0
+-eXBlIjogInZvbHVtZSIsDQogICAgICAgICAgICAgICAgIm5hbWUiOiAidm9sdW1l
+-Ig0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
+-ICAiZW5kcG9pbnRzIjogWw0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAg
+-ICAgICAgICAgICAgICAgICAiaW50ZXJmYWNlIjogImFkbWluIiwNCiAgICAgICAg
+-ICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovLzEyNy4wLjAuMTo5MjkyL3Yx
+-IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICJyZWdpb24iOiAicmVnaW9uT25l
+-Ig0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICB7
+-DQogICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJmYWNlIjogImludGVybmFs
+-IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovLzEyNy4w
+-LjAuMTo5MjkyL3YxIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICJyZWdpb24i
+-OiAicmVnaW9uT25lIg0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAg
+-ICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJmYWNl
+-IjogInB1YmxpYyIsDQogICAgICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0
+-dHA6Ly8xMjcuMC4wLjE6OTI5Mi92MSIsDQogICAgICAgICAgICAgICAgICAgICAg
+-ICAicmVnaW9uIjogInJlZ2lvbk9uZSINCiAgICAgICAgICAgICAgICAgICAgfQ0K
+-ICAgICAgICAgICAgICAgIF0sDQogICAgICAgICAgICAgICAgInR5cGUiOiAiaW1h
+-Z2UiLA0KICAgICAgICAgICAgICAgICJuYW1lIjogImdsYW5jZSINCiAgICAgICAg
+-ICAgIH0sDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgImVuZHBvaW50
++MIISOAYJKoZIhvcNAQcCoIISKTCCEiUCAQExDTALBglghkgBZQMEAgEwghA9Bgkq
++hkiG9w0BBwGgghAuBIIQKnsNCiAgICAidG9rZW4iOiB7DQogICAgICAgICJhdWRp
++dF9pZHMiOiBbDQogICAgICAgICAgICAiU0xJWGxYUVVRWldVaTlWSnJxZFhxQSIN
++CiAgICAgICAgXSwNCiAgICAgICAgIm1ldGhvZHMiOiBbDQogICAgICAgICAgICAi
++cGFzc3dvcmQiDQogICAgICAgIF0sDQogICAgICAgICJyb2xlcyI6IFsNCiAgICAg
++ICAgICAgIHsNCiAgICAgICAgICAgICAgICAibmFtZSI6ICJyb2xlMSINCiAgICAg
++ICAgICAgIH0sDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgIm5hbWUi
++OiAicm9sZTIiDQogICAgICAgICAgICB9DQogICAgICAgIF0sDQogICAgICAgICJl
++eHBpcmVzX2F0IjogIjIwMzgtMDEtMThUMjE6MTQ6MDdaIiwNCiAgICAgICAgInBy
++b2plY3QiOiB7DQogICAgICAgICAgICAiaWQiOiAidGVuYW50X2lkMSIsDQogICAg
++ICAgICAgICAiZG9tYWluIjogew0KICAgICAgICAgICAgICAgICJpZCI6ICJkb21h
++aW5faWQxIiwNCiAgICAgICAgICAgICAgICAibmFtZSI6ICJkb21haW5fbmFtZTEi
++DQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgImVuYWJsZWQiOiB0cnVlLA0K
++ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogbnVsbCwNCiAgICAgICAgICAgICJu
++YW1lIjogInRlbmFudF9uYW1lMSINCiAgICAgICAgfSwNCiAgICAgICAgImNhdGFs
++b2ciOiBbDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgImVuZHBvaW50
+ cyI6IFsNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAg
+ ICAgICAgImludGVyZmFjZSI6ICJhZG1pbiIsDQogICAgICAgICAgICAgICAgICAg
+-ICAgICAidXJsIjogImh0dHA6Ly8xMjcuMC4wLjE6ODc3NC92MS4xLzY0YjZmM2Zi
+-Y2M1MzQzNWU4YTYwZmNmODliYjY2MTdhIiwNCiAgICAgICAgICAgICAgICAgICAg
+-ICAgICJyZWdpb24iOiAicmVnaW9uT25lIg0KICAgICAgICAgICAgICAgICAgICB9
+-LA0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAg
+-ICAiaW50ZXJmYWNlIjogImludGVybmFsIiwNCiAgICAgICAgICAgICAgICAgICAg
+-ICAgICJ1cmwiOiAiaHR0cDovLzEyNy4wLjAuMTo4Nzc0L3YxLjEvNjRiNmYzZmJj
+-YzUzNDM1ZThhNjBmY2Y4OWJiNjYxN2EiLA0KICAgICAgICAgICAgICAgICAgICAg
+-ICAgInJlZ2lvbiI6ICJyZWdpb25PbmUiDQogICAgICAgICAgICAgICAgICAgIH0s
+-DQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
+-ICJpbnRlcmZhY2UiOiAicHVibGljIiwNCiAgICAgICAgICAgICAgICAgICAgICAg
+-ICJ1cmwiOiAiaHR0cDovLzEyNy4wLjAuMTo4Nzc0L3YxLjEvNjRiNmYzZmJjYzUz
+-NDM1ZThhNjBmY2Y4OWJiNjYxN2EiLA0KICAgICAgICAgICAgICAgICAgICAgICAg
+-InJlZ2lvbiI6ICJyZWdpb25PbmUiDQogICAgICAgICAgICAgICAgICAgIH0NCiAg
+-ICAgICAgICAgICAgICBdLA0KICAgICAgICAgICAgICAgICJ0eXBlIjogImNvbXB1
+-dGUiLA0KICAgICAgICAgICAgICAgICJuYW1lIjogIm5vdmEiDQogICAgICAgICAg
+-ICB9LA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICJlbmRwb2ludHMi
+-OiBbDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAg
+-ICAgICJpbnRlcmZhY2UiOiAiYWRtaW4iLA0KICAgICAgICAgICAgICAgICAgICAg
+-ICAgInVybCI6ICJodHRwOi8vMTI3LjAuMC4xOjM1MzU3L3YzIiwNCiAgICAgICAg
+-ICAgICAgICAgICAgICAgICJyZWdpb24iOiAiUmVnaW9uT25lIg0KICAgICAgICAg
+-ICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAg
+-ICAgICAgICAgICAgICAiaW50ZXJmYWNlIjogImludGVybmFsIiwNCiAgICAgICAg
+-ICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovLzEyNy4wLjAuMTozNTM1Ny92
+-MyIsDQogICAgICAgICAgICAgICAgICAgICAgICAicmVnaW9uIjogIlJlZ2lvbk9u
+-ZSINCiAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAg
+-ew0KICAgICAgICAgICAgICAgICAgICAgICAgImludGVyZmFjZSI6ICJwdWJsaWMi
+-LA0KICAgICAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwOi8vMTI3LjAu
+-MC4xOjUwMDAvdjMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgInJlZ2lvbiI6
+-ICJSZWdpb25PbmUiDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
+-ICAgICBdLA0KICAgICAgICAgICAgICAgICJ0eXBlIjogImlkZW50aXR5IiwNCiAg
+-ICAgICAgICAgICAgICAibmFtZSI6ICJrZXlzdG9uZSINCiAgICAgICAgICAgIH0N
+-CiAgICAgICAgXSwNCiAgICAgICAgInVzZXIiOiB7DQogICAgICAgICAgICAiZG9t
+-YWluIjogew0KICAgICAgICAgICAgICAgICJpZCI6ICJkb21haW5faWQxIiwNCiAg
+-ICAgICAgICAgICAgICAibmFtZSI6ICJkb21haW5fbmFtZTEiDQogICAgICAgICAg
+-ICB9LA0KICAgICAgICAgICAgIm5hbWUiOiAidXNlcl9uYW1lMSIsDQogICAgICAg
+-ICAgICAiaWQiOiAidXNlcl9pZDEiDQogICAgICAgIH0NCiAgICB9DQp9DQoxggHK
+-MIIBxgIBATCBpDCBnjEKMAgGA1UEBRMBNTELMAkGA1UEBhMCVVMxCzAJBgNVBAgT
+-AkNBMRIwEAYDVQQHEwlTdW5ueXZhbGUxEjAQBgNVBAoTCU9wZW5TdGFjazERMA8G
+-A1UECxMIS2V5c3RvbmUxJTAjBgkqhkiG9w0BCQEWFmtleXN0b25lQG9wZW5zdGFj
+-ay5vcmcxFDASBgNVBAMTC1NlbGYgU2lnbmVkAgERMAcGBSsOAwIaMA0GCSqGSIb3
+-DQEBAQUABIIBAMq7ffe3ft88hD0EXJfWqkoEGcnal6NmTuLAiCOeQjDxR5TEIx0x
+-HanKHWAG7Ko/97KgKAAFwOq3hhnbbKbKq7Z3brUNPXNRwBd3RusUrsLQOWwwKAsF
+-acD8a4XXx6oC8dTsuFivDtMNb1JvBRIWcZXznOtn/bkFcvVhOQ+Af93c9xPBUpMq
+-1667DbVKWRJEsMrcf5r7wYRQBtAKZU3CAjbNDighdTJWwF7TIWZycnF3OHYmu5J2
+-wvcuB8ex+xRvf1lw1qnb3lC43A4M1KqhnHPpWUrpmAFnzAcYwc7ts2iCqD/UwVBP
+-YcXU8kk8bY6leNJKR9xjHcIfW8SnREZVbXA=
++ICAgICAidXJsIjogImh0dHA6Ly8xMjcuMC4wLjE6ODc3Ni92MS82NGI2ZjNmYmNj
++NTM0MzVlOGE2MGZjZjg5YmI2NjE3YSIsDQogICAgICAgICAgICAgICAgICAgICAg
++ICAicmVnaW9uIjogInJlZ2lvbk9uZSINCiAgICAgICAgICAgICAgICAgICAgfSwN
++CiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAg
++ImludGVyZmFjZSI6ICJpbnRlcm5hbCIsDQogICAgICAgICAgICAgICAgICAgICAg
++ICAidXJsIjogImh0dHA6Ly8xMjcuMC4wLjE6ODc3Ni92MS82NGI2ZjNmYmNjNTM0
++MzVlOGE2MGZjZjg5YmI2NjE3YSIsDQogICAgICAgICAgICAgICAgICAgICAgICAi
++cmVnaW9uIjogInJlZ2lvbk9uZSINCiAgICAgICAgICAgICAgICAgICAgfSwNCiAg
++ICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgImlu
++dGVyZmFjZSI6ICJwdWJsaWMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgInVy
++bCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzYvdjEvNjRiNmYzZmJjYzUzNDM1ZThh
++NjBmY2Y4OWJiNjYxN2EiLA0KICAgICAgICAgICAgICAgICAgICAgICAgInJlZ2lv
++biI6ICJyZWdpb25PbmUiDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
++ICAgICAgICBdLA0KICAgICAgICAgICAgICAgICJ0eXBlIjogInZvbHVtZSIsDQog
++ICAgICAgICAgICAgICAgIm5hbWUiOiAidm9sdW1lIg0KICAgICAgICAgICAgfSwN
++CiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAiZW5kcG9pbnRzIjogWw0K
++ICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAi
++aW50ZXJmYWNlIjogImFkbWluIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICJ1
++cmwiOiAiaHR0cDovLzEyNy4wLjAuMTo5MjkyL3YxIiwNCiAgICAgICAgICAgICAg
++ICAgICAgICAgICJyZWdpb24iOiAicmVnaW9uT25lIg0KICAgICAgICAgICAgICAg
++ICAgICB9LA0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAg
++ICAgICAgICAiaW50ZXJmYWNlIjogImludGVybmFsIiwNCiAgICAgICAgICAgICAg
++ICAgICAgICAgICJ1cmwiOiAiaHR0cDovLzEyNy4wLjAuMTo5MjkyL3YxIiwNCiAg
++ICAgICAgICAgICAgICAgICAgICAgICJyZWdpb24iOiAicmVnaW9uT25lIg0KICAg
++ICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICB7DQogICAg
++ICAgICAgICAgICAgICAgICAgICAiaW50ZXJmYWNlIjogInB1YmxpYyIsDQogICAg
++ICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHA6Ly8xMjcuMC4wLjE6OTI5
++Mi92MSIsDQogICAgICAgICAgICAgICAgICAgICAgICAicmVnaW9uIjogInJlZ2lv
++bk9uZSINCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIF0s
++DQogICAgICAgICAgICAgICAgInR5cGUiOiAiaW1hZ2UiLA0KICAgICAgICAgICAg
++ICAgICJuYW1lIjogImdsYW5jZSINCiAgICAgICAgICAgIH0sDQogICAgICAgICAg
++ICB7DQogICAgICAgICAgICAgICAgImVuZHBvaW50cyI6IFsNCiAgICAgICAgICAg
++ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgImludGVyZmFjZSI6
++ICJhZG1pbiIsDQogICAgICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHA6
++Ly8xMjcuMC4wLjE6ODc3NC92MS4xLzY0YjZmM2ZiY2M1MzQzNWU4YTYwZmNmODli
++YjY2MTdhIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICJyZWdpb24iOiAicmVn
++aW9uT25lIg0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAg
++ICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJmYWNlIjogImlu
++dGVybmFsIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cDov
++LzEyNy4wLjAuMTo4Nzc0L3YxLjEvNjRiNmYzZmJjYzUzNDM1ZThhNjBmY2Y4OWJi
++NjYxN2EiLA0KICAgICAgICAgICAgICAgICAgICAgICAgInJlZ2lvbiI6ICJyZWdp
++b25PbmUiDQogICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAg
++ICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcmZhY2UiOiAicHVi
++bGljIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovLzEy
++Ny4wLjAuMTo4Nzc0L3YxLjEvNjRiNmYzZmJjYzUzNDM1ZThhNjBmY2Y4OWJiNjYx
++N2EiLA0KICAgICAgICAgICAgICAgICAgICAgICAgInJlZ2lvbiI6ICJyZWdpb25P
++bmUiDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBdLA0K
++ICAgICAgICAgICAgICAgICJ0eXBlIjogImNvbXB1dGUiLA0KICAgICAgICAgICAg
++ICAgICJuYW1lIjogIm5vdmEiDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAg
++ew0KICAgICAgICAgICAgICAgICJlbmRwb2ludHMiOiBbDQogICAgICAgICAgICAg
++ICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcmZhY2UiOiAi
++YWRtaW4iLA0KICAgICAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwOi8v
++MTI3LjAuMC4xOjM1MzU3L3YzIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICJy
++ZWdpb24iOiAiUmVnaW9uT25lIg0KICAgICAgICAgICAgICAgICAgICB9LA0KICAg
++ICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAiaW50
++ZXJmYWNlIjogImludGVybmFsIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICJ1
++cmwiOiAiaHR0cDovLzEyNy4wLjAuMTozNTM1Ny92MyIsDQogICAgICAgICAgICAg
++ICAgICAgICAgICAicmVnaW9uIjogIlJlZ2lvbk9uZSINCiAgICAgICAgICAgICAg
++ICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
++ICAgICAgICAgImludGVyZmFjZSI6ICJwdWJsaWMiLA0KICAgICAgICAgICAgICAg
++ICAgICAgICAgInVybCI6ICJodHRwOi8vMTI3LjAuMC4xOjUwMDAvdjMiLA0KICAg
++ICAgICAgICAgICAgICAgICAgICAgInJlZ2lvbiI6ICJSZWdpb25PbmUiDQogICAg
++ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBdLA0KICAgICAgICAg
++ICAgICAgICJ0eXBlIjogImlkZW50aXR5IiwNCiAgICAgICAgICAgICAgICAibmFt
++ZSI6ICJrZXlzdG9uZSINCiAgICAgICAgICAgIH0NCiAgICAgICAgXSwNCiAgICAg
++ICAgInVzZXIiOiB7DQogICAgICAgICAgICAiZG9tYWluIjogew0KICAgICAgICAg
++ICAgICAgICJpZCI6ICJkb21haW5faWQxIiwNCiAgICAgICAgICAgICAgICAibmFt
++ZSI6ICJkb21haW5fbmFtZTEiDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAg
++Im5hbWUiOiAidXNlcl9uYW1lMSIsDQogICAgICAgICAgICAiaWQiOiAidXNlcl9p
++ZDEiDQogICAgICAgIH0NCiAgICB9DQp9DQoxggHOMIIBygIBATCBpDCBnjEKMAgG
++A1UEBRMBNTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRIwEAYDVQQHEwlTdW5u
++eXZhbGUxEjAQBgNVBAoTCU9wZW5TdGFjazERMA8GA1UECxMIS2V5c3RvbmUxJTAj
++BgkqhkiG9w0BCQEWFmtleXN0b25lQG9wZW5zdGFjay5vcmcxFDASBgNVBAMTC1Nl
++bGYgU2lnbmVkAgERMAsGCWCGSAFlAwQCATANBgkqhkiG9w0BAQEFAASCAQBBvzoh
++0iSPMQhuRCAtTG3cPhyewvf554MPjbGQnu8mYmmfyxl7gMmWkTAmyckAsSv4mS6/
++4SQj9WCn4T1lFkhUz7WWjCwt6fWWp3mzF8Nl/kMsJKDwlxDGbPzsyewXIUsw11sz
++q/Qxs7qGxQ1vYWnaWQ3hC3oZw7cOswKRJicdP439iVPvfqR9CDbK55sPP+ewZRgQ
++YJ3Uc/xDizxepudFJj9+VHKceA37/sVK0ataNe2uHLHwVBYPwOppMckP169QBw8x
++QYh9h+kcOAyZ5psiUzCpLKnlMiYDrVcTGxnTeiVHxKXxj/MERNhR1Y4lEr0ZHJ+p
++Y6p3FBP2VUCefaRh
+ -----END CMS-----
+diff --git a/examples/pki/cms/auth_v3_token_scoped.pkiz b/examples/pki/cms/auth_v3_token_scoped.pkiz
+index d687c03..74f8f63 100644
+--- a/examples/pki/cms/auth_v3_token_scoped.pkiz
++++ b/examples/pki/cms/auth_v3_token_scoped.pkiz
+@@ -1 +1 @@
+-PKIZ_eJy9V8lyo0gQvddXzN3RYUCgNoc-FItYTCGBEEvdWCwWscjWwvL1UyDJ3W577J6YiFGEDlUFmS_zvcxKvn0jP0FWNPMvEa3HxTeANE1X2kB_bLCWnWMTWrHYkD1JEkXRSkVoyZ3oQFVINy9SikSlEEWhTxVx_aystWgGJEtWYUg2u52cprH71OtUxBzLKNfmmnrIY1U_h5VbJOJljRX-GHjlSSualDx7AoFHl-NCq-xz5C32Ucmfxj201g6aqO_x-KKo7yKGzkKP24ae1Wk1NZ6VUbXIQaS4u9FAouo0XrfEEJdF3iZf5jBPFJcY4yifmfY6LR_P7TJmzD70BSr0-BMYX45q9xCJ42E5GdNqe7R-Shb8Hktyvh0N1_qZOBvGc292yMn5Ea-1OSBQ-ojpCGSdN0Th-68I4oo_YEfLt-4E-Yh9u4kY-2Kk19vANweQMHyPRT0xRJhjP2tDXy9jms-mpIlajyTEGg7sDEdmXUnrloVMLQs48_IpRwUIfDuLFL7-HRo5ZAgyekQzGfe4Xazw-6i2X8NIfP0ALgxkVKLCudE_dKiIT0hkW6OQ50spnpk5z6D1A2MqGoMLswoqszAdRKHBLZeKzACk4AIXKRdUGmMW8iy40kc8lXGFs4C55CPw7GPosROauHLrkYHROSDZLTFTnqMdf8K3RNZuH134bxLVbpf5wxk52swo4IiO5CGdmUNwTgr5DMzCzgmwAVd6EQybwZQQjZ0sMwuhCpiAXXp6bhZBZzLy5J2IicK-XgWeWV4QVOWJCKYnyTtMQrkhyicEPfaSfcRwq6jaTHog8qXjqp3CClWbArHUnI1B7s1-TByB6DSsOcSMMQs6YwiooMAVYnAeMIhGgzWY3oYNnKDFlVktpTIHQUGOnCS7yPSCBleL4kplm3j6IfTQu-TdkIJb8vxJrjYXK9c6ICpMxkIbC0d9o486UhankZ3RKPgngXyqD0fj0KQP7QD-DecfUQ6-5nzXE48j5_8fjRwiXkca_4QZ8FmMvzMTenSGmVckU-u7ViN3Tir507L9J1bAa9mKIy3sH6nvV_GBD2LMsELvo0vHuSaRvba4S7gOw70KDHwpmi_Qgc_gfYDuKjrSeMULQvAVxK8Qgv-SwBEh-Lfl-7tGwE0kAcMfY9Wl8AcXTMi4XDwjd2f1vsWDPy1hNPZLJyZFhd4UFbhVlVYtdtF4bb8vqPVnBQXGivqgoIg3RJs9SW7_8T1xRTDOB-37hJV_fleAn41j0yIJvovxNcRaoIOq2wf9W4mDEc7mjYDo6aZO1LK9qQ-TQSNRSurplT53wL5GQhlb2m20uc5Ev3Tf17Fm2nNuLc2acnCblYDPlLvLcAF_fZmOGbd_O9rcppfRu36dlWgebB1FhHHTpqmqwFQWkKbsyP8JWU0rwkByLWshtzKNrEMrWtNakVvd3QyygeBOAZDeyKKARIuSO7mAlpCargBjR3RNOqo4LiHNlsBfIwEq07MZ0p2ZUEalSZEEvwBky63UTpYNuc0M7JdDohD6HLlEInodKMk8qUM78H7K2oURMQSi-mLJqMisNMgbJGiTJ9ghY8O4B5wLTuglJ-xZIiTOhDZYPLasBLOmlaxABz9HXFkQLEimVRnmJ3OlLmcvbKSdqMYrmzCrm95WXJ12CpbiH4Ln1O5ZzC2aZ6DndyU-zU7DXS1QL_Ndjdd-JsAIqbs9v3To5N5fB9zLshOf-uql6beRHX3H4Xy_hxWW6AqsHh-d7_NktVXtxxXTR2yhoe3cWAcs_bxqnxTBqRUha-onmROWuZpIXC05Em0v1vaB1bI50P2ZKjyrfXi33B4XFO47K4lXsKyFx7vW2Id3ZyKK9OUQMH7ztHPNY-vcQ38ZZliW5ORlDQYlpPYnVmg1NNNgWvIzt33g7oXy0LVwkMU8rNSu3g6ORWFa9GAxHL1NWqSxkdqqeL4HK0GEBs73RVma-_uGClnlMehWZR49Gdvvq8UiiqvZ1jZ0-OMHmD4xZFP6-bnxN6RCLsw=
+\ No newline at end of file
++PKIZ_eJy9V0tzozoT3etX3H1qKoBNEhbfgpexMJKNjXloZyDmJWwnNs9f_wnsSWYyuXUzc6uuq7yQQN2n-_RpNd--sZ-iGxD_paLNsPgGEISmIwfm4khgWkdYtiP1yPZWjqqqTqHKtt5qjmwpCU3SIlGIjXQ50ZskiddKUryAtMgMqeEUpTEStqkqEM5Xh3MWG9Ir8abZMlMeYcnT2EhrMkfDOoQHJY0meBJOzAJAyp2hanah0NKogw9wdmEHxDT0tuxlOYtK6UwcPdtvmuS5M6vA4ynMjwk8mHVobDsAD3xsqXJG_LTZ-SaNeCmNVWZIhR3S0NRy5NZy9KmrwXaZ69wylydeBgenDTP-AoiHucEis16EAp_u3mDTYvRUruvQm51CKp2IpmeDs7CcXchmcMJCuB4S9-PmDSosXQbVPBPPHoxx0cGlw8HduJZZfobnIucLtABoM8L5IbY1ZcaqeCaNe7fnBfFxHpW0iQ1ahxnzboh8aLQSGCwHwowLvLYmb0l0KzJXaoaMe08srZjnjpSz_AY_JQZ_AuE1IXxUNiO83XzNRdqxtnq9w920sXK5Qs5xivtIsCZBa_UBF-SkRAJhjhEPUG_32NtOAydoSInLpUazIGePnDiFWTPQRYlwg83oJl58CgVxFZbbMV-AZf8UsrijkqSBcOV-gE78IS_NmPXYN89XRlIunssPVvfUojyqkDptgJXrD0uN1VUmCWjzJGADCiTHZVDiHDuIQ71Ll4YuIIPkJE_EoIQCzvVJcE1uB66Qpreqcw87T6ocQaTwwCp0fv6Opgw8fGNJ4YOyPQXdNXfgT5P3PXfgj5Lnjvrhnn2FgissUodzdyjPD0X1fd-ULFX5tD7A3xXIF-tDBCgvuiHGr3D-GeXgdzgfKXegiEbK_yMaxX8KEXxGzTUEegm8mI4Hf2hxRGjTsMRvCFkIYhEZ0pCcfjjoTT6BXc6K0KPVFYXbhWPLM4_xfN2AZfZUIwdORsjqlPW9ZIJ7u45zvfqKNsBHcfxuUt8KibWx82cQ_wkh-F35fkQIfpf3j7SDT-TLjfLN9Rrn64xh60lp5kG_7bGGeOKkKc6VMhCC6dIzM4DzoMXC9cL4nrTb1XUtmkKqBjX6w31xWIuRca2HQJAu0dzlwC8SLsU6Lt_uQnZHrJtQYIm-XawfBQVGa976MlxpXxETGkJxIsYCGt8HP8GmP8O-NpFf-sUNAStvFZ7BF5oG84h43DEJd79SCbZ_IOEfHYJPPPJIkxtGZf-JhDcfmyv4IOGCqZPb-Wvxo4x3gitGEzYrvEufjwS3A_9muBjOgF-Hi3evsY9pRH-aE07kKrTR-23AGOhiteC7BYO-33m3xtKZjqPTIJyla9ed7VzePS1dsogOs8KbzxRIeWnvGCqQoymb-eYLNvspCBoF-z8j-9iocqC5tj3TG51H9rlR7XFt6I3pbnvdQnJhyPxWB6qCVJvTWz2XbSXBriJHjupiPixFMWY9goW2QYo8vqymyHQmCg0pZhMNfkVrvQFaM1q29Ca1iE97NmBW7BBFKjLUzYuxgeFEs3VTXgfeOxOuHA6GDpgDgyWrlDrS61ukwNGT3CJrK7hnkinOzosrNq2pMvOmNoEZQAJlb6spMlSQzBngBy-KbG9lNuoqsl45jyd9AeeC-HheWe3ZcDV83l82hJcKyxTugoXTmR29W7ggfMi9NIj3U057PbLunu_O-6Pf76PznSIHxJRq4e7OOIWL7KTwPgcP9f2rd7_dRKUwebBCDmgngUi2KFhknc5gFhThttK4Je6NbWFO4GIz0T3rsfJW4mql2yo1yqqtlZnzjLO21O874K2f7p-3F08ISRVMDf_iXbz5PD_K8sTuT0er8oTnKn5NWsdHyHVR99DQbfas-vv01XjSVsATVN47Wg1furyTLmYXI0p8ob7Xl6tjv6sXjplX6K40Nz4WV013XF_UIgmX3fSurGfTwwJ0j4vLEa_um-eE7-4VWqYvq8eX-zbZTFYPl2htaOZRdlYzh4P_A-M3io619--V_wMk2UFA
+\ No newline at end of file
+diff --git a/keystonemiddleware/auth_token/__init__.py b/keystonemiddleware/auth_token/__init__.py
+index cadfc02..545dfee 100644
+--- a/keystonemiddleware/auth_token/__init__.py
++++ b/keystonemiddleware/auth_token/__init__.py
+@@ -763,6 +763,18 @@ class AuthProtocol(object):
+ 
+                 if verified is not None:
+                     data = jsonutils.loads(verified)
++
++                    audit_ids = None
++                    if 'access' in data:
++                        # It's a v2 token.
++                        audit_ids = data['access']['token'].get('audit_ids')
++                    else:
++                        # It's a v3 token
++                        audit_ids = data['token'].get('audit_ids')
++
++                    if audit_ids:
++                        self._revocations.check_by_audit_id(audit_ids)
++
+                     expires = _get_token_expiration(data)
+                     _confirm_token_not_expired(expires)
+                 else:
+diff --git a/keystonemiddleware/auth_token/_revocations.py b/keystonemiddleware/auth_token/_revocations.py
+index 8cc449a..a68356a 100644
+--- a/keystonemiddleware/auth_token/_revocations.py
++++ b/keystonemiddleware/auth_token/_revocations.py
+@@ -104,3 +104,25 @@ class Revocations(object):
+         if self._any_revoked(token_ids):
+             self._log.debug('Token is marked as having been revoked')
+             raise exc.InvalidToken(_('Token has been revoked'))
++
++    def check_by_audit_id(self, audit_ids):
++        """Check whether the audit_id appears in the revocation list.
++
++        :raises keystonemiddleware.auth_token._exceptions.InvalidToken:
++            if the audit ID(s) appear in the revocation list.
++
++        """
++        revoked_tokens = self._list.get('revoked', None)
++        if not revoked_tokens:
++            # There's no revoked tokens, so nothing to do.
++            return
++
++        # The audit_id may not be present in the revocation events because
++        # earlier versions of the identity server didn't provide them.
++        revoked_ids = set(
++            x['audit_id'] for x in revoked_tokens if 'audit_id' in x)
++        for audit_id in audit_ids:
++            if audit_id in revoked_ids:
++                self._log.debug(
++                    'Token is marked as having been revoked by audit id')
++                raise exc.InvalidToken(_('Token has been revoked'))
+diff --git a/keystonemiddleware/tests/auth_token/test_auth_token_middleware.py b/keystonemiddleware/tests/auth_token/test_auth_token_middleware.py
+index 0122371..0c0aaa9 100644
+--- a/keystonemiddleware/tests/auth_token/test_auth_token_middleware.py
++++ b/keystonemiddleware/tests/auth_token/test_auth_token_middleware.py
+@@ -839,6 +839,32 @@ class CommonAuthTokenMiddlewareTest(object):
+     def test_revoked_hashed_pkiz_token(self):
+         self._test_revoked_hashed_token('signed_token_scoped_pkiz')
+ 
++    def test_revoked_pki_token_by_audit_id(self):
++        # When the audit ID is in the revocation list, the token is invalid.
++        self.set_middleware()
++        token = self.token_dict['signed_token_scoped']
++
++        # Put the token audit ID in the revocation list,
++        # the entry will have a false token ID so the token ID doesn't match.
++        fake_token_id = uuid.uuid4().hex
++        # The audit_id value is in examples/pki/cms/auth_*_token_scoped.json.
++        audit_id = 'SLIXlXQUQZWUi9VJrqdXqA'
++        revocation_list_data = {
++            'revoked': [
++                {
++                    'id': fake_token_id,
++                    'audit_id': audit_id
++                },
++            ]
++        }
++        self.middleware._revocations._list = jsonutils.dumps(
++            revocation_list_data)
++
++        req = webob.Request.blank('/')
++        req.headers['X-Auth-Token'] = token
++        self.middleware(req.environ, self.start_fake_response)
++        self.assertEqual(401, self.response_status)
++
+     def get_revocation_list_json(self, token_ids=None, mode=None):
+         if token_ids is None:
+             key = 'revoked_token_hash' + (('_' + mode) if mode else '')
+diff --git a/keystonemiddleware/tests/auth_token/test_revocations.py b/keystonemiddleware/tests/auth_token/test_revocations.py
+index d144bb6..9b28fa4 100644
+--- a/keystonemiddleware/tests/auth_token/test_revocations.py
++++ b/keystonemiddleware/tests/auth_token/test_revocations.py
+@@ -27,22 +27,24 @@ from keystonemiddleware.auth_token import _signing_dir
+ 
+ class RevocationsTests(testtools.TestCase):
+ 
+-    def _check_with_list(self, revoked_list, token_ids):
++    def _setup_revocations(self, revoked_list):
+         directory_name = '/tmp/%s' % uuid.uuid4().hex
+         signing_directory = _signing_dir.SigningDirectory(directory_name)
+         self.addCleanup(shutil.rmtree, directory_name)
+ 
+         identity_server = mock.Mock()
+ 
+-        verify_result_obj = {
+-            'revoked': list({'id': r} for r in revoked_list)
+-        }
++        verify_result_obj = {'revoked': revoked_list}
+         cms_verify = mock.Mock(return_value=json.dumps(verify_result_obj))
+ 
+         revocations = _revocations.Revocations(
+             timeout=datetime.timedelta(1), signing_directory=signing_directory,
+             identity_server=identity_server, cms_verify=cms_verify)
++        return revocations
+ 
++    def _check_with_list(self, revoked_list, token_ids):
++        revoked_list = list({'id': r} for r in revoked_list)
++        revocations = self._setup_revocations(revoked_list)
+         revocations.check(token_ids)
+ 
+     def test_check_empty_list(self):
+@@ -63,3 +65,40 @@ class RevocationsTests(testtools.TestCase):
+         token_ids = [token_id]
+         self.assertRaises(exc.InvalidToken,
+                           self._check_with_list, revoked_tokens, token_ids)
++
++    def test_check_by_audit_id_revoked(self):
++        # When the audit ID is in the revocation list, InvalidToken is raised.
++        audit_id = uuid.uuid4().hex
++        revoked_list = [{'id': uuid.uuid4().hex, 'audit_id': audit_id}]
++        revocations = self._setup_revocations(revoked_list)
++        self.assertRaises(exc.InvalidToken,
++                          revocations.check_by_audit_id, [audit_id])
++
++    def test_check_by_audit_id_chain_revoked(self):
++        # When the token's audit chain ID is in the revocation list,
++        # InvalidToken is raised.
++        revoked_audit_id = uuid.uuid4().hex
++        revoked_list = [{'id': uuid.uuid4().hex, 'audit_id': revoked_audit_id}]
++        revocations = self._setup_revocations(revoked_list)
++
++        token_audit_ids = [uuid.uuid4().hex, revoked_audit_id]
++        self.assertRaises(exc.InvalidToken,
++                          revocations.check_by_audit_id, token_audit_ids)
++
++    def test_check_by_audit_id_not_revoked(self):
++        # When the audit ID is not in the revocation list no exception.
++        revoked_list = [{'id': uuid.uuid4().hex, 'audit_id': uuid.uuid4().hex}]
++        revocations = self._setup_revocations(revoked_list)
++
++        audit_id = uuid.uuid4().hex
++        revocations.check_by_audit_id([audit_id])
++
++    def test_check_by_audit_id_no_audit_ids(self):
++        # Older identity servers don't send audit_ids in the revocation list.
++        # When this happens, check_by_audit_id still works, just doesn't
++        # verify anything.
++        revoked_list = [{'id': uuid.uuid4().hex}]
++        revocations = self._setup_revocations(revoked_list)
++
++        audit_id = uuid.uuid4().hex
++        revocations.check_by_audit_id([audit_id])
+-- 
+1.9.1
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/keystonemiddleware/patches/launchpad-1497082.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,46 @@
+From c99f2d947ccb3ad568679d25b6180bfc46906fc7 Mon Sep 17 00:00:00 2001
+From: Jamie Lennox <[email protected]>
+Date: Fri, 18 Sep 2015 13:17:45 +1000
+Subject: Ensure auth_plugin options are in generated CONF
+
+Add the common auth plugin options to the list of options used to
+generate sample config files.
+
+Closes-Bug: #1497082
+Change-Id: I22d704ebee18b6e9208126812e41aee6cc8331ef
+---
+
+--- keystonemiddleware-1.5.2/keystonemiddleware/opts.py.~1~	2015-06-29 08:36:33.000000000 -0700
++++ keystonemiddleware-1.5.2/keystonemiddleware/opts.py	2016-01-18 22:36:05.430322306 -0800
+@@ -18,6 +18,8 @@ __all__ = [
+ 
+ import copy
+ 
++from keystoneclient import auth
++
+ import keystonemiddleware.auth_token
+ from keystonemiddleware.auth_token import _auth
+ from keystonemiddleware.auth_token import _base
+@@ -25,7 +27,8 @@ from keystonemiddleware.auth_token impor
+ auth_token_opts = [
+     (_base.AUTHTOKEN_GROUP,
+      keystonemiddleware.auth_token._OPTS +
+-     _auth.AuthTokenPlugin.get_options())
++     _auth.AuthTokenPlugin.get_options() +
++     auth.get_common_conf_options())
+ ]
+ 
+ 
+--- keystonemiddleware-1.5.2/keystonemiddleware/tests/test_opts.py.~1~	2015-06-29 08:36:33.000000000 -0700
++++ keystonemiddleware-1.5.2/keystonemiddleware/tests/test_opts.py	2016-01-18 22:36:43.623641221 -0800
+@@ -62,7 +62,9 @@ class OptsTestCase(utils.TestCase):
+             'include_service_catalog',
+             'enforce_token_bind',
+             'check_revocations_for_cached',
+-            'hash_algorithms'
++            'hash_algorithms',
++            'auth_plugin',
++            'auth_section',
+         ]
+         opt_names = [o.name for (g, l) in result for o in l]
+         self.assertThat(opt_names, matchers.HasLength(len(expected_opt_names)))
--- a/components/python/keystonemiddleware/patches/nopycrypto.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/keystonemiddleware/patches/nopycrypto.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,8 +1,8 @@
 In-house removal of PyCrypto dependency in keystonemiddleware. This
 patch is Solaris-specific and not suitable for upstream.
 
---- keystonemiddleware-1.3.1/keystonemiddleware/_memcache_crypt.py.~1~	2014-12-22 12:40:35.000000000 -0800
-+++ keystonemiddleware-1.3.1/keystonemiddleware/_memcache_crypt.py	2015-01-31 23:52:53.543098553 -0800
+--- keystonemiddleware-1.5.0/keystonemiddleware/auth_token/_memcache_crypt.py.~1~	2015-03-11 11:41:14.000000000 -0600
++++ keystonemiddleware-1.5.0/keystonemiddleware/auth_token/_memcache_crypt.py	2015-04-27 17:30:54.664848743 -0600
 @@ -17,7 +17,7 @@
  Utilities for memcache encryption and integrity check.
  
--- a/components/python/kombu/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/kombu/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		kombu
-COMPONENT_VERSION=	3.0.7
+COMPONENT_VERSION=	3.0.32
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:1aed91b4e58c5114069b9432d229a6b8564f63000f50b03de1c514f2bdd42f1b
+    sha256:d3edda02076ae04fa62d128007756f4c4298fe479119ca070a47a22afe867660
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	http://kombu.readthedocs.org/
 COMPONENT_BUGDB=	python-mod/kombu
 
-TPNO=			21722
+TPNO=			26421
 
 # Depends on pyrabbit which depends on httplib2 which has its own dependency
 # issues (see its Makefile for details).  So don't build for Python 3 until
--- a/components/python/kombu/kombu-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/kombu/kombu-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,7 @@
 #
 
 #
-# Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 set name=pkg.fmri \
@@ -47,6 +47,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/kombu/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/kombu/abstract.py
 file path=usr/lib/python$(PYVER)/vendor-packages/kombu/async/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/kombu/async/debug.py
 file path=usr/lib/python$(PYVER)/vendor-packages/kombu/async/hub.py
 file path=usr/lib/python$(PYVER)/vendor-packages/kombu/async/semaphore.py
 file path=usr/lib/python$(PYVER)/vendor-packages/kombu/async/timer.py
@@ -82,12 +83,15 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/kombu/transport/django/migrations/0001_initial.py
 file path=usr/lib/python$(PYVER)/vendor-packages/kombu/transport/django/migrations/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/kombu/transport/django/models.py
+file path=usr/lib/python$(PYVER)/vendor-packages/kombu/transport/django/south_migrations/0001_initial.py
+file path=usr/lib/python$(PYVER)/vendor-packages/kombu/transport/django/south_migrations/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/kombu/transport/filesystem.py
 file path=usr/lib/python$(PYVER)/vendor-packages/kombu/transport/librabbitmq.py
 file path=usr/lib/python$(PYVER)/vendor-packages/kombu/transport/memory.py
 file path=usr/lib/python$(PYVER)/vendor-packages/kombu/transport/mongodb.py
 file path=usr/lib/python$(PYVER)/vendor-packages/kombu/transport/pyamqp.py
 file path=usr/lib/python$(PYVER)/vendor-packages/kombu/transport/pyro.py
+file path=usr/lib/python$(PYVER)/vendor-packages/kombu/transport/qpid.py
 file path=usr/lib/python$(PYVER)/vendor-packages/kombu/transport/redis.py
 file path=usr/lib/python$(PYVER)/vendor-packages/kombu/transport/sqlalchemy/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/kombu/transport/sqlalchemy/models.py
--- a/components/python/kombu/kombu.license	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/kombu/kombu.license	Fri Feb 05 17:54:17 2016 -0500
@@ -1,4 +1,6 @@
-Copyright (c) 2012 VMware, Inc.  All rights reserved.
+
+Copyright (c) 2015 Ask Solem & contributors.  All rights reserved.
+Copyright (c) 2012-2014 GoPivotal, Inc.  All rights reserved.
 Copyright (c) 2009-2012, Ask Solem & contributors.
 All rights reserved.
 
@@ -25,9 +27,9 @@
 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 POSSIBILITY OF SUCH DAMAGE.
 
---------------------------------------------------------------------------
-
-(c) 2010 - 2012 by David Clymer.
+------------------------------------------------------------
+kombu/transport/beanstalk.py:
+(c) 2010 - 2013 by David Ziegler.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are met:
@@ -52,9 +54,9 @@
 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 POSSIBILITY OF SUCH DAMAGE.
 
---------------------------------------------------------------------------
-
-(c) 2010 - 2012 by Mahendra M.
+------------------------------------------------------------
+kombu/transport/couchdb.py:
+copyright: (c) 2010 - 2013 by David Clymer.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are met:
@@ -79,9 +81,9 @@
 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 POSSIBILITY OF SUCH DAMAGE.
 
---------------------------------------------------------------------------
-
-(c) 2010 - 2012 by David Ziegler.
+------------------------------------------------------------
+kombu/transport/mongodb.py:
+copyright: (c) 2010 - 2013 by Flavio Percoco Premoli.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are met:
@@ -106,9 +108,9 @@
 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 POSSIBILITY OF SUCH DAMAGE.
 
---------------------------------------------------------------------------
-
-(c) 2010 - 2012 by Flavio Percoco Premoli.
+------------------------------------------------------------
+kombu/transport/zookeeper.py:
+copyright: (c) 2010 - 2013 by Mahendra M.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are met:
@@ -132,5 +134,3 @@
 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------
--- a/components/python/kombu/patches/01-python-2.7.11.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-Upstream patch for 
-https://github.com/celery/kombu/issues/545
-
-This is fixed in Kombu 3.0.30 or newer.
-
---- kombu-3.0.7/kombu/utils/__init__.py.orig 2013-11-09 16:53:13.000000000 -0800
-+++ kombu-3.0.7/kombu/utils/__init__.py 2016-01-13 14:51:53.587003755 -0800
-@@ -14,7 +14,11 @@ import sys
- from contextlib import contextmanager
- from itertools import count, repeat
- from time import sleep
--from uuid import UUID, uuid4 as _uuid4, _uuid_generate_random
-+from uuid import UUID, uuid4
-+try:
-+    from uuid import _uuid_generate_random
-+except ImportError:
-+    _uuid_generate_random = None
-
- from kombu.five import int_types, items, reraise, string_t
-
-@@ -125,13 +129,12 @@ def say(m, *fargs, **fkwargs):
-     print(str(m).format(*fargs, **fkwargs), file=sys.stderr)
-
-
--def uuid4():
--    # Workaround for http://bugs.python.org/issue4607
--    if ctypes and _uuid_generate_random:  # pragma: no cover
-+if ctypes and _uuid_generate_random:  # pragma: no cover
-+    def uuid4():
-+        # Workaround for http://bugs.python.org/issue4607
-         buffer = ctypes.create_string_buffer(16)
-         _uuid_generate_random(buffer)
-         return UUID(bytes=buffer.raw)
--    return _uuid4()
-
-
- def uuid():
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/linecache2/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,61 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+include ../../../make-rules/shared-macros.mk
+
+COMPONENT_NAME=		linecache2
+COMPONENT_VERSION=	1.0.0
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
+COMPONENT_ARCHIVE_HASH=	\
+    sha256:4b26ff4e7110db76eeb6f5a7b64a82623839d595c2038eeda662f2a2db78e97c
+COMPONENT_ARCHIVE_URL=	$(call pypi_url)
+COMPONENT_PROJECT_URL=	http://pypi.python.org/pypi/linecache2/
+COMPONENT_BUGDB=	python-mod/linecache2
+
+TPNO=			22937
+
+include $(WS_MAKE_RULES)/prep.mk
+include $(WS_MAKE_RULES)/setup.py.mk
+include $(WS_MAKE_RULES)/ips.mk
+
+ASLR_MODE = $(ASLR_NOT_APPLICABLE)
+
+#
+# python2.7 absolutely can not compile this file.  It's full of
+# python3.5 things (type annotations) that cause 2.7 to puke.   Since
+# we don't deliver test files, just remove it from the unpacked build
+# directory.  Strangely, 2.6 and 3.4 have no issues with the odd new
+# syntax.  
+#
+COMPONENT_POST_UNPACK_ACTION += \
+	$(RM) $(SOURCE_DIR)/linecache2/tests/inspect_fodder2.py
+
+# common targets
+build:		$(BUILD_NO_ARCH)
+
+install:	$(INSTALL_NO_ARCH)
+
+test:		$(NO_TESTS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/linecache2/linecache2-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,57 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+set name=pkg.fmri \
+    value=pkg:/library/python/linecache2-$(PYV)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary value="Backports of the linecache module"
+set name=pkg.description \
+    value="Linecache2 is a backport of linecache to older supported Pythons"
+set name=com.oracle.info.description value="the Python linecache2 module"
+set name=com.oracle.info.tpno value=$(TPNO)
+set name=info.classification \
+    value=org.opensolaris.category.2008:Development/Python
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=info.upstream value="Testing-cabal <[email protected]>"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=org.opensolaris.arc-caseid value=PSARC/2016/018
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+#
+file path=usr/lib/python$(PYVER)/vendor-packages/linecache2-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
+file path=usr/lib/python$(PYVER)/vendor-packages/linecache2-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/linecache2-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/linecache2-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/linecache2-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
+file path=usr/lib/python$(PYVER)/vendor-packages/linecache2-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/linecache2/__init__.py
+#
+license linecache2.license license=PSF
+
+# force a dependency on the Python runtime
+depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
+    pkg.debug.depend.path=usr/bin
+
+# force a dependency on the linecache2 package
+depend type=require \
+    fmri=library/python/linecache2@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/linecache2/linecache2.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,198 @@
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Python Software Foundation; All Rights
+Reserved.
+
+Python License (Python-2.0)
+Python License, Version 2 (Python-2.0)
+
+PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
+--------------------------------------------
+
+1. This LICENSE AGREEMENT is between the Python Software Foundation
+("PSF"), and the Individual or Organization ("Licensee") accessing and
+otherwise using this software ("Python") in source or binary form and
+its associated documentation.
+
+2. Subject to the terms and conditions of this License Agreement, PSF
+hereby grants Licensee a nonexclusive, royalty-free, world-wide
+license to reproduce, analyze, test, perform and/or display publicly,
+prepare derivative works, distribute, and otherwise use Python
+alone or in any derivative version, provided, however, that PSF's
+License Agreement and PSF's notice of copyright, i.e., "Copyright (c)
+2001, 2002, 2003, 2004, 2005, 2006 Python Software Foundation; All Rights
+Reserved" are retained in Python alone or in any derivative version
+prepared by Licensee.
+
+3. In the event Licensee prepares a derivative work that is based on
+or incorporates Python or any part thereof, and wants to make
+the derivative work available to others as provided herein, then
+Licensee hereby agrees to include in any such work a brief summary of
+the changes made to Python.
+
+4. PSF is making Python available to Licensee on an "AS IS"
+basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
+DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
+INFRINGE ANY THIRD PARTY RIGHTS.
+
+5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
+FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
+A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
+OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+6. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+7. Nothing in this License Agreement shall be deemed to create any
+relationship of agency, partnership, or joint venture between PSF and
+Licensee. This License Agreement does not grant permission to use PSF
+trademarks or trade name in a trademark sense to endorse or promote
+products or services of Licensee, or any third party.
+
+8. By copying, installing or otherwise using Python, Licensee
+agrees to be bound by the terms and conditions of this License
+Agreement.
+
+BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0
+-------------------------------------------
+
+BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1
+
+1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an
+office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the
+Individual or Organization ("Licensee") accessing and otherwise using
+this software in source or binary form and its associated
+documentation ("the Software").
+
+2. Subject to the terms and conditions of this BeOpen Python License
+Agreement, BeOpen hereby grants Licensee a non-exclusive,
+royalty-free, world-wide license to reproduce, analyze, test, perform
+and/or display publicly, prepare derivative works, distribute, and
+otherwise use the Software alone or in any derivative version,
+provided, however, that the BeOpen Python License is retained in the
+Software, alone or in any derivative version prepared by Licensee.
+
+3. BeOpen is making the Software available to Licensee on an "AS IS"
+basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND
+DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT
+INFRINGE ANY THIRD PARTY RIGHTS.
+
+4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE
+SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS
+AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY
+DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+5. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+6. This License Agreement shall be governed by and interpreted in all
+respects by the law of the State of California, excluding conflict of
+law provisions. Nothing in this License Agreement shall be deemed to
+create any relationship of agency, partnership, or joint venture
+between BeOpen and Licensee. This License Agreement does not grant
+permission to use BeOpen trademarks or trade names in a trademark
+sense to endorse or promote products or services of Licensee, or any
+third party. As an exception, the "BeOpen Python" logos available at
+http://www.pythonlabs.com/logos.html may be used according to the
+permissions granted on that web page.
+
+7. By copying, installing or otherwise using the software, Licensee
+agrees to be bound by the terms and conditions of this License
+Agreement.
+
+CNRI OPEN SOURCE LICENSE AGREEMENT (for Python 1.6b1)
+--------------------------------------------------
+
+IMPORTANT: PLEASE READ THE FOLLOWING AGREEMENT CAREFULLY.
+
+BY CLICKING ON "ACCEPT" WHERE INDICATED BELOW, OR BY COPYING,
+INSTALLING OR OTHERWISE USING PYTHON 1.6, beta 1 SOFTWARE, YOU ARE
+DEEMED TO HAVE AGREED TO THE TERMS AND CONDITIONS OF THIS LICENSE
+AGREEMENT.
+
+1. This LICENSE AGREEMENT is between the Corporation for National
+Research Initiatives, having an office at 1895 Preston White Drive,
+Reston, VA 20191 ("CNRI"), and the Individual or Organization
+("Licensee") accessing and otherwise using Python 1.6, beta 1
+software in source or binary form and its associated documentation,
+as released at the www.python.org Internet site on August 4, 2000
+("Python 1.6b1").
+
+2. Subject to the terms and conditions of this License Agreement, CNRI
+hereby grants Licensee a non-exclusive, royalty-free, world-wide
+license to reproduce, analyze, test, perform and/or display
+publicly, prepare derivative works, distribute, and otherwise use
+Python 1.6b1 alone or in any derivative version, provided, however,
+that CNRIs License Agreement is retained in Python 1.6b1, alone or
+in any derivative version prepared by Licensee.
+
+Alternately, in lieu of CNRIs License Agreement, Licensee may
+substitute the following text (omitting the quotes): "Python 1.6,
+beta 1, is made available subject to the terms and conditions in
+CNRIs License Agreement. This Agreement may be located on the
+Internet using the following unique, persistent identifier (known
+as a handle): 1895.22/1011. This Agreement may also be obtained
+from a proxy server on the Internet using the
+URL:http://hdl.handle.net/1895.22/1011".
+
+3. In the event Licensee prepares a derivative work that is based on
+or incorporates Python 1.6b1 or any part thereof, and wants to make
+the derivative work available to the public as provided herein,
+then Licensee hereby agrees to indicate in any such work the nature
+of the modifications made to Python 1.6b1.
+
+4. CNRI is making Python 1.6b1 available to Licensee on an "AS IS"
+basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND
+DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR
+FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6b1
+WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
+
+5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE
+SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR
+LOSS AS A RESULT OF USING, MODIFYING OR DISTRIBUTING PYTHON 1.6b1,
+OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY
+THEREOF.
+
+6. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+7. This License Agreement shall be governed by and interpreted in all
+respects by the law of the State of Virginia, excluding conflict of
+law provisions. Nothing in this License Agreement shall be deemed
+to create any relationship of agency, partnership, or joint venture
+between CNRI and Licensee. This License Agreement does not grant
+permission to use CNRI trademarks or trade name in a trademark
+sense to endorse or promote products or services of Licensee, or
+any third party.
+
+8. By clicking on the "ACCEPT" button where indicated, or by copying,
+installing or otherwise using Python 1.6b1, Licensee agrees to be
+bound by the terms and conditions of this License Agreement.
+
+ACCEPT
+
+CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2
+--------------------------------------------------
+
+Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam,
+The Netherlands. All rights reserved.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Stichting Mathematisch
+Centrum or CWI not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
+FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/msgpack/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,59 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+include ../../../make-rules/shared-macros.mk
+
+COMPONENT_NAME=		msgpack-python
+COMPONENT_VERSION=	0.4.6
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
+COMPONENT_ARCHIVE_HASH=	\
+	sha256:bfcc581c9dbbf07cc2f951baf30c3249a57e20dcbd60f7e6ffc43ab3cc614794
+COMPONENT_ARCHIVE_URL=	$(call pypi_url)
+COMPONENT_PROJECT_URL=	http://pypi.python.org/pypi/msgpack-python/
+COMPONENT_BUGDB=	python-mod/msgpack
+
+TPNO=			23146
+
+include $(WS_MAKE_RULES)/prep.mk
+include $(WS_MAKE_RULES)/setup.py.mk
+include $(WS_MAKE_RULES)/ips.mk
+
+ASLR_MODE = $(ASLR_NOT_APPLICABLE)
+
+COMPONENT_TEST_DIR=	$(SOURCE_DIR)
+COMPONENT_TEST_ARGS=	""
+COMPONENT_TEST_CMD=	py.test-$(PYTHON_VERSION)
+
+# There's a C++ extension to build a shared library but distutils
+# doesn't seem to want to build it.  See bug 22674518 for more
+# information.
+
+# common targets
+build:		$(BUILD_NO_ARCH)
+
+install:	$(INSTALL_NO_ARCH)
+
+test:		$(TEST_NO_ARCH)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/msgpack/msgpack-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,58 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+set name=pkg.fmri \
+    value=pkg:/library/python/msgpack-$(PYV)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary value="MessagePack (de)serializer"
+set name=pkg.description \
+    value="MessagePack is a fast, compact binary serialization format, suitable for similar data to JSON. This package provides CPython bindings for reading and writing MessagePack data."
+set name=com.oracle.info.description value="the Python msgpack module"
+set name=com.oracle.info.tpno value=$(TPNO)
+set name=info.classification \
+    value=org.opensolaris.category.2008:Development/Python
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=info.upstream value="INADA Naoki <[email protected]>"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=org.opensolaris.arc-caseid value=PSARC/2015/460
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+#
+file path=usr/lib/python$(PYVER)/vendor-packages/msgpack/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/msgpack/_version.py
+file path=usr/lib/python$(PYVER)/vendor-packages/msgpack/exceptions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/msgpack/fallback.py
+file path=usr/lib/python$(PYVER)/vendor-packages/msgpack_python-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
+file path=usr/lib/python$(PYVER)/vendor-packages/msgpack_python-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/msgpack_python-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/msgpack_python-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
+#
+license msgpack.license license="Apache v2.0"
+
+# force a dependency on the Python runtime
+depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
+    pkg.debug.depend.path=usr/bin
+
+# force a dependency on the msgpack package
+depend type=require \
+    fmri=library/python/msgpack@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/msgpack/msgpack.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,227 @@
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+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.
+
+------------------------------------------------------------
+
+Copyright (C) 2008-2011 INADA Naoki
+
+   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.
--- a/components/python/neutronclient/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/neutronclient/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		python-neutronclient
-COMPONENT_VERSION=	2.3.10
+COMPONENT_VERSION=	2.4.0
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:f2e0abd6511f0372849f132c74e839fcbfd88d508ccd69459e388ee0d6059ed0
+    sha256:4c5c3a79216c682926f75ffd8db5f4338525a643ea02de37df7bf82a1e486b28
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	http://launchpad.net/python-neutronclient
 COMPONENT_BUGDB=	service/neutron
 
-TPNO=			21734
+TPNO=			25755
 
 # Depends on netaddr which is not Python 3 ready.
 PYTHON_VERSIONS=	$(PYTHON2_VERSIONS)
--- a/components/python/neutronclient/neutronclient-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/neutronclient/neutronclient-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,7 @@
 #
 
 #
-# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
 #
 
 set name=pkg.fmri \
@@ -52,6 +52,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/common/command.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/common/constants.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/common/exceptions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/common/extension.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/common/serializer.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/common/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/common/validators.py
@@ -61,6 +62,8 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/agent.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/agentscheduler.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/contrib/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/contrib/_fox_sockets.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/credential.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/extension.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/floatingip.py
@@ -72,6 +75,12 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/lb/healthmonitor.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/lb/member.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/lb/pool.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/lb/v2/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/lb/v2/healthmonitor.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/lb/v2/listener.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/lb/v2/loadbalancer.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/lb/v2/member.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/lb/v2/pool.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/lb/vip.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/metering.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/nec/__init__.py
@@ -89,6 +98,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/securitygroup.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/servicetype.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/subnet.py
+file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/subnetpool.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/vpn/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/vpn/ikepolicy.py
 file path=usr/lib/python$(PYVER)/vendor-packages/neutronclient/neutron/v2_0/vpn/ipsec_site_connection.py
@@ -104,6 +114,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/python_neutronclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_neutronclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/entry_points.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_neutronclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/python_neutronclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
 file path=usr/lib/python$(PYVER)/vendor-packages/python_neutronclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_neutronclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
 #
@@ -115,6 +126,9 @@
 # force a dependency on cliff; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/cliff-$(PYV)
 
+# force a dependency on iso8601; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/iso8601-$(PYV)
+
 # force a dependency on keystoneclient; pkgdepend work is needed to flush this
 # out.
 depend type=require fmri=library/python/keystoneclient-$(PYV)
@@ -142,5 +156,8 @@
 # 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 simplejson; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/simplejson-$(PYV)
+
 # force a dependency on six; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/six-$(PYV)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/neutronclient/patches/01-requirements.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,23 @@
+In-house patch to remove the dependency on argparse.  Since we use
+Python 2.7 only for OpenStack, argparse is already included.  If this
+line is present, stevedore will fail to find the pip package for it,
+causing a cascade of failures to other tools.
+
+--- python-neutronclient-2.4.0/requirements.txt.orig	2015-10-19 23:03:48.182019198 -0400
++++ python-neutronclient-2.4.0/requirements.txt	2015-10-19 23:06:30.741731889 -0400
+@@ -2,7 +2,6 @@
+ # of appearance. Changing the order has an impact on the overall integration
+ # process, which may cause wedges in the gate later.
+ pbr>=0.6,!=0.7,<1.0
+-argparse
+ cliff>=1.10.0,<1.11.0  # Apache-2.0
+ iso8601>=0.1.9
+ netaddr>=0.7.12
+--- python-neutronclient-2.4.0/python_neutronclient.egg-info/requires.txt.orig	2015-10-19 23:04:16.421625992 -0400
++++ python-neutronclient-2.4.0/python_neutronclient.egg-info/requires.txt	2015-10-19 23:06:19.661979752 -0400
+@@ -1,5 +1,4 @@
+ pbr>=0.6,!=0.7,<1.0
+-argparse
+ cliff>=1.10.0,<1.11.0  # Apache-2.0
+ iso8601>=0.1.9
+ netaddr>=0.7.12
--- a/components/python/novaclient/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/novaclient/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		python-novaclient
-COMPONENT_VERSION=	2.20.0
+COMPONENT_VERSION=	2.23.2
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:73fc8169d58e910340aae1ac5370c3b63a9943f748e2a20e4a1dfd7277525c86
+    sha256:730cb006395b2df336bbfd75aa2f459375594726a50fe3b9126212ed487fcf98
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	http://launchpad.net/python-novaclient
 COMPONENT_BUGDB=	service/nova
 
-TPNO=			21735
+TPNO=			25756
 
 include $(WS_MAKE_RULES)/prep.mk
 include $(WS_MAKE_RULES)/setup.py.mk
--- a/components/python/novaclient/novaclient-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/novaclient/novaclient-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -17,6 +17,7 @@
 # information: Portions Copyright [yyyy] [name of copyright owner]
 #
 # CDDL HEADER END
+#
 
 #
 # Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
@@ -58,97 +59,79 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/crypto.py
 file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/exceptions.py
 file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/extension.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/i18n.py
 file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/openstack/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/openstack/common/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/openstack/common/_i18n.py
 file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/openstack/common/apiclient/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/openstack/common/apiclient/auth.py
 file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/openstack/common/apiclient/base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/openstack/common/apiclient/client.py
 file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/openstack/common/apiclient/exceptions.py
 file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/openstack/common/apiclient/fake_client.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/openstack/common/apiclient/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/openstack/common/cliutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/openstack/common/gettextutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/openstack/common/importutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/openstack/common/jsonutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/openstack/common/strutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/openstack/common/timeutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/openstack/common/uuidutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/service_catalog.py
 file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/shell.py
 file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/agents.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/aggregates.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/availability_zones.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/certs.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/client.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/cloudpipe.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/contrib/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/contrib/assisted_volume_snapshots.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/contrib/baremetal.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/contrib/cells.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/contrib/deferred_delete.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/contrib/host_evacuate.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/contrib/host_servers_migrate.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/contrib/instance_action.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/contrib/list_extensions.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/contrib/metadata_extensions.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/contrib/migrations.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/contrib/server_external_events.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/contrib/tenant_networks.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/fixed_ips.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/flavor_access.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/flavors.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/floating_ip_dns.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/floating_ip_pools.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/floating_ips.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/floating_ips_bulk.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/fping.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/hosts.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/hypervisors.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/images.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/keypairs.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/limits.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/networks.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/quota_classes.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/quotas.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/security_group_default_rules.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/security_group_rules.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/security_groups.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/server_groups.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/servers.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/services.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/shell.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/usage.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/versions.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/virtual_interfaces.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/volume_snapshots.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/volume_types.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v1_1/volumes.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v3/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v3/agents.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v3/aggregates.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v3/availability_zones.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v3/certs.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v3/client.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v3/flavor_access.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v3/flavors.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v3/hosts.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v3/hypervisors.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v3/images.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v3/keypairs.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v3/list_extensions.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v3/quotas.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v3/servers.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v3/services.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v3/shell.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v3/usage.py
-file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v3/volumes.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/agents.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/aggregates.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/availability_zones.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/certs.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/client.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/cloudpipe.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/contrib/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/contrib/assisted_volume_snapshots.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/contrib/baremetal.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/contrib/cells.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/contrib/deferred_delete.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/contrib/host_evacuate.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/contrib/host_evacuate_live.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/contrib/host_servers_migrate.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/contrib/instance_action.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/contrib/list_extensions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/contrib/metadata_extensions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/contrib/migrations.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/contrib/server_external_events.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/contrib/tenant_networks.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/fixed_ips.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/flavor_access.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/flavors.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/floating_ip_dns.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/floating_ip_pools.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/floating_ips.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/floating_ips_bulk.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/fping.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/hosts.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/hypervisors.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/images.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/keypairs.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/limits.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/networks.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/quota_classes.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/quotas.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/security_group_default_rules.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/security_group_rules.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/security_groups.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/server_groups.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/servers.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/services.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/shell.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/usage.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/versions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/virtual_interfaces.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/volume_snapshots.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/volume_types.py
+file path=usr/lib/python$(PYVER)/vendor-packages/novaclient/v2/volumes.py
 file path=usr/lib/python$(PYVER)/vendor-packages/python_novaclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
 file path=usr/lib/python$(PYVER)/vendor-packages/python_novaclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_novaclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_novaclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/entry_points.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_novaclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/python_novaclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
 file path=usr/lib/python$(PYVER)/vendor-packages/python_novaclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_novaclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
 #
--- a/components/python/novaclient/patches/01-novaclient-migration-list.patch	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/novaclient/patches/01-novaclient-migration-list.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -1,14 +1,15 @@
 # Patch to prevent nova migration-list from generating an error.
 # This patch has not yet been submitted upstream. 
 
---- python-novaclient-2.20.0/novaclient/base.py.~1~	2014-09-20 15:12:42.000000000 -0700
-+++ python-novaclient-2.20.0/novaclient/base.py	2014-12-13 14:26:17.459463436 -0800
-@@ -76,7 +76,7 @@ class Manager(utils.HookableMixin):
+--- python-novaclient-2.23.0/novaclient/base.py.~1~	2015-05-08 13:53:27.607540246 -0600
++++ python-novaclient-2.23.0/novaclient/base.py	2015-05-08 13:53:50.138620241 -0600
+@@ -73,7 +73,7 @@ class Manager(base.HookableMixin):
              try:
                  data = data['values']
              except KeyError:
 -                pass
 +                data = []
  
-         self._clear_completion_cache_for_class(obj_class)
- 
+         with self.completion_cache('human_id', obj_class, mode="w"):
+             with self.completion_cache('uuid', obj_class, mode="w"):
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/novaclient/patches/02-requirements.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,23 @@
+In-house patch to remove the dependency on argparse.  Since we use
+Python 2.7 only for OpenStack, argparse is already included.  If this
+line is present, stevedore will fail to find the pip package for it,
+causing a cascade of failures to other tools.
+
+--- python-novaclient-2.23.2/requirements.txt.orig	2015-10-19 23:15:22.452732631 -0400
++++ python-novaclient-2.23.2/requirements.txt	2015-10-19 23:15:58.711612267 -0400
+@@ -2,7 +2,6 @@
+ # of appearance. Changing the order has an impact on the overall integration
+ # process, which may cause wedges in the gate later.
+ pbr!=0.7,<1.0,>=0.6
+-argparse
+ iso8601>=0.1.9
+ oslo.i18n<1.6.0,>=1.5.0 # Apache-2.0
+ oslo.serialization<1.5.0,>=1.4.0 # Apache-2.0
+--- python-novaclient-2.23.2/python_novaclient.egg-info/requires.txt.orig	2015-10-19 23:15:45.468573818 -0400
++++ python-novaclient-2.23.2/python_novaclient.egg-info/requires.txt	2015-10-19 23:16:07.167364902 -0400
+@@ -1,5 +1,4 @@
+ pbr!=0.7,<1.0,>=0.6
+-argparse
+ iso8601>=0.1.9
+ oslo.i18n<1.6.0,>=1.5.0 # Apache-2.0
+ oslo.serialization<1.5.0,>=1.4.0 # Apache-2.0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/openstackclient/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,60 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+include ../../../make-rules/shared-macros.mk
+
+COMPONENT_NAME=		python-openstackclient
+COMPONENT_VERSION=	1.0.4
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
+COMPONENT_ARCHIVE_HASH=	\
+    sha256:4ae6d7b35fd1da2a07959fea9639e506871abfb769c62f3692d2f2585605ac85
+COMPONENT_ARCHIVE_URL=	$(call pypi_url)
+COMPONENT_PROJECT_URL=	http://launchpad.net/python-openstackclient
+COMPONENT_BUGDB=	python-mod/osclient
+
+TPNO=			24760
+
+# Depends on keystoneclient which is not Python 3 ready.
+PYTHON_VERSIONS=	$(PYTHON2_VERSIONS)
+
+include $(WS_MAKE_RULES)/prep.mk
+include $(WS_MAKE_RULES)/setup.py.mk
+include $(WS_MAKE_RULES)/ips.mk
+
+ASLR_MODE = $(ASLR_NOT_APPLICABLE)
+
+COMPONENT_POST_INSTALL_ACTION = \
+	(cd $(PROTO_DIR)/usr/bin ; \
+	 $(MV) -f openstack openstack-$(PYTHON_VERSION))
+
+# common targets
+build:		$(BUILD_NO_ARCH)
+
+install:	$(INSTALL_NO_ARCH)
+
+test:		$(NO_TESTS)
+
+system-test:    $(NO_TESTS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/openstackclient/openstackclient-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,197 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+set name=pkg.fmri \
+    value=pkg:/library/python/openstackclient-$(PYV)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary value="Command-line client for the OpenStack APIs"
+set name=pkg.description \
+    value="OpenStackClient (aka OSC) is a command-line client for OpenStack that brings the command set for Compute, Identity, Image, Object Store and Volume APIs together in a single shell with a uniform command structure. The primary goal of OSC is to provide a single command line interface for OpenStack services with a uniform command set and format."
+set name=com.oracle.info.description \
+    value="openstackclient, a unified command line client for the OpenStack services"
+set name=com.oracle.info.tpno value=$(TPNO)
+set name=info.classification \
+    value=org.opensolaris.category.2008:Development/Python \
+    value="org.opensolaris.category.2008:System/Administration and Configuration" \
+    value="org.opensolaris.category.2008:System/Enterprise Management"
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=info.upstream value="OpenStack <[email protected]>"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=org.opensolaris.arc-caseid value=PSARC/2015/466
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+#
+link path=usr/bin/openstack target=openstack-$(PYVER) mediator=python \
+    mediator-version=$(PYVER)
+file path=usr/bin/openstack-$(PYVER)
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/api/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/api/api.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/api/auth.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/api/auth_plugin.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/api/image_v1.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/api/image_v2.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/api/network_v2.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/api/object_store_v1.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/api/utils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/common/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/common/clientmanager.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/common/commandmanager.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/common/exceptions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/common/extension.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/common/limits.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/common/module.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/common/parseractions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/common/quota.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/common/timing.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/common/utils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/compute/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/compute/client.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/compute/v2/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/compute/v2/agent.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/compute/v2/aggregate.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/compute/v2/availability_zone.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/compute/v2/console.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/compute/v2/fixedip.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/compute/v2/flavor.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/compute/v2/floatingip.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/compute/v2/floatingippool.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/compute/v2/host.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/compute/v2/hypervisor.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/compute/v2/hypervisor_stats.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/compute/v2/keypair.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/compute/v2/security_group.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/compute/v2/server.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/compute/v2/service.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/compute/v2/usage.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/i18n.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/client.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/common.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v2_0/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v2_0/catalog.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v2_0/ec2creds.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v2_0/endpoint.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v2_0/project.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v2_0/role.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v2_0/service.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v2_0/token.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v2_0/user.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v3/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v3/catalog.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v3/consumer.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v3/credential.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v3/domain.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v3/endpoint.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v3/federation_protocol.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v3/group.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v3/identity_provider.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v3/mapping.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v3/policy.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v3/project.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v3/region.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v3/role.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v3/role_assignment.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v3/service.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v3/token.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v3/trust.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v3/unscoped_saml.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/identity/v3/user.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/image/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/image/client.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/image/v1/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/image/v1/image.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/image/v2/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/image/v2/image.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/network/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/network/client.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/network/common.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/network/v2/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/network/v2/network.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/object/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/object/client.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/object/v1/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/object/v1/container.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/object/v1/lib/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/object/v1/object.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/shell.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/volume/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/volume/client.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/volume/v1/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/volume/v1/backup.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/volume/v1/snapshot.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/volume/v1/type.py
+file path=usr/lib/python$(PYVER)/vendor-packages/openstackclient/volume/v1/volume.py
+file path=usr/lib/python$(PYVER)/vendor-packages/python_openstackclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
+file path=usr/lib/python$(PYVER)/vendor-packages/python_openstackclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/python_openstackclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/python_openstackclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/entry_points.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/python_openstackclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/python_openstackclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
+file path=usr/lib/python$(PYVER)/vendor-packages/python_openstackclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/python_openstackclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
+#
+license openstackclient.license license="Apache v2.0"
+
+# 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 cliff; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/cliff-$(PYV)
+
+# force a dependency on glanceclient; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/glanceclient-$(PYV)
+
+# force a dependency on keystoneclient; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/keystoneclient-$(PYV)
+
+# force a dependency on neutronclient; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/neutronclient-$(PYV)
+
+# force a dependency on novaclient; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/novaclient-$(PYV)
+
+# force a dependency on the openstackclient package
+depend type=require \
+    fmri=library/python/openstackclient@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+
+# force a dependency on oslo.config; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/oslo.config-$(PYV)
+
+# 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.utils; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/oslo.utils-$(PYV)
+
+# force a dependency on pbr; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/pbr-$(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 six; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/six-$(PYV)
+
+# force a dependency on stevedore; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/stevedore-$(PYV)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/openstackclient/openstackclient.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,212 @@
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/openstackclient/patches/01-requirements.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,46 @@
+In house patch to modify dependencies openstackclient's requirements files.
+The specific reasons are as follows:
+
+    cliff-tablib:  Not applicable
+    python-cinderclient:  push to version 1.3.1
+
+--- python-openstackclient-1.0.4/requirements.txt.orig	2015-11-19 12:56:09.037137656 -0700
++++ python-openstackclient-1.0.4/requirements.txt	2015-11-19 12:51:38.972729254 -0700
+@@ -6,7 +6,6 @@ six>=1.9.0
+ 
+ Babel>=1.3
+ cliff>=1.10.0,<1.11.0  # Apache-2.0
+-cliff-tablib>=1.0
+ oslo.config>=1.9.3,<1.10.0  # Apache-2.0
+ oslo.i18n>=1.5.0,<1.6.0  # Apache-2.0
+ oslo.utils>=1.4.0,<1.5.0                       # Apache-2.0
+@@ -14,7 +13,7 @@ oslo.serialization>=1.4.0,<1.5.0
+ python-glanceclient>=0.15.0,<0.18.0
+ python-keystoneclient>=1.1.0,<1.4.0
+ python-novaclient>=2.22.0,<2.24.0
+-python-cinderclient>=1.1.0,<1.2.0
++python-cinderclient>=1.1.0,<=1.3.1
+ python-neutronclient>=2.3.11,<2.5.0
+ requests>=2.2.0,!=2.4.0
+ stevedore>=1.3.0,<1.4.0  # Apache-2.0
+
+--- python-openstackclient-1.0.4/python_openstackclient.egg-info/requires.txt.orig	2015-11-19 12:56:59.337766773 -0700
++++ python-openstackclient-1.0.4/python_openstackclient.egg-info/requires.txt	2015-11-19 12:57:13.594181649 -0700
+@@ -2,7 +2,6 @@ pbr>=0.6,!=0.7,<1.0
+ six>=1.9.0
+ Babel>=1.3
+ cliff>=1.10.0,<1.11.0  # Apache-2.0
+-cliff-tablib>=1.0
+ oslo.config>=1.9.3,<1.10.0  # Apache-2.0
+ oslo.i18n>=1.5.0,<1.6.0  # Apache-2.0
+ oslo.utils>=1.4.0,<1.5.0                       # Apache-2.0
+@@ -10,7 +9,7 @@ oslo.serialization>=1.4.0,<1.5.0
+ python-glanceclient>=0.15.0,<0.18.0
+ python-keystoneclient>=1.1.0,<1.4.0
+ python-novaclient>=2.22.0,<2.24.0
+-python-cinderclient>=1.1.0,<1.2.0
++python-cinderclient>=1.1.0,<=1.3.1
+ python-neutronclient>=2.3.11,<2.5.0
+ requests>=2.2.0,!=2.4.0
+ stevedore>=1.3.0,<1.4.0  # Apache-2.0
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.concurrency/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,62 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+include ../../../make-rules/shared-macros.mk
+
+COMPONENT_NAME=		oslo.concurrency
+COMPONENT_VERSION=	1.8.2
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
+COMPONENT_ARCHIVE_HASH=	\
+	sha256:149f4c972916f14c14c97d7be7b92ba59497c1bbd09c114ee3681bef0773daca
+COMPONENT_ARCHIVE_URL=	$(call pypi_url)
+COMPONENT_PROJECT_URL=	https://launchpad.net/oslo.concurrency
+COMPONENT_BUGDB=	python-mod/oslo.concurren
+
+TPNO=			25717
+
+# Depends on oslo.utils which is Python 2 only
+PYTHON_VERSIONS=	$(PYTHON2_VERSIONS)
+
+include $(WS_MAKE_RULES)/prep.mk
+include $(WS_MAKE_RULES)/setup.py.mk
+include $(WS_MAKE_RULES)/ips.mk
+
+COMPONENT_POST_INSTALL_ACTION += \
+	cd $(PROTO_DIR)/usr/bin; \
+	$(MV) -f lockutils-wrapper lockutils-wrapper-$(PYTHON_VERSION)
+
+ASLR_MODE = $(ASLR_NOT_APPLICABLE)
+
+# common targets
+build:		$(BUILD_NO_ARCH)
+
+install:	$(INSTALL_NO_ARCH)
+
+# see $(COMPONENT_SRC)/test-requirements.txt for the python modules
+# required to execute unittests.
+test:		$(NO_TESTS)
+
+system-test:    $(NO_TESTS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.concurrency/oslo.concurrency-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,92 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+set name=pkg.fmri \
+    value=pkg:/library/python/oslo.concurrency-$(PYV)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary value="Oslo concurrency library"
+set name=pkg.description \
+    value="The Oslo concurrency library has utilities for safely running multi-thread, multi-process applications using locking mechanisms and for running external processes."
+set name=com.oracle.info.description value="the Oslo concurrency library"
+set name=com.oracle.info.tpno value=$(TPNO)
+set name=info.classification \
+    value=org.opensolaris.category.2008:Development/Python
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=info.upstream-url value="OpenStack <[email protected]>"
+set name=org.opensolaris.arc-caseid value=PSARC/2015/520
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+#
+link path=usr/bin/lockutils-wrapper target=lockutils-wrapper-$(PYVER) \
+    mediator=python mediator-version=$(PYVER)
+file path=usr/bin/lockutils-wrapper-$(PYVER)
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.concurrency-$(COMPONENT_VERSION)-py$(PYVER)-nspkg.pth
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.concurrency-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.concurrency-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.concurrency-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.concurrency-$(COMPONENT_VERSION)-py$(PYVER).egg-info/entry_points.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.concurrency-$(COMPONENT_VERSION)-py$(PYVER).egg-info/namespace_packages.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.concurrency-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.concurrency-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.concurrency-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.concurrency-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo/concurrency/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo/concurrency/fixture/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_concurrency/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_concurrency/_i18n.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_concurrency/fixture/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_concurrency/fixture/lockutils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_concurrency/lockutils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_concurrency/openstack/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_concurrency/openstack/common/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_concurrency/openstack/common/fileutils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_concurrency/opts.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_concurrency/processutils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_concurrency/watchdog.py
+#
+license oslo.concurrency.license license="Apache v2.0"
+
+# force a group dependency on the optional eventlet; pkgdepend work is needed to
+# flush this out.
+depend type=group fmri=library/python/eventlet-$(PYV)
+
+# force a dependency on the oslo.concurrency package
+depend type=require \
+    fmri=library/python/oslo.concurrency@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+
+# force a dependency on oslo.config; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/oslo.config-$(PYV)
+
+# 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.utils; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/oslo.utils-$(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 six; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/six-$(PYV)
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.concurrency/oslo.concurrency.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,212 @@
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
--- a/components/python/oslo.config/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/oslo.config/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		oslo.config
-COMPONENT_VERSION=	1.6.0
+COMPONENT_VERSION=	1.9.3
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:a88cf1af696b4d9cae783a4c8c6898e6fb4abd176f9c9906ba388e7eac5eab17
+    sha256:ab54e67776d9bbee86ba8cce9393ba3186e6e63de926e9797598dc35fe790140
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	https://launchpad.net/oslo.config
 COMPONENT_BUGDB=	python-mod/oslo.config
 
-TPNO=			21726
+TPNO=			25738
 
 include $(WS_MAKE_RULES)/prep.mk
 include $(WS_MAKE_RULES)/setup.py.mk
--- a/components/python/oslo.config/oslo.config-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/oslo.config/oslo.config-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,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.
 #
 
 # As an earlier Python 3 version of oslo.config was published, we
@@ -71,12 +71,16 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo_config/iniparser.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo_config/types.py
 #
-license LICENSE license="Apache v2.0"
+license oslo.config.license license="Apache v2.0"
 
 # force the rename with an optional dependency on the old name
 depend type=optional \
     fmri=library/python-2/oslo.config-$(PYV)@1.2.1,5.12-5.12.0.0.0.44.0
 
+# force a dependency on the Python runtime
+depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
+    pkg.debug.depend.path=usr/bin
+
 # force a dependency on argparse; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/argparse-$(PYV)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.config/oslo.config.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,213 @@
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+		                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.config/patches/launchpad-1438314.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,123 @@
+From 8ddd9180967fae11803b59e92cab0e51faa99cf6 Mon Sep 17 00:00:00 2001
+From: Ben Nemec <[email protected]>
+Date: Tue, 31 Mar 2015 15:37:25 +0000
+Subject: Fix logging of deprecated opts with dest override
+
+When a deprecated opt is used and the new opt name has the dest
+property overridden, we were logging the dest property instead of
+the actual opt name in the deprecation warning.  This is confusing
+because it leads to log messages such as:
+
+Option "username" from group "nova" is deprecated. Use option
+"username" from group "nova".
+
+This is nonsense.  In this case the proper new name was "user-name"
+but because it had a dest override of "username" that's what was
+logged.
+
+Because the deprecation check code does not have access to the
+actual opt itself, we need to pass the undeprecated name down from
+the opt into the namespace code that does the check.
+
+I also tried simply adding a (group, name) tuple to the beginning
+of the names list, but this subtly broke the CLI opt tests because
+there are specific combinations of - and _ variants expected, and
+this seems to violate those assumptions.  I did not pursue it any
+further because I felt it was better to simply be explicit about
+the current name and not mess around with adding non-existent opt
+names to the lookup list solely for logging purposes.
+
+Change-Id: Ib1ea8ae2d60a9c508935bad27d7ddc2cdb5ab505
+Closes-Bug: #1438314
+---
+ oslo_config/cfg.py            | 14 +++++++++-----
+ oslo_config/tests/test_cfg.py | 16 ++++++++++++++++
+ 2 files changed, 25 insertions(+), 5 deletions(-)
+
+diff --git a/oslo_config/cfg.py b/oslo_config/cfg.py
+index 77fd44d..f472139 100644
+--- a/oslo_config/cfg.py
++++ b/oslo_config/cfg.py
+@@ -717,6 +717,7 @@ class Opt(object):
+         :param group_name: a group name
+         """
+         names = [(group_name, self.dest)]
++        current_name = (group_name, self.name)
+ 
+         for opt in self.deprecated_opts:
+             dname, dgroup = opt.name, opt.group
+@@ -724,7 +725,8 @@ class Opt(object):
+                 names.append((dgroup if dgroup else group_name,
+                               dname if dname else self.dest))
+ 
+-        value = namespace._get_value(names, self.multi, self.positional)
++        value = namespace._get_value(names, self.multi, self.positional,
++                                     current_name)
+         # The previous line will raise a KeyError if no value is set in the
+         # config file, so we'll only log deprecations for set options.
+         if self.deprecated_for_removal and not self._logged_deprecation:
+@@ -1469,7 +1471,7 @@ class MultiConfigParser(object):
+     def get(self, names, multi=False):
+         return self._get(names, multi=multi)
+ 
+-    def _get(self, names, multi=False, normalized=False):
++    def _get(self, names, multi=False, normalized=False, current_name=None):
+         """Fetch a config file value from the parsed files.
+ 
+         :param names: a list of (section, name) tuples
+@@ -1488,7 +1490,8 @@ class MultiConfigParser(object):
+                 if section not in sections:
+                     continue
+                 if name in sections[section]:
+-                    self._check_deprecated((section, name), names[0],
++                    current_name = current_name or names[0]
++                    self._check_deprecated((section, name), current_name,
+                                            names[1:])
+                     val = sections[section][name]
+                     if multi:
+@@ -1641,7 +1644,7 @@ class _Namespace(argparse.Namespace):
+ 
+         raise KeyError
+ 
+-    def _get_value(self, names, multi, positional):
++    def _get_value(self, names, multi, positional, current_name):
+         """Fetch a value from config files.
+ 
+         Multiple names for a given configuration option may be supplied so
+@@ -1658,7 +1661,8 @@ class _Namespace(argparse.Namespace):
+             pass
+ 
+         names = [(g if g is not None else 'DEFAULT', n) for g, n in names]
+-        values = self._parser._get(names, multi=multi, normalized=True)
++        values = self._parser._get(names, multi=multi, normalized=True,
++                                   current_name=current_name)
+         return values if multi else values[-1]
+ 
+ 
+diff --git a/oslo_config/tests/test_cfg.py b/oslo_config/tests/test_cfg.py
+index 5518f53..e007494 100644
+--- a/oslo_config/tests/test_cfg.py
++++ b/oslo_config/tests/test_cfg.py
+@@ -3724,3 +3724,19 @@ class DeprecationWarningTests(DeprecationWarningTestBase):
+                     'removal.  Its value may be silently ignored in the '
+                     'future.\n')
+         self.assertEqual(expected, self.log_fixture.output)
++
++    def test_deprecated_with_dest(self):
++        self.conf.register_group(cfg.OptGroup('other'))
++        self.conf.register_opt(cfg.StrOpt('foo-bar', deprecated_name='bar',
++                                          dest='foo'),
++                               group='other')
++        content = 'bar=baz'
++        paths = self.create_tempfiles([('test',
++                                        '[other]\n' +
++                                        content + '\n')])
++
++        self.conf(['--config-file', paths[0]])
++        self.assertEqual('baz', self.conf.other.foo)
++        expected = (self._parser_class._deprecated_opt_message %
++                    ('bar', 'other', 'foo-bar', 'other') + '\n')
++        self.assertEqual(expected, self.log_fixture.output)
+-- 
+cgit v0.11.2
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.config/patches/requirements.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,24 @@
+In-house patch to remove the dependency on argparse.  Since we use
+Python 2.7 only for OpenStack, argparse is already included.  If this
+line is present, stevedore will fail to find the pip package for it,
+causing a cascade of failures to other tools.
+
+--- oslo.config-1.9.3/requirements.txt.orig	2015-08-02 01:56:12.150390781 -0400
++++ oslo.config-1.9.3/requirements.txt	2015-08-02 01:56:21.014379452 -0400
+@@ -3,7 +3,6 @@
+ # process, which may cause wedges in the gate later.
+ 
+ pbr>=0.6,!=0.7,<1.0
+-argparse
+ netaddr>=0.7.12
+ six>=1.9.0
+ stevedore>=1.1.0  # Apache-2.0
+
+--- oslo.config-1.9.3/oslo.config.egg-info/requires.txt.orig	2015-08-02 17:13:11.346987523 -0400
++++ oslo.config-1.9.3/oslo.config.egg-info/requires.txt	2015-08-02 01:56:41.173806019 -0400
+@@ -1,5 +1,4 @@
+ pbr>=0.6,!=0.7,<1.0
+-argparse
+ netaddr>=0.7.12
+ six>=1.9.0
+ stevedore>=1.1.0  # Apache-2.0
--- a/components/python/oslo.context/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/oslo.context/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		oslo.context
-COMPONENT_VERSION=	0.1.0
+COMPONENT_VERSION=	0.2.0
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:0340e533033607c18ce6a305d92f38a71fd89aaf439bf45074fd4ba9ee086971
+    sha256:30bee9680a2bf5f947227cfd5996cebb17fd8c8e3013e5a594f7a7accb2947dd
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	https://launchpad.net/oslo.context
 COMPONENT_BUGDB=	python-mod/oslo.context
 
-TPNO=			21359
+TPNO=			25739
 
 include $(WS_MAKE_RULES)/prep.mk
 include $(WS_MAKE_RULES)/setup.py.mk
--- a/components/python/oslo.context/oslo.context-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/oslo.context/oslo.context-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,7 @@
 #
 
 #
-# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 set name=pkg.fmri \
@@ -42,18 +42,18 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo.context-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo.context-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo.context-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.context-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo.context-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo.context-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo_context/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo_context/context.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo_context/fixture.py
 #
-license LICENSE license="Apache v2.0"
-
-# force a dependency on the Python runtime
-depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
-    pkg.debug.depend.path=usr/bin
+license oslo.context.license license="Apache v2.0"
 
 # force a dependency on the oslo.context package
 depend type=require \
     fmri=library/python/oslo.context@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+
+# force a dependency on pbr; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/pbr-$(PYV)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.context/oslo.context.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,213 @@
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+		                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+ 
--- a/components/python/oslo.db/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/oslo.db/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		oslo.db
-COMPONENT_VERSION=	1.0.3
+COMPONENT_VERSION=	1.7.2
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:b75c9e496329ff20f20e70f076718b71878f6802a24f4ff684fd7de12a509331
+    sha256:e10b1bc9b128aaeae652809e1659ec2d2f64e2d1a143b9c9c66eb9cfef66c02c
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	https://launchpad.net/oslo.db
 COMPONENT_BUGDB=	python-mod/oslo.db
 
-TPNO=			21627
+TPNO=			25740
 
 # Depends on sqlalchemy-migrate which is not Python3 ready.
 PYTHON_VERSIONS =	$(PYTHON2_VERSIONS)
--- a/components/python/oslo.db/oslo.db-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/oslo.db/oslo.db-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,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.
 #
 
 set name=pkg.fmri \
@@ -46,39 +46,53 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo.db-$(COMPONENT_VERSION)-py$(PYVER).egg-info/entry_points.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo.db-$(COMPONENT_VERSION)-py$(PYVER).egg-info/namespace_packages.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo.db-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.db-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo.db-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo.db-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/_i18n.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/api.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/concurrency.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/exception.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/openstack/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/openstack/common/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/openstack/common/fixture/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/openstack/common/fixture/config.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/options.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/sqlalchemy/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/sqlalchemy/compat/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/sqlalchemy/compat/engine_connect.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/sqlalchemy/compat/handle_error.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/sqlalchemy/compat/utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/sqlalchemy/exc_filters.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/sqlalchemy/migration.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/sqlalchemy/migration_cli/README.rst
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/sqlalchemy/migration_cli/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/sqlalchemy/migration_cli/ext_alembic.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/sqlalchemy/migration_cli/ext_base.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/sqlalchemy/migration_cli/ext_migrate.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/sqlalchemy/migration_cli/manager.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/sqlalchemy/models.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/sqlalchemy/provision.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/sqlalchemy/session.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/sqlalchemy/test_base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/sqlalchemy/test_migrations.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/db/sqlalchemy/utils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/_i18n.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/api.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/concurrency.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/exception.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/options.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/sqlalchemy/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/sqlalchemy/compat/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/sqlalchemy/compat/engine_connect.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/sqlalchemy/compat/handle_error.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/sqlalchemy/compat/utils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/sqlalchemy/exc_filters.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/sqlalchemy/migration.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/sqlalchemy/migration_cli/README.rst
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/sqlalchemy/migration_cli/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/sqlalchemy/migration_cli/ext_alembic.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/sqlalchemy/migration_cli/ext_base.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/sqlalchemy/migration_cli/ext_migrate.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/sqlalchemy/migration_cli/manager.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/sqlalchemy/models.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/sqlalchemy/provision.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/sqlalchemy/session.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/sqlalchemy/test_base.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/sqlalchemy/test_migrations.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_db/sqlalchemy/utils.py
 #
-license LICENSE license="Apache v2.0"
+license oslo.db.license license="Apache v2.0"
 
 # force a group dependency on the optional eventlet; pkgdepend work is needed to
 # flush this out.
@@ -91,9 +105,6 @@
 # force a dependency on alembic; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/alembic-$(PYV)
 
-# force a dependency on argparse; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/argparse-$(PYV)
-
 # force a dependency on oslo.config; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/oslo.config-$(PYV)
 
@@ -107,6 +118,9 @@
 # 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 pbr; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/pbr-$(PYV)
+
 # force a dependency on six; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/six-$(PYV)
 
@@ -119,3 +133,9 @@
 
 # force a dependency on stevedore; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/stevedore-$(PYV)
+
+# force a dependency on testresources; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/testresources-$(PYV)
+
+# force a dependency on testscenarios; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/testscenarios-$(PYV)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.db/oslo.db.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,651 @@
+
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+Main License:
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+============================================================
+
+oslo.db-1.0.2/oslo/__init__.py
+oslo.db-1.0.2/oslo/db/sqlalchemy/compat/handle_error.py
+oslo.db-1.0.2/oslo/db/sqlalchemy/compat/__init__.py
+oslo.db-1.0.2/oslo/db/sqlalchemy/compat/engine_connect.py
+oslo.db-1.0.2/oslo/db/sqlalchemy/compat/utils.py
+oslo.db-1.0.2/oslo/db/sqlalchemy/exc_filters.py
+oslo.db-1.0.2/oslo/db/sqlalchemy/migration_cli/ext_alembic.py
+oslo.db-1.0.2/oslo/db/sqlalchemy/migration_cli/ext_base.py
+oslo.db-1.0.2/oslo/db/sqlalchemy/migration_cli/ext_migrate.py
+oslo.db-1.0.2/oslo/db/sqlalchemy/migration_cli/manager.py
+oslo.db-1.0.2/oslo/db/options.py
+oslo.db-1.0.2/oslo/db/_i18n.py
+oslo.db-1.0.2/oslo/db/openstack/common/__init__.py
+oslo.db-1.0.2/doc/source/conf.py
+oslo.db-1.0.2/tests/sqlalchemy/test_handle_error.py
+oslo.db-1.0.2/tests/sqlalchemy/test_engine_connect.py
+oslo.db-1.0.2/tests/sqlalchemy/test_exc_filters.py
+oslo.db-1.0.2/tests/sqlalchemy/test_options.py
+oslo.db-1.0.2/tests/sqlalchemy/test_migrate_cli.py
+
+#    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.
+============================================================
+
+oslo.db-1.0.2/oslo/db/api.py
+
+# Copyright (c) 2013 Rackspace Hosting
+# 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.
+============================================================
+
+oslo.db-1.0.2/oslo/db/sqlalchemy/test_migrations.py
+
+# Copyright 2010-2011 OpenStack Foundation
+# Copyright 2012-2013 IBM Corp.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+oslo.db-1.0.2/oslo/db/sqlalchemy/migration.py
+
+# Copyright (c) 2013 OpenStack Foundation
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+# Base on code in migrate/changeset/databases/sqlite.py which is under
+# the following license:
+#
+# The MIT License
+#
+# Copyright (c) 2009 Evan Rosson, Jan Dittberner, Domen Kožar
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+============================================================
+
+oslo.db-1.0.2/oslo/db/sqlalchemy/models.py
+
+# Copyright (c) 2011 X.commerce, a business unit of eBay Inc.
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# Copyright 2011 Piston Cloud Computing, Inc.
+# Copyright 2012 Cloudscaling Group, Inc.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.db-1.0.2/oslo/db/sqlalchemy/session.py
+
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.db-1.0.2/oslo/db/sqlalchemy/provision.py
+oslo.db-1.0.2/tests/sqlalchemy/test_migration_common.py
+
+# Copyright 2013 Mirantis.inc
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.db-1.0.2/oslo/db/sqlalchemy/test_base.py
+
+# Copyright (c) 2013 OpenStack Foundation
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+============================================================
+
+oslo.db-1.0.2/oslo/db/sqlalchemy/utils.py
+
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# Copyright 2010-2011 OpenStack Foundation.
+# Copyright 2012 Justin Santa Barbara
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.db-1.0.2/oslo/db/concurrency.py
+oslo.db-1.0.2/tests/test_concurrency.py
+
+# Copyright 2014 Mirantis.inc
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.db-1.0.2/oslo/db/exception.py
+
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.db-1.0.2/oslo/db/openstack/common/fixture/config.py
+
+#
+# Copyright 2013 Mirantis, Inc.
+# Copyright 2013 OpenStack Foundation
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.db-1.0.2/oslo.db/locale/en_GB/LC_MESSAGES/oslo.db.po
+oslo.db-1.0.2/oslo.db/locale/en_GB/LC_MESSAGES/oslo.db-log-critical.po
+oslo.db-1.0.2/oslo.db/locale/en_GB/LC_MESSAGES/oslo.db-log-info.po
+oslo.db-1.0.2/oslo.db/locale/en_GB/LC_MESSAGES/oslo.db-log-warning.po
+oslo.db-1.0.2/oslo.db/locale/en_GB/LC_MESSAGES/oslo.db-log-error.po
+
+# English (United Kingdom) translations for oslo.db.
+# Copyright (C) 2014 ORGANIZATION
+# This file is distributed under the same license as the oslo.db project.
+#
+# Translators:
+# Andi Chandler <[email protected]>, 2014
+============================================================
+
+oslo.db-1.0.2/oslo.db/locale/oslo.db-log-error.pot
+oslo.db-1.0.2/oslo.db/locale/oslo.db-log-info.pot
+oslo.db-1.0.2/oslo.db/locale/oslo.db-log-critical.pot
+oslo.db-1.0.2/oslo.db/locale/oslo.db-log-warning.pot
+oslo.db-1.0.2/oslo.db/locale/oslo.db.pot
+
+# Translations template for oslo.db.
+# Copyright (C) 2014 ORGANIZATION
+# This file is distributed under the same license as the oslo.db project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+============================================================
+
+oslo.db-1.0.2/tests/utils.py
+
+# Copyright 2010-2011 OpenStack Foundation
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.db-1.0.2/tests/test_api.py
+
+# Copyright (c) 2013 Rackspace Hosting
+# 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.
+============================================================
+
+oslo.db-1.0.2/tests/sqlalchemy/test_migrations.py
+
+# Copyright 2010-2011 OpenStack Foundation
+# Copyright 2012-2013 IBM Corp.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.db-1.0.2/tests/sqlalchemy/test_sqlalchemy.py
+
+# Copyright (c) 2012 Rackspace Hosting
+# 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.
+============================================================
+
+oslo.db-1.0.2/tests/sqlalchemy/test_utils.py
+
+# Copyright (c) 2013 Boris Pavlovic ([email protected]).
+# 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.
+============================================================
+
+oslo.db-1.0.2/tests/sqlalchemy/test_models.py
+
+# Copyright 2012 Cloudscaling Group, Inc.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.db-1.0.2/tests/base.py
+
+# Copyright 2010-2011 OpenStack Foundation
+# Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+============================================================
+
+oslo.db-1.0.2/setup.py
+
+# Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# 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.
+============================================================
+#
+# Base on code in migrate/changeset/databases/sqlite.py which is under
+# the following license:
+#
+# The MIT License
+#
+# Copyright (c) 2009 Evan Rosson, Jan Dittberner, Domen Kožar
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+============================================================
--- a/components/python/oslo.i18n/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/oslo.i18n/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		oslo.i18n
-COMPONENT_VERSION=	1.3.1
+COMPONENT_VERSION=	1.5.0
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:8e1b9b3f87cea9e43a2414bb02d8c79b0a688c916afa1f1453f6a0a65ffd85f6
+    sha256:cd09da0780e45737b784bdc026ea705ad006e3c003aa5dfeab83f269b4ea0e70
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	https://launchpad.net/oslo.i18n
 COMPONENT_BUGDB=	python-mod/oslo.i18n
 
-TPNO=			21628
+TPNO=			25741
 
 include $(WS_MAKE_RULES)/prep.mk
 include $(WS_MAKE_RULES)/setup.py.mk
--- a/components/python/oslo.i18n/oslo.i18n-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/oslo.i18n/oslo.i18n-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,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.
 #
 
 set name=pkg.fmri \
@@ -63,7 +63,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo_i18n/fixture.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo_i18n/log.py
 #
-license LICENSE license="Apache v2.0"
+license oslo.i18n.license license="Apache v2.0"
 
 # force a dependency on the Python runtime
 depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
@@ -76,5 +76,8 @@
 depend type=require \
     fmri=library/python/oslo.i18n@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
 
+# force a dependency on pbr; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/pbr-$(PYV)
+
 # force a dependency on six; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/six-$(PYV)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.i18n/oslo.i18n.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,211 @@
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+		                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.log/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,58 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+include ../../../make-rules/shared-macros.mk
+
+COMPONENT_NAME=		oslo.log
+COMPONENT_VERSION=	1.0.0
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
+COMPONENT_ARCHIVE_HASH=	\
+    sha256:3d66e9a70b82bc1c7c0b70114d093620e86bef679177ee1ec668c6e0a1acf52a
+COMPONENT_ARCHIVE_URL=	$(call pypi_url)
+COMPONENT_PROJECT_URL=	https://launchpad.net/oslo.log
+COMPONENT_BUGDB=	python-mod/oslo.log
+
+TPNO=			25718
+
+# Depends on oslo.serialization which is not Python 3 ready.
+PYTHON_VERSIONS =	$(PYTHON2_VERSIONS)
+
+include $(WS_MAKE_RULES)/prep.mk
+include $(WS_MAKE_RULES)/setup.py.mk
+include $(WS_MAKE_RULES)/ips.mk
+
+ASLR_MODE = $(ASLR_NOT_APPLICABLE)
+
+# common targets
+build:		$(BUILD_NO_ARCH)
+
+install:	$(INSTALL_NO_ARCH)
+
+# see $(COMPONENT_SRC)/test-requirements.txt for the python modules
+# required to execute unittests.
+test:		$(NO_TESTS)
+
+system-test:    $(NO_TESTS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.log/oslo.log-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,89 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+set name=pkg.fmri \
+    value=pkg:/library/python/oslo.log-$(PYV)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary value="Oslo log library"
+set name=pkg.description \
+    value="OpenStack logging configuration library provides standardized configuration for all OpenStack projects. It also provides custom formatters, handlers, and support for context specific logging (like resource IDs, etc)."
+set name=com.oracle.info.description value="the Python oslo.log module"
+set name=com.oracle.info.tpno value=$(TPNO)
+set name=info.classification \
+    value=org.opensolaris.category.2008:Development/Python
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=info.upstream value="OpenStack <[email protected]>"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=org.opensolaris.arc-caseid value=PSARC/2015/521
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+#
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.log-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.log-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.log-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.log-$(COMPONENT_VERSION)-py$(PYVER).egg-info/entry_points.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.log-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.log-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.log-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.log-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_log/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_log/_i18n.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_log/_options.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_log/fixture/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_log/fixture/logging_error.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_log/fixture/setlevel.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_log/formatters.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_log/handlers.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_log/helpers.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_log/log.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_log/loggers.py
+#
+license oslo.log.license license="Apache v2.0"
+
+# force a dependency on iso8601; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/iso8601-$(PYV)
+
+# force a dependency on oslo.config; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/oslo.config-$(PYV)
+
+# force a dependency on oslo.context; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/oslo.context-$(PYV)
+
+# 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 the oslo.log package
+depend type=require \
+    fmri=library/python/oslo.log@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+
+# force a dependency on oslo.serialization; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/oslo.serialization-$(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 pbr; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/pbr-$(PYV)
+
+# force a dependency on six; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/six-$(PYV)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.log/oslo.log.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,212 @@
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.log/patches/01-fix-syslog.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,20 @@
+In-house patch to remove the hardcoding of /dev/log as the address for
+syslog.  The default logging module is smart enough to use the proper
+path in Solaris.
+
+--- oslo.log-1.0.0/oslo_log/log.py.orig	2015-09-29 16:41:03.335483630 -0600
++++ oslo.log-1.0.0/oslo_log/log.py	2015-09-29 16:41:23.112003925 -0600
+@@ -285,11 +285,9 @@ def _setup_logging_from_conf(conf, proje
+             # TODO(bogdando) use the format provided by RFCSysLogHandler
+             #   after existing syslog format deprecation in J
+             if conf.use_syslog_rfc_format:
+-                syslog = handlers.RFCSysLogHandler(address='/dev/log',
+-                                                   facility=facility)
++                syslog = handlers.RFCSysLogHandler(facility=facility)
+             else:
+-                syslog = logging.handlers.SysLogHandler(address='/dev/log',
+-                                                        facility=facility)
++                syslog = logging.handlers.SysLogHandler(facility=facility)
+             log_root.addHandler(syslog)
+         except socket.error:
+             log_root.error('Unable to add syslog handler. Verify that syslog '
--- a/components/python/oslo.messaging/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/oslo.messaging/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		oslo.messaging
-COMPONENT_VERSION=	1.4.1
+COMPONENT_VERSION=	1.8.3
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:28243db5fb84287016d6f58fa485a71496c825bcfca3ae806035017700a11945
+    sha256:149d325431e2c4415edd5bdaec0cff4e9109c02e8f428382610cfa1a238692ea
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	https://launchpad.net/oslo.messaging
 COMPONENT_BUGDB=	python-mod/oslo.messaging
 
-TPNO=			20378
+TPNO=			25742
 
 # Depends on oslo.utils which is not Python 3 ready.
 PYTHON_VERSIONS=	$(PYTHON2_VERSIONS)
@@ -46,11 +46,6 @@
 
 ASLR_MODE = $(ASLR_NOT_APPLICABLE)
 
-COMPONENT_POST_INSTALL_ACTION = \
-	(cd $(PROTO_DIR)/usr/bin ; \
-	 $(MV) -f oslo-messaging-zmq-receiver \
-	 oslo-messaging-zmq-receiver-$(PYTHON_VERSION))
-
 # common targets
 build:		$(BUILD_NO_ARCH)
 
--- a/components/python/oslo.messaging/oslo.messaging-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/oslo.messaging/oslo.messaging-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,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.
 #
 
 set name=pkg.fmri \
@@ -45,59 +45,24 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo.messaging-$(COMPONENT_VERSION)-py$(PYVER).egg-info/entry_points.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo.messaging-$(COMPONENT_VERSION)-py$(PYVER).egg-info/namespace_packages.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo.messaging-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.messaging-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo.messaging-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo.messaging-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_cmd/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_cmd/zmq_receiver.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_drivers/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_drivers/amqp.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_drivers/amqpdriver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_drivers/base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_drivers/common.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_drivers/impl_fake.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_drivers/impl_qpid.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_drivers/impl_rabbit.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_drivers/impl_zmq.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_drivers/matchmaker.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_drivers/matchmaker_redis.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_drivers/matchmaker_ring.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_drivers/pool.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_drivers/protocols/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_drivers/protocols/amqp/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_drivers/protocols/amqp/controller.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_drivers/protocols/amqp/driver.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_drivers/protocols/amqp/eventloop.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_executors/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_executors/base.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_executors/impl_blocking.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_executors/impl_eventlet.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/conffixture.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/exceptions.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/localcontext.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/notify/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/notify/_impl_log.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/notify/_impl_messaging.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/notify/_impl_noop.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/notify/_impl_routing.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/notify/_impl_test.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/notify/dispatcher.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/notify/listener.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/notify/log_handler.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/notify/logger.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/notify/middleware.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/notify/notifier.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/openstack/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/openstack/common/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/openstack/common/context.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/openstack/common/gettextutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/openstack/common/importutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/openstack/common/jsonutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/openstack/common/middleware/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/openstack/common/middleware/base.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/openstack/common/strutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/openstack/common/timeutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/opts.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/rpc/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/rpc/client.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/rpc/dispatcher.py
@@ -106,42 +71,101 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/server.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/target.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/messaging/transport.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_cmd/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_cmd/zmq_receiver.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_drivers/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_drivers/amqp.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_drivers/amqpdriver.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_drivers/base.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_drivers/common.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_drivers/impl_fake.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_drivers/impl_qpid.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_drivers/impl_rabbit.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_drivers/impl_zmq.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_drivers/matchmaker.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_drivers/matchmaker_redis.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_drivers/matchmaker_ring.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_drivers/pool.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_drivers/protocols/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_drivers/protocols/amqp/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_drivers/protocols/amqp/controller.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_drivers/protocols/amqp/driver.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_drivers/protocols/amqp/eventloop.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_drivers/protocols/amqp/opts.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_executors/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_executors/base.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_executors/impl_aioeventlet.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_executors/impl_blocking.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_executors/impl_eventlet.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_executors/impl_thread.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_i18n.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/_utils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/conffixture.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/exceptions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/localcontext.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/notify/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/notify/_impl_log.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/notify/_impl_messaging.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/notify/_impl_noop.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/notify/_impl_routing.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/notify/_impl_test.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/notify/dispatcher.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/notify/filter.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/notify/listener.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/notify/log_handler.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/notify/logger.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/notify/middleware.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/notify/notifier.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/openstack/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/openstack/common/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/openstack/common/context.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/opts.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/rpc/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/rpc/client.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/rpc/dispatcher.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/rpc/server.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/serializer.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/server.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/target.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_messaging/transport.py
 #
-license LICENSE license="Apache v2.0"
-
-# force a group dependency on the optional anyjson; pkgdepend work is needed
-# to flush this out.
-depend type=group fmri=library/python/anyjson-$(PYV)
-
-# force a group dependency on the optional simplejson; pkgdepend work is needed
-# to flush this out.
-depend type=group fmri=library/python/simplejson-$(PYV)
+license oslo.messaging.license license="Apache v2.0"
 
 # force a dependency on the Python runtime
 depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
     pkg.debug.depend.path=usr/bin
 
-# force a dependency on babel; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/babel-$(PYV)
+# force a dependency on aioeventlet; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/aioeventlet-$(PYV)
+
+# force a dependency on futures; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/futures-$(PYV)
 
 # force a dependency on greenlet; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/greenlet-$(PYV)
 
-# force a dependency on iso8601; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/iso8601-$(PYV)
-
 # force a dependency on kombu; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/kombu-$(PYV)
 
+# 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 the oslo.messaging package
 depend type=require \
     fmri=library/python/oslo.messaging@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
 
+# 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.serialization; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/oslo.serialization-$(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 pyyaml; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/pyyaml-$(PYV)
+# force a dependency on pbr; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/pbr-$(PYV)
 
 # force a dependency on six; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/six-$(PYV)
@@ -149,5 +173,8 @@
 # force a dependency on stevedore; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/stevedore-$(PYV)
 
+# force a dependency on trollius; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/trollius-$(PYV)
+
 # force a dependency on webob; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/webob-$(PYV)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.messaging/oslo.messaging.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,874 @@
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+		                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of 
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+--- License for python-keystoneclient versions prior to 2.1 ---
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    1. Redistributions of source code must retain the above copyright notice,
+       this list of conditions and the following disclaimer.
+
+    2. Redistributions in binary form must reproduce the above copyright
+       notice, this list of conditions and the following disclaimer in the
+       documentation and/or other materials provided with the distribution.
+
+    3. Neither the name of this project nor the names of its contributors may
+    be used to endorse or promote products derived from this software without
+    specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/conffixture.py
+oslo.messaging-1.4.1/oslo/messaging/__init__.py
+oslo.messaging-1.4.1/oslo/messaging/rpc/server.py
+oslo.messaging-1.4.1/oslo/messaging/rpc/__init__.py
+oslo.messaging-1.4.1/oslo/messaging/localcontext.py
+oslo.messaging-1.4.1/oslo/messaging/target.py
+oslo.messaging-1.4.1/oslo/messaging/_utils.py
+oslo.messaging-1.4.1/oslo/messaging/_drivers/protocols/amqp/driver.py
+oslo.messaging-1.4.1/oslo/messaging/_drivers/pool.py
+oslo.messaging-1.4.1/oslo/messaging/_drivers/base.py
+oslo.messaging-1.4.1/oslo/messaging/exceptions.py
+oslo.messaging-1.4.1/oslo/messaging/notify/__init__.py
+oslo.messaging-1.4.1/tests/test_exception_serialization.py
+oslo.messaging-1.4.1/tests/rpc/test_client.py
+oslo.messaging-1.4.1/tests/rpc/test_server.py
+oslo.messaging-1.4.1/tests/rpc/test_dispatcher.py
+oslo.messaging-1.4.1/tests/test_urls.py
+oslo.messaging-1.4.1/tests/test_utils.py
+oslo.messaging-1.4.1/tests/notify/test_notifier.py
+oslo.messaging-1.4.1/tests/drivers/test_pool.py
+oslo.messaging-1.4.1/tests/drivers/test_impl_rabbit.py
+oslo.messaging-1.4.1/tests/test_target.py
+oslo.messaging-1.4.1/tests/test_transport.py
+
+# Copyright 2013 Red Hat, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/rpc/client.py
+
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
+# Copyright 2013 Red Hat, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/rpc/dispatcher.py
+
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
+# Copyright 2013 Red Hat, Inc.
+# Copyright 2013 New Dream Network, LLC (DreamHost)
+#
+#    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.
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/opts.py
+oslo.messaging-1.4.1/oslo/messaging/_drivers/protocols/amqp/driver.py
+oslo.messaging-1.4.1/oslo/messaging/_drivers/protocols/amqp/__init__.py
+oslo.messaging-1.4.1/oslo/messaging/_drivers/protocols/amqp/controller.py
+oslo.messaging-1.4.1/oslo/messaging/_drivers/protocols/amqp/eventloop.py
+oslo.messaging-1.4.1/tests/test_amqp_driver.py
+
+# Copyright 2014 Red Hat, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/serializer.py
+
+#    Copyright 2013 IBM Corp.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/_drivers/impl_qpid.py
+
+#    Copyright 2011 OpenStack Foundation
+#    Copyright 2011 - 2012, Red Hat, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/_drivers/matchmaker.py
+
+#    Copyright 2011 Cloudscaling Group, Inc
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/_drivers/amqp.py
+
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
+# Copyright 2011 - 2012, Red Hat, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+...
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/_drivers/common.py
+
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
+# Copyright 2011 Red Hat, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/_drivers/impl_rabbit.py
+oslo.messaging-1.4.1/oslo/messaging/_cmd/zmq_receiver.py
+oslo.messaging-1.4.1/oslo/messaging/openstack/common/context.py
+oslo.messaging-1.4.1/oslo/messaging/openstack/common/strutils.py
+oslo.messaging-1.4.1/oslo/messaging/openstack/common/middleware/base.py
+oslo.messaging-1.4.1/oslo/messaging/openstack/common/timeutils.py
+oslo.messaging-1.4.1/oslo/messaging/openstack/common/importutils.py
+
+#    Copyright 2011 OpenStack Foundation
+#
+#    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.
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/_drivers/matchmaker_ring.py
+
+#    Copyright 2011-2013 Cloudscaling Group, Inc
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/_drivers/impl_fake.py
+
+# Copyright 2011 OpenStack Foundation
+# Copyright 2013 Red Hat, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/_drivers/impl_zmq.py
+
+#    Copyright 2011 Cloudscaling Group, Inc
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/_drivers/matchmaker_redis.py
+
+#    Copyright 2013 Cloudscaling Group, Inc
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/notify/_impl_test.py
+
+# Copyright 2011 OpenStack Foundation.
+# All Rights Reserved.
+# Copyright 2013 Red Hat, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+...
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/notify/log_handler.py
+oslo.messaging-1.4.1/oslo/messaging/openstack/common/__init__.py
+oslo.messaging-1.4.1/tests/notify/test_log_handler.py
+
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+...
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/notify/dispatcher.py
+oslo.messaging-1.4.1/oslo/messaging/notify/listener.py
+oslo.messaging-1.4.1/tests/executors/test_executor.py
+
+# Copyright 2011 OpenStack Foundation.
+# All Rights Reserved.
+# Copyright 2013 eNovance
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+...
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/notify/logger.py
+oslo.messaging-1.4.1/tests/notify/test_logger.py
+oslo.messaging-1.4.1/tests/notify/test_listener.py
+oslo.messaging-1.4.1/tests/notify/test_dispatcher.py
+
+# Copyright 2013 eNovance
+#
+#    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.
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/notify/_impl_noop.py
+oslo.messaging-1.4.1/oslo/messaging/notify/_impl_log.py
+oslo.messaging-1.4.1/oslo/messaging/notify/notifier.py
+oslo.messaging-1.4.1/oslo/messaging/notify/_impl_messaging.py
+
+# Copyright 2011 OpenStack Foundation.
+# All Rights Reserved.
+# Copyright 2013 Red Hat, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/notify/_impl_routing.py
+
+# Copyright 2014 Rackspace Hosting
+# 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.
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/_executors/impl_blocking.py
+oslo.messaging-1.4.1/oslo/messaging/_executors/impl_eventlet.py
+
+# Copyright 2013 Red Hat, Inc.
+# Copyright 2013 New Dream Network, LLC (DreamHost)
+#
+#    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.
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/_executors/base.py
+
+# Copyright 2013 New Dream Network, LLC (DreamHost)
+#
+#    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.
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/openstack/common/gettextutils.py
+
+# Copyright 2012 Red Hat, Inc.
+# Copyright 2013 IBM Corp.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/openstack/common/jsonutils.py
+
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# Copyright 2011 Justin Santa Barbara
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/transport.py
+
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
+# Copyright 2013 Red Hat, Inc.
+# Copyright (c) 2012 Rackspace Hosting
+#
+#    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.
+============================================================
+
+oslo.messaging-1.4.1/oslo/messaging/server.py
+
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
+# Copyright 2013 Red Hat, Inc.
+# Copyright 2013 New Dream Network, LLC (DreamHost)
+#
+#    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.
+============================================================
+
+oslo.messaging-1.4.1/oslo/__init__.py
+
+# Copyright 2012 Red Hat, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.messaging-1.4.1/oslo.messaging/locale/oslo.messaging-log-critical.pot
+oslo.messaging-1.4.1/oslo.messaging/locale/oslo.messaging-log-info.pot
+oslo.messaging-1.4.1/oslo.messaging/locale/oslo.messaging.pot
+oslo.messaging-1.4.1/oslo.messaging/locale/oslo.messaging-log-error.pot
+oslo.messaging-1.4.1/oslo.messaging/locale/oslo.messaging-log-warning.pot
+
+# Translations template for oslo.messaging.
+# Copyright (C) 2014 ORGANIZATION
+# This file is distributed under the same license as the oslo.messaging
+# project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+============================================================
+
+oslo.messaging-1.4.1/oslo.messaging/locale/de/LC_MESSAGES/oslo.messaging.po
+# Copyright (C) 2014 ORGANIZATION
+# This file is distributed under the same license as the oslo.messaging
+# project.
+#
+# Translators:
+# Andreas Jaeger <[email protected]>, 2014
+============================================================
+
+oslo.messaging-1.4.1/oslo.messaging/locale/en_GB/LC_MESSAGES/oslo.messaging-log-info.po
+oslo.messaging-1.4.1/oslo.messaging/locale/en_GB/LC_MESSAGES/oslo.messaging.po
+oslo.messaging-1.4.1/oslo.messaging/locale/en_GB/LC_MESSAGES/oslo.messaging-log-warning.po
+oslo.messaging-1.4.1/oslo.messaging/locale/en_GB/LC_MESSAGES/oslo.messaging-log-error.po
+oslo.messaging-1.4.1/oslo.messaging/locale/en_GB/LC_MESSAGES/oslo.messaging-log-critical.po
+
+# Translations template for heat.
+# Copyright (C) 2014 ORGANIZATION
+# This file is distributed under the same license as the heat project.
+#
+# Translators:
+# Andi Chandler <[email protected]>, 2014
+============================================================
+
+oslo.messaging-1.4.1/tests/test_opts.py
+
+# Copyright 2014 Red Hat, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.messaging-1.4.1/tests/drivers/test_impl_qpid.py
+
+# Copyright (C) 2014 eNovance SAS <[email protected]>
+#
+# 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.
+============================================================
+
+oslo.messaging-1.4.1/tests/test_expected_exceptions.py
+
+# Copyright 2012 OpenStack Foundation
+# Copyright 2013 Red Hat, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.messaging-1.4.1/tests/utils.py
+
+# Copyright 2010-2011 OpenStack Foundation
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# Copyright 2013 Hewlett-Packard Development Company, L.P.
+# All Rights Reserved.
+# Copyright 2013 Red Hat, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+============================================================
+
+oslo.messaging-1.4.1/setup.py
+
+# Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+============================================================
+
+--- License for python-keystoneclient versions prior to 2.1 ---
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+3. Neither the name of this project nor the names of its contributors may
+be used to endorse or promote products derived from this software without
+specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--- a/components/python/oslo.messaging/patches/01-disable-sslv3.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-This upstream patch addresses the removal of SSLv3 (Bug# 1395095)
-
-From https://review.openstack.org/openstack/oslo.messaging
- * branch            refs/changes/78/136278/2 -> FETCH_HEAD
-From 42f55a1dda96d4ceecf8cca5fba9cd723673f6e3 Mon Sep 17 00:00:00 2001
-From: Thomas Goirand <[email protected]>
-Date: Fri, 21 Nov 2014 17:40:46 +0800
-Subject: [PATCH] Remove the use of PROTOCOL_SSLv3
-
-The PROTOCOL_SSLv3 should not be used, as it can be exploited with
-a protocol downgrade attack. Also, its support has been removed in
-Debian, so it simply doesn't work at all now in Sid.
-
-This patch removes PROTOCOL_SSLv3 from one of the possible protocols
-used by oslo.messaging.
-
-Closes-Bug: #1395095
-Change-Id: I2c1977c3bfc1923bcb03744e909f2e70c7fdb14c
----
- oslo/messaging/_drivers/impl_rabbit.py |   12 ++++++++----
- 1 file changed, 8 insertions(+), 4 deletions(-)
-
-diff --git a/oslo/messaging/_drivers/impl_rabbit.py b/oslo/messaging/_drivers/impl_rabbit.py
-index 939a3ce..0c786ed 100644
---- a/oslo/messaging/_drivers/impl_rabbit.py
-+++ b/oslo/messaging/_drivers/impl_rabbit.py
-@@ -41,8 +41,8 @@ rabbit_opts = [
-     cfg.StrOpt('kombu_ssl_version',
-                default='',
-                help='SSL version to use (valid only if SSL enabled). '
--                    'valid values are TLSv1, SSLv23 and SSLv3. SSLv2 may '
--                    'be available on some distributions.'
-+                    'valid values are TLSv1 and SSLv23. SSLv2 and '
-+                    'SSLv3 may be available on some distributions.'
-                ),
-     cfg.StrOpt('kombu_ssl_keyfile',
-                default='',
-@@ -496,8 +496,7 @@ class Connection(object):
-     # FIXME(markmc): use oslo sslutils when it is available as a library
-     _SSL_PROTOCOLS = {
-         "tlsv1": ssl.PROTOCOL_TLSv1,
--        "sslv23": ssl.PROTOCOL_SSLv23,
--        "sslv3": ssl.PROTOCOL_SSLv3
-+        "sslv23": ssl.PROTOCOL_SSLv23
-     }
- 
-     try:
-@@ -505,6 +504,11 @@ class Connection(object):
-     except AttributeError:
-         pass
- 
-+    try:
-+        _SSL_PROTOCOLS["sslv3"] = ssl.PROTOCOL_SSLv3
-+    except AttributeError:
-+        pass
-+
-     @classmethod
--- a/components/python/oslo.middleware/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/oslo.middleware/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		oslo.middleware
-COMPONENT_VERSION=	0.4.0
+COMPONENT_VERSION=	1.0.0
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:d300f8342b5faaf712890d58da111789740aebb4b46874e41b45110b704719cb
+    sha256:5ccf160ae5ce23f3f59b86535352e3b5a9fa35dab0edc4ede8b17438da559995
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	https://launchpad.net/oslo.middleware
 COMPONENT_BUGDB=	python-mod/oslo.middlewar
 
-TPNO=			21629
+TPNO=			25765
 
 include $(WS_MAKE_RULES)/prep.mk
 include $(WS_MAKE_RULES)/setup.py.mk
--- a/components/python/oslo.middleware/oslo.middleware-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/oslo.middleware/oslo.middleware-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,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.
 #
 
 set name=pkg.fmri \
@@ -69,7 +69,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo_middleware/request_id.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo_middleware/sizelimit.py
 #
-license LICENSE license="Apache v2.0"
+license oslo.middleware.license license="Apache v2.0"
 
 # force a dependency on the Python runtime
 depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
@@ -89,6 +89,9 @@
 depend type=require \
     fmri=library/python/oslo.middleware@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
 
+# force a dependency on pbr; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/pbr-$(PYV)
+
 # force a dependency on six; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/six-$(PYV)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.middleware/oslo.middleware.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,365 @@
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+============================================================
+
+oslo.middleware-0.2.0/oslo.middleware/locale/oslo.middleware-log-critical.pot
+oslo.middleware-0.2.0/oslo.middleware/locale/oslo.middleware-log-error.pot
+oslo.middleware-0.2.0/oslo.middleware/locale/oslo.middleware-log-warning.pot
+oslo.middleware-0.2.0/oslo.middleware/locale/oslo.middleware-log-info.pot
+oslo.middleware-0.2.0/oslo.middleware/locale/oslo.middleware.pot
+
+# Translations template for oslo.middleware.
+# Copyright (C) 2014 ORGANIZATION
+# This file is distributed under the same license as the oslo.middleware
+# project.
+# FIRST AUTHOR , 2014.
+#
+============================================================
+
+oslo.middleware-0.2.0/oslo.middleware/locale/de/LC_MESSAGES/oslo.middleware.po
+oslo.middleware-0.2.0/oslo.middleware/locale/de/LC_MESSAGES/oslo.middleware-log-error.po
+
+# German translations for oslo.middleware.
+# Copyright (C) 2014 ORGANIZATION
+# This file is distributed under the same license as the oslo.middleware
+# project.
+#
+# Translators:
+# Andreas Jaeger , 2014
+============================================================
+
+oslo.middleware-0.2.0/oslo.middleware/locale/fr/LC_MESSAGES/oslo.middleware-log-error.po
+oslo.middleware-0.2.0/oslo.middleware/locale/fr/LC_MESSAGES/oslo.middleware.po
+
+# Translations template for oslo.middleware.
+# Copyright (C) 2014 ORGANIZATION
+# This file is distributed under the same license as the oslo.middleware
+# project.
+#
+# Translators:
+# Maxime COQUEREL , 2014
+============================================================
+
+oslo.middleware-0.2.0/oslo.middleware/locale/en_GB/LC_MESSAGES/oslo.middleware.po
+oslo.middleware-0.2.0/oslo.middleware/locale/en_GB/LC_MESSAGES/oslo.middleware-log-error.po
+
+# English (United Kingdom) translations for oslo.middleware.
+# Copyright (C) 2014 ORGANIZATION
+# This file is distributed under the same license as the oslo.middleware
+# project.
+#
+# Translators:
+# Andi Chandler , 2014
+============================================================
+
+oslo.middleware-0.2.0/tests/test_correlation_id.py
+oslo.middleware-0.2.0/oslo/middleware/correlation_id.py
+
+# Copyright (c) 2013 Rackspace Hosting
+# 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.
+============================================================
+
+oslo.middleware-0.2.0/tests/test_sizelimit.py
+oslo.middleware-0.2.0/oslo/middleware/sizelimit.py
+
+# Copyright (c) 2012 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+============================================================
+
+oslo.middleware-0.2.0/tests/test_request_id.py
+oslo.middleware-0.2.0/tests/test_catch_errors.py
+oslo.middleware-0.2.0/oslo/middleware/request_id.py
+oslo.middleware-0.2.0/oslo/middleware/catch_errors.py
+
+# Copyright (c) 2013 NEC Corporation
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+============================================================
+
+oslo.middleware-0.2.0/setup.py
+
+# Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+============================================================
+
+oslo.middleware-0.2.0/oslo/middleware/debug.py
+oslo.middleware-0.2.0/oslo/middleware/base.py
+oslo.middleware-0.2.0/oslo/middleware/openstack/common/context.py
+
+# Copyright 2011 OpenStack Foundation.
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+============================================================
+
+oslo.middleware-0.2.0/oslo/middleware/openstack/common/__init__.py
+oslo.middleware-0.2.0/oslo/middleware/i18n.py
+oslo.middleware-0.2.0/oslo/middleware/__init__.py
+oslo.middleware-0.2.0/oslo/__init__.py
+
+#
+# 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.
+============================================================
+
+oslo.middleware-0.2.0/oslo/middleware/opts.py
+
+# Copyright 2014 IBM Corp.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+============================================================
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.policy/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,58 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+include ../../../make-rules/shared-macros.mk
+
+COMPONENT_NAME=		oslo.policy
+COMPONENT_VERSION=	0.3.2
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
+COMPONENT_ARCHIVE_HASH=	\
+    sha256:e69a5c559f95bcbf91eb0ea9f16aa65f0fe5fccc7fa03693d4cc991b76e969a6
+COMPONENT_ARCHIVE_URL=	$(call pypi_url)
+COMPONENT_PROJECT_URL=	https://launchpad.net/oslo.policy
+COMPONENT_BUGDB=	python-mod/oslo.policy
+
+TPNO=			25889
+
+# Depends on oslo.serialization which is not Python 3 ready.
+PYTHON_VERSIONS =       $(PYTHON2_VERSIONS)
+
+include $(WS_MAKE_RULES)/prep.mk
+include $(WS_MAKE_RULES)/setup.py.mk
+include $(WS_MAKE_RULES)/ips.mk
+
+ASLR_MODE = $(ASLR_NOT_APPLICABLE)
+
+# common targets
+build:		$(BUILD_NO_ARCH)
+
+install:	$(INSTALL_NO_ARCH)
+
+# see $(COMPONENT_SRC)/test-requirements.txt for the python modules
+# required to execute unittests.
+test:		$(NO_TESTS)
+
+system-test:    $(NO_TESTS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.policy/oslo.policy-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,74 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+set name=pkg.fmri \
+    value=pkg:/library/python/oslo.policy-$(PYV)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary \
+    value="The Oslo Policy library provides support for RBAC policy enforcement across all Openstack services"
+set name=com.oracle.info.description value="the Python oslo.policy module"
+set name=com.oracle.info.tpno value=$(TPNO)
+set name=info.classification \
+    value=org.opensolaris.category.2008:Development/Python
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=info.upstream-url value="Openstack <[email protected]>"
+set name=org.opensolaris.arc-caseid value=PSARC/2015/529
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+#
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.policy-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.policy-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.policy-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.policy-$(COMPONENT_VERSION)-py$(PYVER).egg-info/entry_points.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.policy-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.policy-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.policy-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.policy-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_policy/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_policy/_checks.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_policy/_i18n.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_policy/_parser.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_policy/openstack/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_policy/openstack/common/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_policy/openstack/common/fileutils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_policy/opts.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_policy/policy.py
+#
+license oslo.policy.license license="Apache v2.0"
+
+# force a dependency on the Python runtime
+depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
+    pkg.debug.depend.path=usr/bin
+
+# force a dependency on oslo.config; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/oslo.config-$(PYV)
+
+# 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 the oslo.policy package
+depend type=require \
+    fmri=library/python/oslo.policy@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+
+# force a dependency on oslo.serialization; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/oslo.serialization-$(PYV)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.policy/oslo.policy.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,212 @@
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
--- a/components/python/oslo.serialization/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/oslo.serialization/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		oslo.serialization
-COMPONENT_VERSION=	1.2.0
+COMPONENT_VERSION=	1.4.0
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:073f25ef4b7138e28ecb75bab413582c4dc1a54ab63b540a1702edee7c0a0557
+    sha256:082dca272f0a941e1cdca1dc02849c5ddac65fa7d19604096be54cd41e7b4317
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	https://launchpad.net/oslo.serialization
 COMPONENT_BUGDB=	python-mod/oslo.serial
 
-TPNO=			21630
+TPNO=			25743
 
 # Depends on oslo.utils which is not Python 3 ready.
 PYTHON_VERSIONS =	$(PYTHON2_VERSIONS)
--- a/components/python/oslo.serialization/oslo.serialization-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/oslo.serialization/oslo.serialization-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,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.
 #
 
 set name=pkg.fmri \
@@ -51,8 +51,9 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/serialization/jsonutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo_serialization/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo_serialization/jsonutils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_serialization/msgpackutils.py
 #
-license LICENSE license="Apache v2.0"
+license oslo.serialization.license license="Apache v2.0"
 
 # force a group dependency on the optional anyjson; pkgdepend work is needed to
 # flush this out.
@@ -66,6 +67,9 @@
 depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
     pkg.debug.depend.path=usr/bin
 
+# force a dependency on msgpack; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/msgpack-$(PYV)
+
 # force a dependency on the oslo.serialization package
 depend type=require \
     fmri=library/python/oslo.serialization@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
@@ -73,5 +77,11 @@
 # 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 pbr; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/pbr-$(PYV)
+
+# force a dependency on pytz; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/pytz-$(PYV)
+
 # force a dependency on six; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/six-$(PYV)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.serialization/oslo.serialization.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,212 @@
+
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+		                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
--- a/components/python/oslo.utils/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/oslo.utils/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		oslo.utils
-COMPONENT_VERSION=	1.2.1
+COMPONENT_VERSION=	1.4.0
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:9cd8bcde345554582fd12c6daab81a7327a90c72861aa644e8b7b3fbfed5deba
+    sha256:f90e1d52542225031bc7e3d9bdc1b1270a80388e30285532124586e45e9317f6
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	https://launchpad.net/oslo.utils
 COMPONENT_BUGDB=	python-mod/oslo.utils
 
-TPNO=			21631
+TPNO=			25744
 
 # Depends on netaddr which is not Python 3 ready.
 PYTHON_VERSIONS=	$(PYTHON2_VERSIONS)
--- a/components/python/oslo.utils/oslo.utils-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/oslo.utils/oslo.utils-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,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.
 #
 
 set name=pkg.fmri \
@@ -60,7 +60,9 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo_utils/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo_utils/_i18n.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo_utils/encodeutils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_utils/eventletutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo_utils/excutils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_utils/fixture.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo_utils/importutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo_utils/netutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo_utils/reflection.py
@@ -69,7 +71,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo_utils/units.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo_utils/uuidutils.py
 #
-license LICENSE license="Apache v2.0"
+license oslo.utils.license license="Apache v2.0"
 
 # force a dependency on the Python runtime
 depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
@@ -91,5 +93,8 @@
 depend type=require \
     fmri=library/python/oslo.utils@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
 
+# force a dependency on pbr; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/pbr-$(PYV)
+
 # force a dependency on six; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/six-$(PYV)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.utils/oslo.utils.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,211 @@
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+		                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.utils/patches/keepalive.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,80 @@
+In-house patch to allow the TCP keepalive parameters to be used on Solaris.
+Patch has not yet been submitted upstream.
+
+--- oslo.utils-1.4.0/oslo_utils/netutils.py.orig	2015-10-21 10:11:23.275736933 -0600
++++ oslo.utils-1.4.0/oslo_utils/netutils.py	2015-10-21 10:11:26.709349827 -0600
+@@ -20,6 +20,7 @@ Network-related utilities and helper fun
+ import logging
+ import os
+ import socket
++import sys
+
+ import netaddr
+ import netifaces
+@@ -317,26 +317,44 @@ def set_tcp_keepalive(sock, tcp_keepaliv
+     if not tcp_keepalive:
+         return
+ 
+-    # These options aren't available in the OS X version of eventlet,
+-    # Idle + Count * Interval effectively gives you the total timeout.
+-    if tcp_keepidle is not None:
+-        if hasattr(socket, 'TCP_KEEPIDLE'):
+-            sock.setsockopt(socket.IPPROTO_TCP,
+-                            socket.TCP_KEEPIDLE,
+-                            tcp_keepidle)
+-        else:
+-            LOG.warning(_LW('tcp_keepidle not available on your system'))
+-    if tcp_keepalive_interval is not None:
+-        if hasattr(socket, 'TCP_KEEPINTVL'):
+-            sock.setsockopt(socket.IPPROTO_TCP,
+-                            socket.TCP_KEEPINTVL,
+-                            tcp_keepalive_interval)
+-        else:
+-            LOG.warning(_LW('tcp_keepintvl not available on your system'))
+-    if tcp_keepalive_count is not None:
+-        if hasattr(socket, 'TCP_KEEPCNT'):
+-            sock.setsockopt(socket.IPPROTO_TCP,
+-                            socket.TCP_KEEPCNT,
+-                            tcp_keepalive_count)
++    if sys.platform == 'sunos5':
++        # Should match definitions in <netinet/tcp.h>
++        TCP_KEEPALIVE_THRESHOLD = 0x16
++        TCP_KEEPALIVE_ABORT_THRESHOLD = 0x17
++
++        if tcp_keepidle is not None:
++            sock.setsockopt(socket.IPPROTO_TCP, TCP_KEEPALIVE_THRESHOLD,
++                            tcp_keepidle * 1000)
++        if tcp_keepalive_interval is None and tcp_keepalive_count is None:
++            return
++        if tcp_keepalive_interval is None or tcp_keepalive_count is None:
++            LOG.warning(_LW('tcp_keepintvl and tcp_keepknt must be set '
++                            'together'))
+         else:
+-            LOG.warning(_LW('tcp_keepcnt not available on your system'))
++            sock.setsockopt(
++                socket.IPPROTO_TCP, TCP_KEEPALIVE_ABORT_THRESHOLD,
++                tcp_keepalive_interval * tcp_keepalive_count * 1000)
++    else:
++        # These options aren't available in the OS X version of eventlet,
++        # Idle + Count * Interval effectively gives you the total timeout.
++        if tcp_keepidle is not None:
++            if hasattr(socket, 'TCP_KEEPIDLE'):
++                sock.setsockopt(socket.IPPROTO_TCP,
++                                socket.TCP_KEEPIDLE,
++                                tcp_keepidle)
++            else:
++                LOG.warning(_LW('tcp_keepidle not available on your system'))
++        if tcp_keepalive_interval is not None:
++            if hasattr(socket, 'TCP_KEEPINTVL'):
++                sock.setsockopt(socket.IPPROTO_TCP,
++                                socket.TCP_KEEPINTVL,
++                                tcp_keepalive_interval)
++            else:
++                LOG.warning(_LW('tcp_keepintvl not available on your system'))
++        if tcp_keepalive_count is not None:
++            if hasattr(socket, 'TCP_KEEPCNT'):
++                sock.setsockopt(socket.IPPROTO_TCP,
++                                socket.TCP_KEEPCNT,
++                                tcp_keepalive_count)
++            else:
++                LOG.warning(_LW('tcp_keepcnt not available on your system'))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.versionedobjects/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,56 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+include ../../../make-rules/shared-macros.mk
+
+COMPONENT_NAME=		oslo.versionedobjects
+COMPONENT_VERSION=	0.1.1
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
+COMPONENT_ARCHIVE_HASH=	\
+    sha256:dac8ef3ec789bd3f69f3f974e9f40282a411d804663eefd1ae39721f16a4c2da
+COMPONENT_ARCHIVE_URL=	$(call pypi_url)
+COMPONENT_PROJECT_URL=	http://pypi.python.org/pypi/oslo.versionedobjects/
+COMPONENT_BUGDB=	python-mod/oslo.versioned
+
+TPNO=			23690
+
+# Depends on oslo.serialization which is not Python 3 ready.
+PYTHON_VERSIONS =	$(PYTHON2_VERSIONS)
+
+include $(WS_MAKE_RULES)/prep.mk
+include $(WS_MAKE_RULES)/setup.py.mk
+include $(WS_MAKE_RULES)/ips.mk
+
+ASLR_MODE = $(ASLR_NOT_APPLICABLE)
+
+# common targets
+build:		$(BUILD_NO_ARCH)
+
+install:	$(INSTALL_NO_ARCH)
+
+test:		$(NO_TESTS)
+
+system-test:    $(NO_TESTS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.versionedobjects/oslo.versionedobjects-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,102 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+set name=pkg.fmri \
+    value=pkg:/library/python/oslo.versionedobjects-$(PYV)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary value="Oslo Versioned Objects library"
+set name=pkg.description \
+    value="The oslo.versionedobjects library deals with DB schemas being at different version than the code expects, allowing services to be operated safely during upgrades.  It enables DB independent schemas by providing an abstraction layer, which allows support for SQL and NoSQL databases."
+set name=com.oracle.info.description value="the Oslo Versioned Objects library"
+set name=com.oracle.info.tpno value=$(TPNO)
+set name=info.classification \
+    value=org.opensolaris.category.2008:Development/Python
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=info.upstream value="Openstack <[email protected]>"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=org.opensolaris.arc-caseid value=PSARC/2015/467
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+#
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.versionedobjects-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.versionedobjects-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.versionedobjects-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.versionedobjects-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.versionedobjects-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.versionedobjects-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.versionedobjects-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_versionedobjects/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_versionedobjects/_i18n.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_versionedobjects/_utils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_versionedobjects/base.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_versionedobjects/exception.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_versionedobjects/fields.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_versionedobjects/fixture.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_versionedobjects/openstack/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_versionedobjects/openstack/common/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_versionedobjects/openstack/common/_i18n.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_versionedobjects/openstack/common/versionutils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_versionedobjects/safe_utils.py
+#
+license oslo.versionedobjects.license license="Apache v2.0"
+
+# force a dependency on the Python runtime
+depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
+    pkg.debug.depend.path=usr/bin
+
+# force a dependency on fixtures; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/fixtures-$(PYV)
+
+# force a dependency on iso8601; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/iso8601-$(PYV)
+
+# force a dependency on mock; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/mock-$(PYV)
+
+# force a dependency on oslo.concurrency; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/oslo.concurrency-$(PYV)
+
+# force a dependency on oslo.context; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/oslo.context-$(PYV)
+
+# 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.serialization; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/oslo.serialization-$(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 the oslo.versionedobjects package
+depend type=require \
+    fmri=library/python/oslo.versionedobjects@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+
+# force a dependency on six; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/six-$(PYV)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.versionedobjects/oslo.versionedobjects.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,212 @@
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
--- a/components/python/oslo.vmware/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/oslo.vmware/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		oslo.vmware
-COMPONENT_VERSION=	0.8.0
+COMPONENT_VERSION=	0.11.2
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:b216eda661a95b185028c4e6316c3f9fa44c4785751cc93b6dcaac8ed22ffc86
+    sha256:036cf0ad6ab0d4defd743678999851d570c2ca1ff34eba916920ce54d9a5d348
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	https://launchpad.net/oslo.vmware
 COMPONENT_BUGDB=	python-mod/oslo.vmware
 
-TPNO=			21632
+TPNO=			25745
 
 # Depends on netaddr & suds which are not Python 3 ready.
 PYTHON_VERSIONS=	$(PYTHON2_VERSIONS)
--- a/components/python/oslo.vmware/oslo.vmware-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/oslo.vmware/oslo.vmware-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,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.
 #
 
 set name=pkg.fmri \
@@ -46,13 +46,11 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo.vmware-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo.vmware-$(COMPONENT_VERSION)-py$(PYVER).egg-info/namespace_packages.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo.vmware-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo.vmware-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo.vmware-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo.vmware-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/vmware/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/vmware/_i18n.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/vmware/api.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/vmware/common/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/vmware/common/loopingcall.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/vmware/constants.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/vmware/exceptions.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/vmware/image_transfer.py
@@ -64,13 +62,40 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/vmware/service.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/vmware/vim.py
 file path=usr/lib/python$(PYVER)/vendor-packages/oslo/vmware/vim_util.py
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/vmware/wsdl/5.5/core-types.xsd
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/vmware/wsdl/5.5/pbm-messagetypes.xsd
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/vmware/wsdl/5.5/pbm-types.xsd
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/vmware/wsdl/5.5/pbm.wsdl
-file path=usr/lib/python$(PYVER)/vendor-packages/oslo/vmware/wsdl/5.5/pbmService.wsdl
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/_i18n.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/api.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/common/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/common/loopingcall.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/constants.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/exceptions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/image_transfer.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/network/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/network/nsx/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/network/nsx/nsxv/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/network/nsx/nsxv/api/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/network/nsx/nsxv/api/api.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/network/nsx/nsxv/api/api_helper.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/network/nsx/nsxv/common/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/network/nsx/nsxv/common/exceptions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/network/nsx/nsxv/objects/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/network/nsx/nsxv/objects/edge_cfg_obj.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/network/nsx/nsxv/objects/loadbalancer.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/objects/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/objects/datacenter.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/objects/datastore.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/pbm.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/rw_handles.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/service.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/vim.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/vim_util.py
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/wsdl/5.5/core-types.xsd
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/wsdl/5.5/pbm-messagetypes.xsd
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/wsdl/5.5/pbm-types.xsd
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/wsdl/5.5/pbm.wsdl
+file path=usr/lib/python$(PYVER)/vendor-packages/oslo_vmware/wsdl/5.5/pbmService.wsdl
 #
-license LICENSE license="Apache v2.0"
+license oslo.vmware.license license="Apache v2.0"
 
 # force a dependency on the Python runtime
 depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
@@ -79,12 +104,21 @@
 # force a dependency on eventlet; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/eventlet-$(PYV)
 
+# force a dependency on httplib2; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/httplib2-$(PYV)
+
 # force a dependency on netaddr; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/netaddr-$(PYV)
 
+# force a dependency on oslo.concurrency; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/oslo.concurrency-$(PYV)
+
 # 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.serialization; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/oslo.serialization-$(PYV)
+
 # force a dependency on oslo.utils; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/oslo.utils-$(PYV)
 
@@ -92,6 +126,9 @@
 depend type=require \
     fmri=library/python/oslo.vmware@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
 
+# force a dependency on pbr; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/pbr-$(PYV)
+
 # force a dependency on requests; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/requests-$(PYV)
 
@@ -100,3 +137,6 @@
 
 # force a dependency on suds; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/suds-$(PYV)
+
+# force a dependency on urllib3; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/urllib3-$(PYV)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/oslo.vmware/oslo.vmware.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,211 @@
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+		                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
--- a/components/python/pbr/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/pbr/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,28 +20,30 @@
 #
 
 #
-# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		pbr
-COMPONENT_VERSION=	0.8.1
+COMPONENT_VERSION=	0.11.0
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:aad1f8296aa6c5379c3ccb07cf7819a7482bb39a835b70d7e5faa4a00fa0876a
+    sha256:d7f0d69aef367a764d69a4728afd966025ce9394d6029a924ef838ecdf592f6d
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	http://pypi.python.org/pypi/pbr/
 COMPONENT_BUGDB=	python-mod/pbr
 
-TPNO=			17860
+TPNO=			25746
 
 include $(WS_MAKE_RULES)/prep.mk
 include $(WS_MAKE_RULES)/setup.py.mk
 include $(WS_MAKE_RULES)/ips.mk
 
 ASLR_MODE = $(ASLR_NOT_APPLICABLE)
+COMPONENT_POST_INSTALL_ACTION = \
+	(cd $(PROTO_DIR)/usr/bin ; $(MV) -f pbr pbr-$(PYTHON_VERSION))
 
 COMPONENT_TEST_DIR =	$(SOURCE_DIR)
 COMPONENT_TEST_ARGS =	setup.py test
--- a/components/python/pbr/pbr-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/pbr/pbr-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,7 @@
 #
 
 #
-# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
 #
 
 set name=pkg.fmri \
@@ -37,24 +37,36 @@
 set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
 set name=org.opensolaris.arc-caseid value=PSARC/2013/246
 set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+#
+link path=usr/bin/pbr target=pbr-$(PYVER) mediator=python \
+    mediator-version=$(PYVER)
+file path=usr/bin/pbr-$(PYVER)
 file path=usr/lib/python$(PYVER)/vendor-packages/pbr-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
 file path=usr/lib/python$(PYVER)/vendor-packages/pbr-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/pbr-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/pbr-$(COMPONENT_VERSION)-py$(PYVER).egg-info/entry_points.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/pbr-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/pbr-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
 file path=usr/lib/python$(PYVER)/vendor-packages/pbr-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/pbr-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/pbr/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/pbr/builddoc.py
+file path=usr/lib/python$(PYVER)/vendor-packages/pbr/cmd/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/pbr/cmd/main.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pbr/core.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pbr/extra_files.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pbr/find_package.py
+file path=usr/lib/python$(PYVER)/vendor-packages/pbr/git.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pbr/hooks/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pbr/hooks/backwards.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pbr/hooks/base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pbr/hooks/commands.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pbr/hooks/files.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pbr/hooks/metadata.py
+file path=usr/lib/python$(PYVER)/vendor-packages/pbr/options.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pbr/packaging.py
+file path=usr/lib/python$(PYVER)/vendor-packages/pbr/pbr_json.py
+file path=usr/lib/python$(PYVER)/vendor-packages/pbr/testr_command.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pbr/util.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pbr/version.py
 license pbr.license license="Apache v2.0, BSD"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/pint/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,54 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+include ../../../make-rules/shared-macros.mk
+
+COMPONENT_NAME=		Pint
+COMPONENT_VERSION=	0.6
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).zip
+COMPONENT_ARCHIVE_HASH=	\
+    sha256:b1ab3b589ca4d78689233a007abd5a7eec4ea65302cabaed06932d20f2a9e748
+COMPONENT_ARCHIVE_URL=	$(call pypi_url)
+COMPONENT_PROJECT_URL=	http://pypi.python.org/pypi/Pint/
+COMPONENT_BUGDB=	python-mod/pint
+
+TPNO=			23148
+
+include $(WS_MAKE_RULES)/prep.mk
+include $(WS_MAKE_RULES)/setup.py.mk
+include $(WS_MAKE_RULES)/ips.mk
+
+ASLR_MODE = $(ASLR_NOT_APPLICABLE)
+
+COMPONENT_TEST_DIR=	$(SOURCE_DIR)
+COMPONENT_TEST_ARGS=	setup.py test
+
+# common targets
+build:		$(BUILD_NO_ARCH)
+
+install:	$(INSTALL_NO_ARCH)
+
+test:		$(TEST_NO_ARCH)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/pint/pint-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,66 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+set name=pkg.fmri \
+    value=pkg:/library/python/pint-$(PYV)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary value="Physical quantities module"
+set name=pkg.description \
+    value="Pint is a Python module/package to define, operate and manipulate physical quantities: the product of a numerical value and a unit of measurement.  It allows arithmetic operations between them and conversions from and to different units."
+set name=com.oracle.info.description value="Pint: a Python units library"
+set name=com.oracle.info.tpno value=$(TPNO)
+set name=info.classification \
+    value=org.opensolaris.category.2008:Development/Python
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=info.upstream value="Hernan E. Grecco <[email protected]>"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=org.opensolaris.arc-caseid value=PSARC/2015/468
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+#
+file path=usr/lib/python$(PYVER)/vendor-packages/Pint-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
+file path=usr/lib/python$(PYVER)/vendor-packages/Pint-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/Pint-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/Pint-$(COMPONENT_VERSION)-py$(PYVER).egg-info/entry_points.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/Pint-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/Pint-$(COMPONENT_VERSION)-py$(PYVER).egg-info/zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/pint/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/pint/compat/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/pint/compat/chainmap.py
+file path=usr/lib/python$(PYVER)/vendor-packages/pint/compat/lrucache.py
+file path=usr/lib/python$(PYVER)/vendor-packages/pint/compat/nullhandler.py
+file path=usr/lib/python$(PYVER)/vendor-packages/pint/compat/transformdict.py
+file path=usr/lib/python$(PYVER)/vendor-packages/pint/constants_en.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/pint/context.py
+file path=usr/lib/python$(PYVER)/vendor-packages/pint/default_en.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/pint/formatting.py
+file path=usr/lib/python$(PYVER)/vendor-packages/pint/measurement.py
+file path=usr/lib/python$(PYVER)/vendor-packages/pint/quantity.py
+file path=usr/lib/python$(PYVER)/vendor-packages/pint/unit.py
+file path=usr/lib/python$(PYVER)/vendor-packages/pint/util.py
+#
+license LICENSE license=BSD
+
+# force a dependency on the pint package
+depend type=require \
+    fmri=library/python/pint@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/psutil/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,57 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+include ../../../make-rules/shared-macros.mk
+
+COMPONENT_NAME=		psutil
+COMPONENT_VERSION=	1.2.1
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
+COMPONENT_ARCHIVE_HASH=	\
+    sha256:508e4a44c8253a386a0f86d9c9bd4a1b4cbb2f94e88d49a19c1513653ca66c45
+COMPONENT_ARCHIVE_URL=	$(call pypi_url)
+COMPONENT_PROJECT_URL=	http://pypi.python.org/pypi/psutil/
+COMPONENT_BUGDB=	python-mod/psutil
+
+TPNO=			25720
+
+# Syntax Errors, not Python 3 ready
+PYTHON_VERSIONS=	$(PYTHON2_VERSIONS)
+
+include $(WS_MAKE_RULES)/prep.mk
+include $(WS_MAKE_RULES)/setup.py.mk
+include $(WS_MAKE_RULES)/ips.mk
+
+ASLR_MODE = $(ASLR_NOT_APPLICABLE)
+
+# common targets
+build:		$(BUILD_32_and_64)
+
+install:	$(INSTALL_32_and_64)
+
+test:		$(NO_TESTS)
+
+
+REQUIRED_PACKAGES += system/library
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/psutil/patches/01-remove-non-solaris.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,84 @@
+Patch to remove imports from non-Solaris platforms.  This patch will
+not be submitted upstream.
+
+--- psutil-1.2.1/psutil/__init__.py.orig 2015-03-30 13:46:25.317089988 -0600
++++ psutil-1.2.1/psutil/__init__.py 2015-03-30 13:47:05.416389522 -0600
+@@ -84,76 +84,8 @@ from psutil._common import (CONN_ESTABLI
+                             CONN_CLOSING,
+                             CONN_NONE)
+
+-if sys.platform.startswith("linux"):
+-    import psutil._pslinux as _psplatform
+-    from psutil._pslinux import (phymem_buffers,
+-                                 cached_phymem)
+-
+-    from psutil._pslinux import (IOPRIO_CLASS_NONE,
+-                                 IOPRIO_CLASS_RT,
+-                                 IOPRIO_CLASS_BE,
+-                                 IOPRIO_CLASS_IDLE)
+-    # Linux >= 2.6.36
+-    if _psplatform.HAS_PRLIMIT:
+-        from psutil._pslinux import (RLIM_INFINITY,
+-                                     RLIMIT_AS,
+-                                     RLIMIT_CORE,
+-                                     RLIMIT_CPU,
+-                                     RLIMIT_DATA,
+-                                     RLIMIT_FSIZE,
+-                                     RLIMIT_LOCKS,
+-                                     RLIMIT_MEMLOCK,
+-                                     RLIMIT_NOFILE,
+-                                     RLIMIT_NPROC,
+-                                     RLIMIT_RSS,
+-                                     RLIMIT_STACK)
+-        # Kinda ugly but considerably faster than using hasattr() and
+-        # setattr() against the module object (we are at import time
+-        # and we demand speed).
+-        try:
+-            RLIMIT_MSGQUEUE = _psplatform.RLIMIT_MSGQUEUE
+-        except AttributeError:
+-            pass
+-        try:
+-            RLIMIT_NICE = _psplatform.RLIMIT_NICE
+-        except AttributeError:
+-            pass
+-        try:
+-            RLIMIT_RTPRIO = _psplatform.RLIMIT_RTPRIO
+-        except AttributeError:
+-            pass
+-        try:
+-            RLIMIT_RTTIME = _psplatform.RLIMIT_RTTIME
+-        except AttributeError:
+-            pass
+-        try:
+-            RLIMIT_SIGPENDING = _psplatform.RLIMIT_SIGPENDING
+-        except AttributeError:
+-            pass
+-
+-elif sys.platform.startswith("win32"):
+-    import psutil._psmswindows as _psplatform
+-    from psutil._psmswindows import (ABOVE_NORMAL_PRIORITY_CLASS,
+-                                     BELOW_NORMAL_PRIORITY_CLASS,
+-                                     HIGH_PRIORITY_CLASS,
+-                                     IDLE_PRIORITY_CLASS,
+-                                     NORMAL_PRIORITY_CLASS,
+-                                     REALTIME_PRIORITY_CLASS,
+-                                     CONN_DELETE_TCB)
+-
+-elif sys.platform.startswith("darwin"):
+-    import psutil._psosx as _psplatform
+-
+-elif sys.platform.startswith("freebsd"):
+-    import psutil._psbsd as _psplatform
+-
+-elif sys.platform.startswith("sunos"):
+-    import psutil._pssunos as _psplatform
+-    from psutil._pssunos import (CONN_IDLE,
+-                                 CONN_BOUND)
+-
+-else:
+-    raise NotImplementedError('platform %s is not supported' % sys.platform)
++import psutil._pssunos as _psplatform
++from psutil._pssunos import (CONN_IDLE, CONN_BOUND)
+
+ __all__.extend(_psplatform.__extra__all__)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/psutil/psutil-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,64 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+set name=pkg.fmri \
+    value=pkg:/library/python/psutil-$(PYV)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary value="A process and system utilities module for Python"
+set name=pkg.description \
+    value="psutil is a Python module to example process and system utilities"
+set name=com.oracle.info.description value="the Python psutil module"
+set name=com.oracle.info.tpno value=$(TPNO)
+set name=info.classification \
+    value=org.opensolaris.category.2008:Development/Python
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=info.upstream value="Giampaolo Rodola <[email protected]>"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=org.opensolaris.arc-caseid value=PSARC/2015/530
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+#
+file path=usr/lib/python$(PYVER)/vendor-packages/64/_psutil_posix.so
+file path=usr/lib/python$(PYVER)/vendor-packages/64/_psutil_sunos.so
+file path=usr/lib/python$(PYVER)/vendor-packages/_psutil_posix.so
+file path=usr/lib/python$(PYVER)/vendor-packages/_psutil_sunos.so
+file path=usr/lib/python$(PYVER)/vendor-packages/psutil-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
+file path=usr/lib/python$(PYVER)/vendor-packages/psutil-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/psutil-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/psutil-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/psutil/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/psutil/_common.py
+file path=usr/lib/python$(PYVER)/vendor-packages/psutil/_compat.py \
+    pkg.depend.bypass-generate=.*/builtins.*
+file path=usr/lib/python$(PYVER)/vendor-packages/psutil/_error.py
+file path=usr/lib/python$(PYVER)/vendor-packages/psutil/_psposix.py
+file path=usr/lib/python$(PYVER)/vendor-packages/psutil/_pssunos.py
+file path=usr/lib/python$(PYVER)/vendor-packages/psutil/error.py
+license LICENSE license=BSD
+
+# force a dependency on the Python runtime
+depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
+    pkg.debug.depend.path=usr/bin
+
+# force a dependency on the psutil package
+depend type=require \
+    fmri=library/python/psutil@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
--- a/components/python/pycadf/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/pycadf/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		pycadf
-COMPONENT_VERSION=	0.6.0
+COMPONENT_VERSION=	0.8.0
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:9ba1e9ac52ee2a2d6d9cc89847323559cc2ffe7b4d80b703944a0a1f75c7093f
+    sha256:240d7775682a0f49fb580310dd6459e8a8b5f5619dfdc687f043c3fe21b48ba1
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	https://launchpad.net/pycadf
 COMPONENT_BUGDB=	python-mod/pycadf
 
-TPNO=			19271
+TPNO=			25747
 
 # Depends on oslo.messaging which is not Python 3 ready.
 PYTHON_VERSIONS=	$(PYTHON2_VERSIONS)
--- a/components/python/pycadf/pycadf-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/pycadf/pycadf-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,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.
 #
 
 set name=pkg.fmri \
@@ -38,13 +38,19 @@
 set name=org.opensolaris.arc-caseid value=PSARC/2014/329
 set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
 #
+file path=usr/lib/python$(PYVER)/vendor-packages/etc/pycadf/cinder_api_audit_map.conf
+file path=usr/lib/python$(PYVER)/vendor-packages/etc/pycadf/glance_api_audit_map.conf
+file path=usr/lib/python$(PYVER)/vendor-packages/etc/pycadf/neutron_api_audit_map.conf
+file path=usr/lib/python$(PYVER)/vendor-packages/etc/pycadf/nova_api_audit_map.conf
 file path=usr/lib/python$(PYVER)/vendor-packages/pycadf-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
 file path=usr/lib/python$(PYVER)/vendor-packages/pycadf-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/pycadf-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/pycadf-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/pycadf-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
 file path=usr/lib/python$(PYVER)/vendor-packages/pycadf-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/pycadf-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/_i18n.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/attachment.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/audit/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/audit/api.py
@@ -55,6 +61,8 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/event.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/eventfactory.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/geolocation.py
+file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/helper/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/helper/api.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/host.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/identifier.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/measurement.py
@@ -63,24 +71,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/middleware/audit.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/middleware/base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/middleware/notifier.py
-file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/openstack/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/openstack/common/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/openstack/common/context.py
-file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/openstack/common/excutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/openstack/common/fileutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/openstack/common/fixture/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/openstack/common/fixture/config.py
-file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/openstack/common/fixture/lockutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/openstack/common/fixture/logging.py
-file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/openstack/common/fixture/mockpatch.py
-file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/openstack/common/fixture/moxstubout.py
-file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/openstack/common/gettextutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/openstack/common/importutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/openstack/common/jsonutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/openstack/common/local.py
-file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/openstack/common/lockutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/openstack/common/log.py
-file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/openstack/common/timeutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/path.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/reason.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/reporterstep.py
@@ -89,35 +79,27 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/timestamp.py
 file path=usr/lib/python$(PYVER)/vendor-packages/pycadf/utils.py
 #
-license LICENSE license="Apache v2.0"
-
-# force a group dependency on the optional anyjson; pkgdepend work is needed
-# to flush this out.
-depend type=group fmri=library/python/anyjson-$(PYV)
-
-# force a group dependency on the optional simplejson; pkgdepend work is needed
-# to flush this out.
-depend type=group fmri=library/python/simplejson-$(PYV)
+license pycadf.license license="Apache v2.0"
 
 # force a dependency on the Python runtime
 depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
     pkg.debug.depend.path=usr/bin
 
-# force a dependency on babel; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/babel-$(PYV)
-
-# force a dependency on iso8601; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/iso8601-$(PYV)
-
 # force a dependency on oslo.config; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/oslo.config-$(PYV)
 
+# force a dependency on oslo.context; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/oslo.context-$(PYV)
+
+# 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.messaging; pkgdepend work is needed to flush this
 # out.
 depend type=require fmri=library/python/oslo.messaging-$(PYV)
 
-# force a dependency on posix_ipc; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/posix_ipc-$(PYV)
+# force a dependency on oslo.serialization; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/oslo.serialization-$(PYV)
 
 # force a dependency on the pycadf package
 depend type=require \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/pycadf/pycadf.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,211 @@
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+		                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/python-mimeparse/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,51 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+include ../../../make-rules/shared-macros.mk
+
+COMPONENT_NAME=		python-mimeparse
+COMPONENT_VERSION=	0.1.4
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
+COMPONENT_ARCHIVE_HASH=	\
+    sha256:3c69a21e37e77f754e6fc09ebda70acd92c90d8a58f29a41cc0248351378ddc3
+COMPONENT_ARCHIVE_URL=	$(call pypi_url)
+COMPONENT_PROJECT_URL=	https://github.com/dbtsai/python-mimeparse
+COMPONENT_BUGDB=	python-mod/mimeparse
+
+TPNO=			26390
+
+include $(WS_MAKE_RULES)/prep.mk
+include $(WS_MAKE_RULES)/setup.py.mk
+include $(WS_MAKE_RULES)/ips.mk
+
+ASLR_MODE = $(ASLR_NOT_APPLICABLE)
+
+# common targets
+build:		$(BUILD_NO_ARCH)
+
+install:	$(INSTALL_NO_ARCH)
+
+test:		$(NO_TESTS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/python-mimeparse/patches/use_setuptools.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,13 @@
+Switch away from the more limited distutils package to setuptools.
+This patch has not yet been submitted upstream.
+
+--- python-mimeparse-0.1.4/setup.py.orig   2014-03-25 14:33:23.587458089 -0600
++++ python-mimeparse-0.1.4/setup.py    2014-03-25 14:33:28.216518310 -0600
+@@ -1,6 +1,6 @@
+ #!/usr/bin/env python
+
+-from distutils.core import setup
++from setuptools import setup
+ import mimeparse
+
+ setup(
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/python-mimeparse/python-mimeparse-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,55 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+set name=pkg.fmri \
+    value=pkg:/library/python/python-mimeparse-$(PYV)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary value="Basic functions for handling mime-types"
+set name=pkg.description \
+    value="This module provides basic functions for parsing mime-type names and matching them against a list of media-ranges."
+set name=com.oracle.info.description value="the Python python-mimeparse module"
+set name=com.oracle.info.tpno value=$(TPNO)
+set name=info.classification \
+    value=org.opensolaris.category.2008:Development/Python
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=info.upstream value="David Tsai <[email protected]>"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=org.opensolaris.arc-caseid value=PSARC/2016/019
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+#
+file path=usr/lib/python$(PYVER)/vendor-packages/mimeparse.py
+file path=usr/lib/python$(PYVER)/vendor-packages/python_mimeparse-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
+file path=usr/lib/python$(PYVER)/vendor-packages/python_mimeparse-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/python_mimeparse-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/python_mimeparse-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
+#
+license LICENSE license=MIT
+
+# force a dependency on the Python runtime
+depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
+    pkg.debug.depend.path=usr/bin
+
+# force a dependency on the python-mimeparse package
+depend type=require \
+    fmri=library/python/python-mimeparse@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
--- a/components/python/saharaclient/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/saharaclient/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		python-saharaclient
-COMPONENT_VERSION=	0.7.6
+COMPONENT_VERSION=	0.8.0
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:9013b57a70c30c4ef6e799f11755495343106528ee42bbeb8a40b5e8fad825c2
+    sha256:cd212b85811118eb45ab5b2ade0a8cbf5418d5d6b9f4e7425b5026c293effb39
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	http://launchpad.net/python-saharaclient
 COMPONENT_BUGDB=	service/sahara
 
-TPNO=			21636
+TPNO=			25757
 
 # Depends on keystoneclient which is not Python 3 ready.
 PYTHON_VERSIONS=	$(PYTHON2_VERSIONS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/saharaclient/patches/01-requirements.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,20 @@
+In-house patch to remove the dependency on argparse.  Since we use
+Python 2.7 only for OpenStack, argparse is already included.  If this
+line is present, stevedore will fail to find the pip package for it,
+causing a cascade of failures to other tools.
+
+--- python-saharaclient-0.8.0/requirements.txt.orig	2015-08-02 02:14:21.878516359 -0400
++++ python-saharaclient-0.8.0/requirements.txt	2015-08-02 02:15:04.434964849 -0400
+@@ -12,4 +12,3 @@
+ requests>=2.2.0,!=2.4.0
+ six>=1.7.0
+ PrettyTable>=0.7,<0.8
+-argparse
+
+--- python-saharaclient-0.8.0/python_saharaclient.egg-info/requires.txt.orig	2015-08-02 17:17:40.108351859 -0400
++++ python-saharaclient-0.8.0/python_saharaclient.egg-info/requires.txt	2015-08-02 02:14:48.979346364 -0400
+@@ -7,4 +7,3 @@
+ requests>=2.2.0,!=2.4.0
+ six>=1.7.0
+ PrettyTable>=0.7,<0.8
+-argparse
--- a/components/python/saharaclient/saharaclient-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/saharaclient/saharaclient-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,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.
 #
 
 set name=pkg.fmri \
@@ -50,6 +50,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/python_saharaclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_saharaclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/entry_points.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_saharaclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/python_saharaclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
 file path=usr/lib/python$(PYVER)/vendor-packages/python_saharaclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_saharaclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/__init__.py
@@ -59,6 +60,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/api/cluster_templates.py
 file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/api/clusters.py
 file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/api/data_sources.py
+file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/api/events.py
 file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/api/helpers.py
 file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/api/httpclient.py
 file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/api/images.py
@@ -73,36 +75,29 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/client.py
 file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/openstack/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/openstack/common/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/openstack/common/_i18n.py
 file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/openstack/common/apiclient/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/openstack/common/apiclient/auth.py
-file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/openstack/common/apiclient/base.py
-file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/openstack/common/apiclient/client.py
 file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/openstack/common/apiclient/exceptions.py
-file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/openstack/common/apiclient/fake_client.py
 file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/openstack/common/cliutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/openstack/common/gettextutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/openstack/common/importutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/openstack/common/strutils.py
-file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/openstack/common/uuidutils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/shell.py
 file path=usr/lib/python$(PYVER)/vendor-packages/saharaclient/version.py
 #
-license LICENSE license="Apache v2.0"
-
-# force a group dependency on the optional simplejson; pkgdepend work is needed
-# to flush this out.
-depend type=group fmri=library/python/simplejson-$(PYV)
+license saharaclient.license license="Apache v2.0"
 
 # force a dependency on argparse; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/argparse-$(PYV)
 
-# force a dependency on babel; pkgdepend work is needed to flush this out.
-depend type=require fmri=library/python/babel-$(PYV)
-
 # force a dependency on keystoneclient; pkgdepend work is needed to flush this
 # out.
 depend type=require fmri=library/python/keystoneclient-$(PYV)
 
+# 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.utils; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/oslo.utils-$(PYV)
+
 # force a dependency on pbr; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/pbr-$(PYV)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/saharaclient/saharaclient.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,211 @@
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+		                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/semantic-version/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,52 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+include ../../../make-rules/shared-macros.mk
+
+COMPONENT_NAME=		semantic_version
+COMPONENT_VERSION=	2.4.2
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
+COMPONENT_ARCHIVE_HASH=	\
+    sha256:7e8b7fa74a3bc9b6e90b15b83b9bc2377c78eaeae3447516425f475d5d6932d2
+COMPONENT_ARCHIVE_URL=	$(call pypi_url)
+COMPONENT_PROJECT_URL=	http://pypi.python.org/pypi/semantic_version/
+COMPONENT_BUGDB=	python-mod/semantic-ver
+
+TPNO=			25732
+
+
+include $(WS_MAKE_RULES)/prep.mk
+include $(WS_MAKE_RULES)/setup.py.mk
+include $(WS_MAKE_RULES)/ips.mk
+
+ASLR_MODE = $(ASLR_NOT_APPLICABLE)
+
+# common targets
+build:		$(BUILD_NO_ARCH)
+
+install:	$(INSTALL_NO_ARCH)
+
+test:		$(NO_TEST)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/semantic-version/semantic-version-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,59 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+set name=pkg.fmri \
+    value=pkg:/library/python/semantic-version-$(PYV)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary value="A library implementing the 'Sem Ver' scheme"
+set name=pkg.description \
+    value="Small python library that provides a few tools to handle SemVer in Python. It follows strictly the 2.0.0 version of the SemVer scheme."
+set name=com.oracle.info.description value="Library implementing SemVer scheme"
+set name=com.oracle.info.tpno value=$(TPNO)
+set name=info.classification \
+    value=org.opensolaris.category.2008:Development/Python
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=info.upstream \
+    value="Raphael Barrois <[email protected]>"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=org.opensolaris.arc-caseid value=PSARC/2015/471
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+#
+file path=usr/lib/python$(PYVER)/vendor-packages/semantic_version-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
+file path=usr/lib/python$(PYVER)/vendor-packages/semantic_version-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/semantic_version-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/semantic_version-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/semantic_version/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/semantic_version/base.py
+file path=usr/lib/python$(PYVER)/vendor-packages/semantic_version/compat.py
+file path=usr/lib/python$(PYVER)/vendor-packages/semantic_version/django_fields.py
+#
+license LICENSE license=BSD
+
+# force a dependency on the Python runtime
+depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
+    pkg.debug.depend.path=usr/bin
+
+# force a dependency on the semantic-version package
+depend type=require \
+    fmri=library/python/semantic-version@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
--- a/components/python/sqlalchemy-migrate/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/sqlalchemy-migrate/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -18,21 +18,21 @@
 #
 # CDDL HEADER END
 #
-# Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		sqlalchemy-migrate
-COMPONENT_VERSION=	0.9.1
+COMPONENT_VERSION=	0.9.6
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:16e327c9642ca4c99a70dcac3b39aeb821edaf5214834b47fb0a89bac44af23b
+    sha256:c2c73d8dbeb29a96459d8622e3bac2e97cf6f74ed0564469486fe7ffe0ef3d97
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
-COMPONENT_PROJECT_URL=	http://code.google.com/p/sqlalchemy-migrate/
+COMPONENT_PROJECT_URL=	https://github.com/stackforge/sqlalchemy-migrate
 COMPONENT_BUGDB=	python-mod/sqlalchemy-mig
 
-TPNO=			21740
+TPNO=			25760
 
 # Syntax issues: not Python 3 ready.
 PYTHON_VERSIONS=	$(PYTHON2_VERSIONS)
--- a/components/python/sqlalchemy-migrate/patches/01-fix-warnings.patch	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-The following patch address the following upstream issue
-
-	http://code.google.com/p/sqlalchemy-migrate/issues/detail?id=170
-
-It has not yet been submitted upstream.
-
---- sqlalchemy-migrate-0.9.1/migrate/changeset/__init__.py.~1~	2014-05-06 07:39:34.000000000 -0700
-+++ sqlalchemy-migrate-0.9.1/migrate/changeset/__init__.py	2014-09-01 23:26:29.864218808 -0700
-@@ -10,7 +10,8 @@ import warnings
- import sqlalchemy
- from sqlalchemy import __version__ as _sa_version
- 
--warnings.simplefilter('always', DeprecationWarning)
-+warnings.filterwarnings('always', message='.*', category=DeprecationWarning,
-+    module='migrate.changeset')
- 
- _sa_version = tuple(int(re.match("\d+", x).group(0)) for x in _sa_version.split("."))
- SQLA_07 = _sa_version >= (0, 7)
--- a/components/python/sqlalchemy-migrate/sqlalchemy-migrate-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/sqlalchemy-migrate/sqlalchemy-migrate-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,7 @@
 #
 
 #
-# Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
 #
 
 # These template files would be processed by pkgdepend, but shouldn't be.
@@ -78,7 +78,9 @@
 file \
     path=usr/lib/python$(PYVER)/vendor-packages/migrate/versioning/script/py.py \
     pkg.depend.bypass-generate=.*/six.*
-file path=usr/lib/python$(PYVER)/vendor-packages/migrate/versioning/script/sql.py
+file \
+    path=usr/lib/python$(PYVER)/vendor-packages/migrate/versioning/script/sql.py \
+    pkg.depend.bypass-generate=.*/sqlparse.*
 file path=usr/lib/python$(PYVER)/vendor-packages/migrate/versioning/shell.py
 file path=usr/lib/python$(PYVER)/vendor-packages/migrate/versioning/template.py
 file path=usr/lib/python$(PYVER)/vendor-packages/migrate/versioning/templates/__init__.py
@@ -107,6 +109,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/sqlalchemy_migrate-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/sqlalchemy_migrate-$(COMPONENT_VERSION)-py$(PYVER).egg-info/entry_points.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/sqlalchemy_migrate-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/sqlalchemy_migrate-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
 file path=usr/lib/python$(PYVER)/vendor-packages/sqlalchemy_migrate-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/sqlalchemy_migrate-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
 license sqlalchemy-migrate.license license=MIT
@@ -115,9 +118,15 @@
 depend type=optional \
     fmri=library/python-2/sqlalchemy-migrate-$(PYV)@0.7.2,5.12-5.12.0.0.0.41.0
 
+# force a dependency on pbr; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/pbr-$(PYV)
+
 # force a dependency on the sqlalchemy-migrate package
 depend type=require \
     fmri=library/python/sqlalchemy-migrate@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
 
+# force a dependency on sqlparse; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/sqlparse-$(PYV)
+
 # force a dependency on tempita; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/tempita-$(PYV)
--- a/components/python/sqlalchemy-migrate/sqlalchemy-migrate.license	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/sqlalchemy-migrate/sqlalchemy-migrate.license	Fri Feb 05 17:54:17 2016 -0500
@@ -1,21 +1,42 @@
-This is the MIT license: http://www.opensource.org/licenses/mit-license.php
+The MIT License
+
+Copyright (c) 2009 Evan Rosson, Jan Dittberner, Domen Kožar
 
-Copyright (c) 2005-2013 the SQLAlchemy authors and contributors <see AUTHORS file>.
-SQLAlchemy is a trademark of Michael Bayer.
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
-Permission is hereby granted, free of charge, to any person obtaining a copy of 
-this software and associated documentation files (the "Software"), to deal in 
-the Software without restriction, including without limitation the rights to 
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
-of the Software, and to permit persons to whom the Software is furnished to do 
-so, subject to the following conditions:
-The above copyright notice and this permission notice shall be included in all 
-copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+==============================================================================
+Additional license seen:
+
+setup.py
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
-SOFTWARE.
+#!/usr/bin/env python
+# Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+==============================================================================
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/sqlparse/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,55 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+include ../../../make-rules/shared-macros.mk
+
+COMPONENT_NAME=		sqlparse
+COMPONENT_VERSION=	0.1.14
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
+COMPONENT_ARCHIVE_HASH=	\
+    sha256:e561e31853ab9f3634a1a2bd53035f9e47dfb203d56b33cc6569047ba087daf0
+COMPONENT_ARCHIVE_URL=	$(call pypi_url)
+COMPONENT_PROJECT_URL=	http://pypi.python.org/pypi/sqlparse/
+COMPONENT_BUGDB=	python-mod/sqlparse
+
+TPNO=			26000
+
+include $(WS_MAKE_RULES)/prep.mk
+include $(WS_MAKE_RULES)/setup.py.mk
+include $(WS_MAKE_RULES)/ips.mk
+
+ASLR_MODE = $(ASLR_NOT_APPLICABLE)
+
+COMPONENT_POST_INSTALL_ACTION = \
+	(cd $(PROTO_DIR)/usr/bin ; \
+	 $(MV) -f sqlformat sqlformat-$(PYTHON_VERSION))
+
+# common targets
+build:		$(BUILD_NO_ARCH)
+
+install:	$(INSTALL_NO_ARCH)
+
+test:		$(NO_TESTS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/sqlparse/sqlparse-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,67 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+set name=pkg.fmri \
+    value=pkg:/library/python/sqlparse-$(PYV)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary value="Non-validating SQL parser"
+set name=pkg.description \
+    value="sqlparse is a non-validating SQL parser module.  It provides support for parsing, splitting and formatting SQL statements"
+set name=com.oracle.info.description value="the Python sqlparse module"
+set name=com.oracle.info.tpno value=$(TPNO)
+set name=info.classification \
+    value=org.opensolaris.category.2008:Development/Python
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=info.upstream value="Andi Albrecht <[email protected]>"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=org.opensolaris.arc-caseid value=PSARC/2015/539
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+#
+link path=usr/bin/sqlformat target=sqlformat-$(PYVER) mediator=python \
+    mediator-version=$(PYVER)
+file path=usr/bin/sqlformat-$(PYVER)
+file path=usr/lib/python$(PYVER)/vendor-packages/sqlparse-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
+file path=usr/lib/python$(PYVER)/vendor-packages/sqlparse-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/sqlparse-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/sqlparse-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/sqlparse/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/sqlparse/engine/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/sqlparse/engine/filter.py
+file path=usr/lib/python$(PYVER)/vendor-packages/sqlparse/engine/grouping.py
+file path=usr/lib/python$(PYVER)/vendor-packages/sqlparse/exceptions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/sqlparse/filters.py
+file path=usr/lib/python$(PYVER)/vendor-packages/sqlparse/formatter.py
+file path=usr/lib/python$(PYVER)/vendor-packages/sqlparse/functions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/sqlparse/keywords.py
+file path=usr/lib/python$(PYVER)/vendor-packages/sqlparse/lexer.py
+file path=usr/lib/python$(PYVER)/vendor-packages/sqlparse/pipeline.py
+file path=usr/lib/python$(PYVER)/vendor-packages/sqlparse/sql.py
+file path=usr/lib/python$(PYVER)/vendor-packages/sqlparse/tokens.py
+file path=usr/lib/python$(PYVER)/vendor-packages/sqlparse/utils.py
+#
+license sqlparse.license license=BSD
+
+# force a dependency on the sqlparse package
+depend type=require \
+    fmri=library/python/sqlparse@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/sqlparse/sqlparse.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,25 @@
+Copyright (c) 2009, Andi Albrecht
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of the authors nor the names of its contributors may be
+      used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--- a/components/python/stevedore/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/stevedore/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		stevedore
-COMPONENT_VERSION=	1.2.0
+COMPONENT_VERSION=	1.3.0
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:3f70db9052c26e66dac61cb73d8c6f5211373983d39872addab617c759db4b45
+    sha256:beab2b7f91966d259796392c39ed6f260b32851861561dd9f3b9be2fd0c426a5
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	https://github.com/dreamhost/stevedore
 COMPONENT_BUGDB=	python-mod/stevedore
 
-TPNO=			21742
+TPNO=			25761
 
 include $(WS_MAKE_RULES)/prep.mk
 include $(WS_MAKE_RULES)/setup.py.mk
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/stevedore/patches/01-requirements.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,20 @@
+In-house patch to remove the dependency on argparse.  Since we use
+Python 2.7 only for OpenStack, argparse is already included.  If this
+line is present, stevedore will fail to find the pip package for it,
+causing a cascade of failures to other tools.
+
+--- stevedore-1.3.0/requirements.txt.orig	2015-08-02 02:09:31.789673594 -0400
++++ stevedore-1.3.0/requirements.txt	2015-08-02 02:10:40.216924993 -0400
+@@ -3,5 +3,4 @@
+ # process, which may cause wedges in the gate later.
+ 
+ pbr>=0.6,!=0.7,<1.0
+-argparse
+ six>=1.9.0
+
+--- stevedore-1.3.0/stevedore.egg-info/requires.txt.orig	2015-08-02 17:20:18.360243112 -0400
++++ stevedore-1.3.0/stevedore.egg-info/requires.txt	2015-08-02 02:10:24.673250914 -0400
+@@ -1,3 +1,2 @@
+ pbr>=0.6,!=0.7,<1.0
+-argparse
+ six>=1.9.0
--- a/components/python/stevedore/stevedore-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/stevedore/stevedore-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,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.
 #
 
 set name=pkg.fmri \
@@ -61,7 +61,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/stevedore/hook.py
 file path=usr/lib/python$(PYVER)/vendor-packages/stevedore/named.py
 #
-license LICENSE license="Apache v2.0"
+license stevedore.license license="Apache v2.0"
 
 # force the rename with an optional dependency on the old name
 depend type=optional \
@@ -71,6 +71,12 @@
 depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
     pkg.debug.depend.path=usr/bin
 
+# force a dependency on argparse; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/argparse-$(PYV)
+
+# force a dependency on pbr; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/pbr-$(PYV)
+
 # force a dependency on setuptools; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/setuptools-$(PYV)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/stevedore/stevedore.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,212 @@
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
--- a/components/python/swiftclient/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/swiftclient/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,21 +20,21 @@
 #
 
 #
-# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		python-swiftclient
-COMPONENT_VERSION=	2.3.1
+COMPONENT_VERSION=	2.4.0
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:20a9d81dc0d948740a188a0c42e7f7fcc9c81a185bfbdf180f68580ea49309a6
+    sha256:e865553b3afc63a9952cfa30f155a604564cae31a40275fa2ce94c80d7affd4b
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	http://launchpad.net/python-swiftclient
 COMPONENT_BUGDB=	service/swift
 
-TPNO=			21736
+TPNO=			25758
 
 # depends on keystoneclient which is not Python 3 ready
 PYTHON_VERSIONS=	$(PYTHON2_VERSIONS)
--- a/components/python/taskflow/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/taskflow/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		taskflow
-COMPONENT_VERSION=	0.6.1
+COMPONENT_VERSION=	0.7.1
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:5dc4a6e62ebea2f5cebb9ca4d8b3c21b97738065a881f3235ace0c070fa3185f
+    sha256:bf1f833184c12787d09ab1b587b41d4feec631f2b9d7fc55e63ef3098e74ad5b
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	https://wiki.openstack.org/wiki/TaskFlow
 COMPONENT_BUGDB=	python-mod/taskflow
 
-TPNO=			21638
+TPNO=			25762
 
 # Depends on networkx which is not Python 3 ready.
 PYTHON_VERSIONS=	$(PYTHON2_VERSIONS)
--- a/components/python/taskflow/taskflow-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/taskflow/taskflow-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,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.
 #
 
 set name=pkg.fmri \
@@ -56,6 +56,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/engines/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/engines/action_engine/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/engines/action_engine/actions/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/engines/action_engine/actions/base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/engines/action_engine/actions/retry.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/engines/action_engine/actions/task.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/engines/action_engine/analyzer.py
@@ -70,7 +71,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/engines/base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/engines/helpers.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/engines/worker_based/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/engines/worker_based/cache.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/engines/worker_based/dispatcher.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/engines/worker_based/endpoint.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/engines/worker_based/engine.py
@@ -78,6 +78,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/engines/worker_based/protocol.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/engines/worker_based/proxy.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/engines/worker_based/server.py
+file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/engines/worker_based/types.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/engines/worker_based/worker.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/examples/alphabet_soup.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/examples/build_a_car.py
@@ -86,6 +87,8 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/examples/calculate_linear.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/examples/create_parallel_volume.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/examples/delayed_return.py
+file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/examples/distance_calculator.py
+file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/examples/echo_listener.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/examples/example_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/examples/fake_billing.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/examples/graph_flow.py
@@ -132,10 +135,10 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/jobs/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/jobs/backends/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/jobs/backends/impl_zookeeper.py
-file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/jobs/job.py
-file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/jobs/jobboard.py
+file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/jobs/base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/listeners/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/listeners/base.py
+file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/listeners/capturing.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/listeners/claims.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/listeners/logging.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/listeners/printing.py
@@ -147,7 +150,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/patterns/unordered_flow.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/persistence/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/persistence/backends/__init__.py
-file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/persistence/backends/base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/persistence/backends/impl_dir.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/persistence/backends/impl_memory.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/persistence/backends/impl_sqlalchemy.py
@@ -164,7 +166,8 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/persistence/backends/sqlalchemy/alembic/versions/84d6e888850_add_task_detail_type.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/persistence/backends/sqlalchemy/alembic/versions/README
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/persistence/backends/sqlalchemy/migration.py
-file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/persistence/backends/sqlalchemy/models.py
+file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/persistence/backends/sqlalchemy/tables.py
+file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/persistence/base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/persistence/logbook.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/retry.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/states.py
@@ -179,20 +182,23 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/types/graph.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/types/latch.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/types/notifier.py
+file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/types/periodic.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/types/table.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/types/timing.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/types/tree.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/utils/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/utils/async_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/utils/deprecation.py
+file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/utils/eventlet_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/utils/kazoo_utils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/utils/kombu_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/utils/lock_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/utils/misc.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/utils/persistence_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/utils/threading_utils.py
 file path=usr/lib/python$(PYVER)/vendor-packages/taskflow/version.py
 #
-license LICENSE license="Apache v2.0"
+license taskflow.license license="Apache v2.0"
 
 # force a group dependency on the optional eventlet; pkgdepend work is needed to
 # flush this out.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/taskflow/taskflow.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,211 @@
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+		                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/testresources/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,51 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+include ../../../make-rules/shared-macros.mk
+
+COMPONENT_NAME=		testresources
+COMPONENT_VERSION=	0.2.7
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
+COMPONENT_ARCHIVE_HASH=	\
+    sha256:ad0a117383dd463827b199eaa92829b4d6a3147fbd97459820df53bae81d7231
+COMPONENT_ARCHIVE_URL=	$(call pypi_url)
+COMPONENT_PROJECT_URL=	https://launchpad.net/testresources
+COMPONENT_BUGDB=	python-mod/testresources
+
+TPNO=			23150
+
+include $(WS_MAKE_RULES)/prep.mk
+include $(WS_MAKE_RULES)/setup.py.mk
+include $(WS_MAKE_RULES)/ips.mk
+
+ASLR_MODE = $(ASLR_NOT_APPLICABLE)
+
+# common targets
+build:		$(BUILD_NO_ARCH)
+
+install:	$(INSTALL_NO_ARCH)
+
+test:		$(NO_TESTS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/testresources/testresources-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,61 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+set name=pkg.fmri \
+    value=pkg:/library/python/testresources-$(PYV)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary \
+    value="PyUnit extension for managing expensive test resources"
+set name=pkg.description \
+    value="PyUnit extension to manage the initialization and lifetime of expensive test fixtures. For example reference databases are often only need to be constructed once but standard test isolation causes them to be constructed for every fixture, making test execution very slow."
+set name=com.oracle.info.description value="the Python testresources module"
+set name=com.oracle.info.tpno value=$(TPNO)
+set name=info.classification \
+    value=org.opensolaris.category.2008:Development/Python
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=info.upstream value="Robert Collins <[email protected]>"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=org.opensolaris.arc-caseid value=PSARC/2015/472
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+#
+file path=usr/lib/python$(PYVER)/vendor-packages/testresources-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
+file path=usr/lib/python$(PYVER)/vendor-packages/testresources-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/testresources-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/testresources-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/testresources/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testresources/tests/TestUtil.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testresources/tests/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testresources/tests/test_optimising_test_suite.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testresources/tests/test_resource_graph.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testresources/tests/test_resourced_test_case.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testresources/tests/test_test_loader.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testresources/tests/test_test_resource.py
+#
+license testresources.license license="Apache 2.0"
+
+# force a dependency on the Python runtime
+depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
+    pkg.debug.depend.path=usr/bin
+
+# force a dependency on the testresources package
+depend type=require \
+    fmri=library/python/testresources@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/testresources/testresources.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,186 @@
+The following applies to all products licensed under the Apache 2.0 License:
+
+You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")
+ 
+You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.  A copy of the license is also reproduced below.
+
+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.
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/testscenarios/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,51 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+include ../../../make-rules/shared-macros.mk
+
+COMPONENT_NAME=		testscenarios
+COMPONENT_VERSION=	0.5.0
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
+COMPONENT_ARCHIVE_HASH=	\
+    sha256:c257cb6b90ea7e6f8fef3158121d430543412c9a87df30b5dde6ec8b9b57a2b6
+COMPONENT_ARCHIVE_URL=	$(call pypi_url)
+COMPONENT_PROJECT_URL=	https://launchpad.net/testscenarios
+COMPONENT_BUGDB=	python-mod/testscenarios
+
+TPNO=			23151
+
+include $(WS_MAKE_RULES)/prep.mk
+include $(WS_MAKE_RULES)/setup.py.mk
+include $(WS_MAKE_RULES)/ips.mk
+
+ASLR_MODE = $(ASLR_NOT_APPLICABLE)
+
+# common targets
+build:		$(BUILD_NO_ARCH)
+
+install:	$(INSTALL_NO_ARCH)
+
+test:		$(NO_TESTS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/testscenarios/testscenarios-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,63 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+set name=pkg.fmri \
+    value=pkg:/library/python/testscenarios-$(PYV)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary value="Extensions to Python unittest to support scenarios"
+set name=pkg.description \
+    value="testscenarios provides clean dependency injection for Python unittest style tests. This can be used for interface testing (testing many implementations via a single test suite) or for classic dependency injection (provide tests with dependencies externally to the test code itself, allowing easy testing in different situations)."
+set name=com.oracle.info.description value="the Python testscenarios module"
+set name=com.oracle.info.tpno value=$(TPNO)
+set name=info.classification \
+    value=org.opensolaris.category.2008:Development/Python
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=info.upstream value="Robert Collins <[email protected]>"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=org.opensolaris.arc-caseid value=PSARC/2015/473
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+#
+file path=usr/lib/python$(PYVER)/vendor-packages/testscenarios-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
+file path=usr/lib/python$(PYVER)/vendor-packages/testscenarios-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/testscenarios-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/testscenarios-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/testscenarios-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
+file path=usr/lib/python$(PYVER)/vendor-packages/testscenarios-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/testscenarios-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/testscenarios/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testscenarios/scenarios.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testscenarios/testcase.py
+#
+license testscenarios.license license="Apache v2.0, BSD"
+
+# force a dependency on the Python runtime
+depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
+    pkg.debug.depend.path=usr/bin
+
+# force a dependency on the testscenarios package
+depend type=require \
+    fmri=library/python/testscenarios@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+
+# force a dependency on testtools; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/testtools-$(PYV)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/testscenarios/testscenarios.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,269 @@
+NOTE: Testscenarios is licensed under two either the Apache License, Version 2.0 or the 3-clause BSD License at the users choice. 
+
+COPYING:
+Testscenarios is licensed under two licenses, the Apache License, Version 2.0
+or the 3-clause BSD License. You may use this project under either of these
+licenses - choose the one that works best for you.
+
+We require contributions to be licensed under both licenses. The primary
+difference between them is that the Apache license takes care of potential
+issues with Patents and other intellectual property concerns that some users
+or contributors may find important.
+
+Generally every source file in Testscenarios needs a license grant under both
+these licenses. As the code is shipped as a single unit, a brief form is used:
+----
+Copyright (c) [yyyy][,yyyy]* [name or 'Testscenarios Contributors']
+
+Licensed under either the Apache License, Version 2.0 or the BSD 3-clause
+license at the users choice. A copy of both licenses are available in the
+project source as Apache-2.0 and BSD. You may not use this file except in
+compliance with one of these two licences.
+
+Unless required by applicable law or agreed to in writing, software
+distributed under these licenses is distributed on an "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+license you chose for the specific language governing permissions and
+limitations under that license.
+----
+
+Code that has been incorporated into Testscenarios from other projects will
+naturally be under its own license, and will retain that license.
+
+A known list of such code is maintained here:
+* No entries.
+
+------------------------------------------------------------
+BSD:
+
+Copyright (c) Robert Collins and Testscenarios contributors
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of Robert Collins nor the names of Subunit contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY ROBERT COLLINS AND SUBUNIT CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+------------------------------------------------------------
+
+Apache-2.0
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/testtools/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,51 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+include ../../../make-rules/shared-macros.mk
+
+COMPONENT_NAME=		testtools
+COMPONENT_VERSION=	1.8.0
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
+COMPONENT_ARCHIVE_HASH=	\
+    sha256:8afd6400fb4e75adb0b29bd09695ecb2024cd7befab4677a58c147701afadd97
+COMPONENT_ARCHIVE_URL=	$(call pypi_url)
+COMPONENT_PROJECT_URL=	https://launchpad.net/testtools
+COMPONENT_BUGDB=	python-mod/testtools
+
+TPNO=			26391
+
+include $(WS_MAKE_RULES)/prep.mk
+include $(WS_MAKE_RULES)/setup.py.mk
+include $(WS_MAKE_RULES)/ips.mk
+
+ASLR_MODE = $(ASLR_NOT_APPLICABLE)
+
+# common targets
+build:		$(BUILD_NO_ARCH)
+
+install:	$(INSTALL_NO_ARCH)
+
+test:		$(NO_TESTS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/testtools/patches/01-requirements.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,23 @@
+In-house patch to remove the dependency on unittest2. Python 2.7 
+includes unittest, which is equivalent to unittest2 for Python2.6.
+If this line is present, stevedore will fail to find the pip 
+package for it, which causes a failure.
+
+--- testtools-1.8.0/requirements.txt.orig	2015-07-27 13:16:49.747696519 -0400
++++ testtools-1.8.0/requirements.txt	2015-07-27 13:25:50.886669833 -0400
+@@ -3,5 +3,4 @@
+ # 'mimeparse' has not been uploaded by the maintainer with Python3 compat
+ # but someone kindly uploaded a fixed version as 'python-mimeparse'.
+ python-mimeparse
+-unittest2>=1.0.0
+ traceback2
+--- testtools-1.8.0/testtools.egg-info/requires.txt.orig	2015-07-27 13:17:04.427222211 -0400
++++ testtools-1.8.0/testtools.egg-info/requires.txt	2015-07-27 13:26:25.228017080 -0400
+@@ -1,5 +1,4 @@
+ pbr>=0.11
+ extras
+ python-mimeparse
+-unittest2>=1.0.0
+-traceback2
+\ No newline at end of file
++traceback2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/testtools/testtools-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,102 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+set name=pkg.fmri \
+    value=pkg:/library/python/testtools-$(PYV)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary value="Tasteful testing for Python"
+set name=pkg.description \
+    value="testtools is a set of extensions to the Python standard library's unit testing framework. These extensions have been derived from years of experience with unit testing in Python and come from many different sources. testtools also backports unittest changes from recent Pythons to Python 2.6 and 2.7."
+set name=com.oracle.info.description value="the Python testtools module"
+set name=com.oracle.info.tpno value=$(TPNO)
+set name=info.classification \
+    value=org.opensolaris.category.2008:Development/Python
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=info.upstream value="Jonathan M. Lange <[email protected]>"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=org.opensolaris.arc-caseid value=PSARC/2016/020
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+#
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/__init__.py
+$(PYTHON_2.7_ONLY)file path=usr/lib/python$(PYVER)/vendor-packages/testtools/_compat2x.py
+$(PYTHON_3.4_ONLY)file path=usr/lib/python$(PYVER)/vendor-packages/testtools/_compat3x.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/_spinner.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/assertions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/compat.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/content.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/content_type.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/deferredruntest.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/distutilscmd.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/helpers.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/matchers/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/matchers/_basic.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/matchers/_datastructures.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/matchers/_dict.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/matchers/_doctest.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/matchers/_exception.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/matchers/_filesystem.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/matchers/_higherorder.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/matchers/_impl.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/monkey.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/run.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/runtest.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/tags.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/testcase.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/testresult/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/testresult/doubles.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/testresult/real.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/testsuite.py
+file path=usr/lib/python$(PYVER)/vendor-packages/testtools/utils.py
+#
+license testtools.license license=MIT
+
+# force a dependency on the Python runtime
+depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
+    pkg.debug.depend.path=usr/bin
+
+# force a dependency on extras; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/extras-$(PYV)
+
+# force a dependency on pbr; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/pbr-$(PYV)
+
+# force a dependency on python-mimeparse; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/python-mimeparse-$(PYV)
+
+# force a dependency on the testtools package
+depend type=require \
+    fmri=library/python/testtools@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+
+# force a dependency on traceback2; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/traceback2-$(PYV)
+
+# force a dependency on unittest2; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/unittest2-$(PYV)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/testtools/testtools.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,267 @@
+LICENSE:
+
+Copyright (c) 2008-2011 Jonathan M. Lange <[email protected]> and the testtools
+authors.
+
+The testtools authors are:
+ * Canonical Ltd
+ * Twisted Matrix Labs
+ * Jonathan Lange
+ * Robert Collins
+ * Andrew Bennetts
+ * Benjamin Peterson
+ * Jamu Kakar
+ * James Westby
+ * Martin [gz]
+ * Michael Hudson-Doyle
+ * Aaron Bentley
+ * Christian Kampka
+ * Gavin Panella
+ * Martin Pool
+ * Vincent Ladeuil
+ * Nikola Đipanov
+
+and are collectively referred to as "testtools developers".
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Some code in testtools/run.py taken from Python's unittest module:
+Copyright (c) 1999-2003 Steve Purcell
+Copyright (c) 2003-2010 Python Software Foundation
+
+This module is free software, and you may redistribute it and/or modify
+it under the same terms as Python itself, so long as this copyright message
+and disclaimer are retained in their original form.
+
+IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF
+THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
+
+THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE.  THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS,
+AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
+SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+===========================================================
+
+
+Python License (Python-2.0)
+
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Python Software Foundation; All Rights Reserved
+
+Python License, Version 2 (Python-2.0)
+
+
+PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
+--------------------------------------------
+
+1. This LICENSE AGREEMENT is between the Python Software Foundation
+("PSF"), and the Individual or Organization ("Licensee") accessing and
+otherwise using this software ("Python") in source or binary form and
+its associated documentation.
+
+2. Subject to the terms and conditions of this License Agreement, PSF
+hereby grants Licensee a nonexclusive, royalty-free, world-wide
+license to reproduce, analyze, test, perform and/or display publicly,
+prepare derivative works, distribute, and otherwise use Python
+alone or in any derivative version, provided, however, that PSF's
+License Agreement and PSF's notice of copyright, i.e., "Copyright (c)
+2001, 2002, 2003, 2004, 2005, 2006 Python Software Foundation; All Rights
+Reserved" are retained in Python alone or in any derivative version
+prepared by Licensee.
+
+3. In the event Licensee prepares a derivative work that is based on
+or incorporates Python or any part thereof, and wants to make
+the derivative work available to others as provided herein, then
+Licensee hereby agrees to include in any such work a brief summary of
+the changes made to Python.
+
+4. PSF is making Python available to Licensee on an "AS IS"
+basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
+DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
+INFRINGE ANY THIRD PARTY RIGHTS.
+
+5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
+FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
+A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
+OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+6. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+7. Nothing in this License Agreement shall be deemed to create any
+relationship of agency, partnership, or joint venture between PSF and
+Licensee. This License Agreement does not grant permission to use PSF
+trademarks or trade name in a trademark sense to endorse or promote
+products or services of Licensee, or any third party.
+
+8. By copying, installing or otherwise using Python, Licensee
+agrees to be bound by the terms and conditions of this License
+Agreement.
+
+BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0
+-------------------------------------------
+
+BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1
+
+1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an
+office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the
+Individual or Organization ("Licensee") accessing and otherwise using
+this software in source or binary form and its associated
+documentation ("the Software").
+
+2. Subject to the terms and conditions of this BeOpen Python License
+Agreement, BeOpen hereby grants Licensee a non-exclusive,
+royalty-free, world-wide license to reproduce, analyze, test, perform
+and/or display publicly, prepare derivative works, distribute, and
+otherwise use the Software alone or in any derivative version,
+provided, however, that the BeOpen Python License is retained in the
+Software, alone or in any derivative version prepared by Licensee.
+
+3. BeOpen is making the Software available to Licensee on an "AS IS"
+basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND
+DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT
+INFRINGE ANY THIRD PARTY RIGHTS.
+
+4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE
+SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS
+AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY
+DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+5. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+6. This License Agreement shall be governed by and interpreted in all
+respects by the law of the State of California, excluding conflict of
+law provisions. Nothing in this License Agreement shall be deemed to
+create any relationship of agency, partnership, or joint venture
+between BeOpen and Licensee. This License Agreement does not grant
+permission to use BeOpen trademarks or trade names in a trademark
+sense to endorse or promote products or services of Licensee, or any
+third party. As an exception, the "BeOpen Python" logos available at
+http://www.pythonlabs.com/logos.html may be used according to the
+permissions granted on that web page.
+
+7. By copying, installing or otherwise using the software, Licensee
+agrees to be bound by the terms and conditions of this License
+Agreement.
+
+CNRI OPEN SOURCE LICENSE AGREEMENT (for Python 1.6b1)
+--------------------------------------------------
+Python 1.6, beta 1, is made available subject to the terms and conditions in CNRIs License Agreement. This Agreement may be located on the Internet using the following unique, persistent identifier (known as a handle): 1895.22/1011. This Agreement may also be obtained from a proxy server on the Internet using the URL:http://hdl.handle.net/1895.22/1011
+
+IMPORTANT: PLEASE READ THE FOLLOWING AGREEMENT CAREFULLY.
+
+BY CLICKING ON "ACCEPT" WHERE INDICATED BELOW, OR BY COPYING,
+INSTALLING OR OTHERWISE USING PYTHON 1.6, beta 1 SOFTWARE, YOU ARE
+DEEMED TO HAVE AGREED TO THE TERMS AND CONDITIONS OF THIS LICENSE
+AGREEMENT.
+
+1. This LICENSE AGREEMENT is between the Corporation for National
+Research Initiatives, having an office at 1895 Preston White Drive,
+Reston, VA 20191 ("CNRI"), and the Individual or Organization
+("Licensee") accessing and otherwise using Python 1.6, beta 1
+software in source or binary form and its associated documentation,
+as released at the www.python.org Internet site on August 4, 2000
+("Python 1.6b1").
+
+2. Subject to the terms and conditions of this License Agreement, CNRI
+hereby grants Licensee a non-exclusive, royalty-free, world-wide
+license to reproduce, analyze, test, perform and/or display
+publicly, prepare derivative works, distribute, and otherwise use
+Python 1.6b1 alone or in any derivative version, provided, however,
+that CNRIs License Agreement is retained in Python 1.6b1, alone or
+in any derivative version prepared by Licensee.
+
+Alternately, in lieu of CNRIs License Agreement, Licensee may
+substitute the following text (omitting the quotes): "Python 1.6,
+beta 1, is made available subject to the terms and conditions in
+CNRIs License Agreement. This Agreement may be located on the
+Internet using the following unique, persistent identifier (known
+as a handle): 1895.22/1011. This Agreement may also be obtained
+from a proxy server on the Internet using the
+URL:http://hdl.handle.net/1895.22/1011".
+
+3. In the event Licensee prepares a derivative work that is based on
+or incorporates Python 1.6b1 or any part thereof, and wants to make
+the derivative work available to the public as provided herein,
+then Licensee hereby agrees to indicate in any such work the nature
+of the modifications made to Python 1.6b1.
+
+4. CNRI is making Python 1.6b1 available to Licensee on an "AS IS"
+basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND
+DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR
+FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6b1
+WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
+
+5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE
+SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR
+LOSS AS A RESULT OF USING, MODIFYING OR DISTRIBUTING PYTHON 1.6b1,
+OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY
+THEREOF.
+
+6. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+7. This License Agreement shall be governed by and interpreted in all
+respects by the law of the State of Virginia, excluding conflict of
+law provisions. Nothing in this License Agreement shall be deemed
+to create any relationship of agency, partnership, or joint venture
+between CNRI and Licensee. This License Agreement does not grant
+permission to use CNRI trademarks or trade name in a trademark
+sense to endorse or promote products or services of Licensee, or
+any third party.
+
+8. By clicking on the "ACCEPT" button where indicated, or by copying,
+installing or otherwise using Python 1.6b1, Licensee agrees to be
+bound by the terms and conditions of this License Agreement.
+
+ACCEPT
+
+CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2
+--------------------------------------------------
+
+Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam,
+The Netherlands. All rights reserved.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Stichting Mathematisch
+Centrum or CWI not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
+FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/traceback2/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,51 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+include ../../../make-rules/shared-macros.mk
+
+COMPONENT_NAME=		traceback2
+COMPONENT_VERSION=	1.4.0
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
+COMPONENT_ARCHIVE_HASH=	\
+    sha256:05acc67a09980c2ecfedd3423f7ae0104839eccb55fc645773e1caa0951c3030
+COMPONENT_ARCHIVE_URL=	$(call pypi_url)
+COMPONENT_PROJECT_URL=	http://pypi.python.org/pypi/traceback2/
+COMPONENT_BUGDB=	python-mod/traceback2
+
+TPNO=			22938
+
+include $(WS_MAKE_RULES)/prep.mk
+include $(WS_MAKE_RULES)/setup.py.mk
+include $(WS_MAKE_RULES)/ips.mk
+
+ASLR_MODE = $(ASLR_NOT_APPLICABLE)
+
+# common targets
+build:		$(BUILD_NO_ARCH)
+
+install:	$(INSTALL_NO_ARCH)
+
+test:		$(NO_TESTS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/traceback2/traceback2-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,61 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+set name=pkg.fmri \
+    value=pkg:/library/python/traceback2-$(PYV)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary value="Backports of the traceback module"
+set name=pkg.description \
+    value="Traceback2 is a backport of traceback to older supported Pythons"
+set name=com.oracle.info.description value="the Python traceback2 module"
+set name=com.oracle.info.tpno value=$(TPNO)
+set name=info.classification \
+    value=org.opensolaris.category.2008:Development/Python
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=info.upstream value="Testing-cabal <[email protected]>"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=org.opensolaris.arc-caseid value=PSARC/2016/021
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+#
+file path=usr/lib/python$(PYVER)/vendor-packages/traceback2-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
+file path=usr/lib/python$(PYVER)/vendor-packages/traceback2-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/traceback2-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/traceback2-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/traceback2-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
+file path=usr/lib/python$(PYVER)/vendor-packages/traceback2-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/traceback2-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/traceback2/__init__.py
+#
+license traceback2.license license=PSF
+
+# force a dependency on the Python runtime
+depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
+    pkg.debug.depend.path=usr/bin
+
+# force a dependency on linecache2; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/linecache2-$(PYV)
+
+# force a dependency on the traceback2 package
+depend type=require \
+    fmri=library/python/traceback2@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/traceback2/traceback2.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,198 @@
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Python Software Foundation; All Rights
+Reserved.
+
+Python License (Python-2.0)
+Python License, Version 2 (Python-2.0)
+
+PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
+--------------------------------------------
+
+1. This LICENSE AGREEMENT is between the Python Software Foundation
+("PSF"), and the Individual or Organization ("Licensee") accessing and
+otherwise using this software ("Python") in source or binary form and
+its associated documentation.
+
+2. Subject to the terms and conditions of this License Agreement, PSF
+hereby grants Licensee a nonexclusive, royalty-free, world-wide
+license to reproduce, analyze, test, perform and/or display publicly,
+prepare derivative works, distribute, and otherwise use Python
+alone or in any derivative version, provided, however, that PSF's
+License Agreement and PSF's notice of copyright, i.e., "Copyright (c)
+2001, 2002, 2003, 2004, 2005, 2006 Python Software Foundation; All Rights
+Reserved" are retained in Python alone or in any derivative version
+prepared by Licensee.
+
+3. In the event Licensee prepares a derivative work that is based on
+or incorporates Python or any part thereof, and wants to make
+the derivative work available to others as provided herein, then
+Licensee hereby agrees to include in any such work a brief summary of
+the changes made to Python.
+
+4. PSF is making Python available to Licensee on an "AS IS"
+basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
+DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
+INFRINGE ANY THIRD PARTY RIGHTS.
+
+5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
+FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
+A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
+OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+6. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+7. Nothing in this License Agreement shall be deemed to create any
+relationship of agency, partnership, or joint venture between PSF and
+Licensee. This License Agreement does not grant permission to use PSF
+trademarks or trade name in a trademark sense to endorse or promote
+products or services of Licensee, or any third party.
+
+8. By copying, installing or otherwise using Python, Licensee
+agrees to be bound by the terms and conditions of this License
+Agreement.
+
+BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0
+-------------------------------------------
+
+BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1
+
+1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an
+office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the
+Individual or Organization ("Licensee") accessing and otherwise using
+this software in source or binary form and its associated
+documentation ("the Software").
+
+2. Subject to the terms and conditions of this BeOpen Python License
+Agreement, BeOpen hereby grants Licensee a non-exclusive,
+royalty-free, world-wide license to reproduce, analyze, test, perform
+and/or display publicly, prepare derivative works, distribute, and
+otherwise use the Software alone or in any derivative version,
+provided, however, that the BeOpen Python License is retained in the
+Software, alone or in any derivative version prepared by Licensee.
+
+3. BeOpen is making the Software available to Licensee on an "AS IS"
+basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND
+DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT
+INFRINGE ANY THIRD PARTY RIGHTS.
+
+4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE
+SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS
+AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY
+DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+5. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+6. This License Agreement shall be governed by and interpreted in all
+respects by the law of the State of California, excluding conflict of
+law provisions. Nothing in this License Agreement shall be deemed to
+create any relationship of agency, partnership, or joint venture
+between BeOpen and Licensee. This License Agreement does not grant
+permission to use BeOpen trademarks or trade names in a trademark
+sense to endorse or promote products or services of Licensee, or any
+third party. As an exception, the "BeOpen Python" logos available at
+http://www.pythonlabs.com/logos.html may be used according to the
+permissions granted on that web page.
+
+7. By copying, installing or otherwise using the software, Licensee
+agrees to be bound by the terms and conditions of this License
+Agreement.
+
+CNRI OPEN SOURCE LICENSE AGREEMENT (for Python 1.6b1)
+--------------------------------------------------
+
+IMPORTANT: PLEASE READ THE FOLLOWING AGREEMENT CAREFULLY.
+
+BY CLICKING ON "ACCEPT" WHERE INDICATED BELOW, OR BY COPYING,
+INSTALLING OR OTHERWISE USING PYTHON 1.6, beta 1 SOFTWARE, YOU ARE
+DEEMED TO HAVE AGREED TO THE TERMS AND CONDITIONS OF THIS LICENSE
+AGREEMENT.
+
+1. This LICENSE AGREEMENT is between the Corporation for National
+Research Initiatives, having an office at 1895 Preston White Drive,
+Reston, VA 20191 ("CNRI"), and the Individual or Organization
+("Licensee") accessing and otherwise using Python 1.6, beta 1
+software in source or binary form and its associated documentation,
+as released at the www.python.org Internet site on August 4, 2000
+("Python 1.6b1").
+
+2. Subject to the terms and conditions of this License Agreement, CNRI
+hereby grants Licensee a non-exclusive, royalty-free, world-wide
+license to reproduce, analyze, test, perform and/or display
+publicly, prepare derivative works, distribute, and otherwise use
+Python 1.6b1 alone or in any derivative version, provided, however,
+that CNRIs License Agreement is retained in Python 1.6b1, alone or
+in any derivative version prepared by Licensee.
+
+Alternately, in lieu of CNRIs License Agreement, Licensee may
+substitute the following text (omitting the quotes): "Python 1.6,
+beta 1, is made available subject to the terms and conditions in
+CNRIs License Agreement. This Agreement may be located on the
+Internet using the following unique, persistent identifier (known
+as a handle): 1895.22/1011. This Agreement may also be obtained
+from a proxy server on the Internet using the
+URL:http://hdl.handle.net/1895.22/1011".
+
+3. In the event Licensee prepares a derivative work that is based on
+or incorporates Python 1.6b1 or any part thereof, and wants to make
+the derivative work available to the public as provided herein,
+then Licensee hereby agrees to indicate in any such work the nature
+of the modifications made to Python 1.6b1.
+
+4. CNRI is making Python 1.6b1 available to Licensee on an "AS IS"
+basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND
+DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR
+FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6b1
+WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
+
+5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE
+SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR
+LOSS AS A RESULT OF USING, MODIFYING OR DISTRIBUTING PYTHON 1.6b1,
+OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY
+THEREOF.
+
+6. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+7. This License Agreement shall be governed by and interpreted in all
+respects by the law of the State of Virginia, excluding conflict of
+law provisions. Nothing in this License Agreement shall be deemed
+to create any relationship of agency, partnership, or joint venture
+between CNRI and Licensee. This License Agreement does not grant
+permission to use CNRI trademarks or trade name in a trademark
+sense to endorse or promote products or services of Licensee, or
+any third party.
+
+8. By clicking on the "ACCEPT" button where indicated, or by copying,
+installing or otherwise using Python 1.6b1, Licensee agrees to be
+bound by the terms and conditions of this License Agreement.
+
+ACCEPT
+
+CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2
+--------------------------------------------------
+
+Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam,
+The Netherlands. All rights reserved.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Stichting Mathematisch
+Centrum or CWI not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
+FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/trollius/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,58 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+include ../../../make-rules/shared-macros.mk
+
+COMPONENT_NAME=		trollius
+COMPONENT_VERSION=	2.0
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
+COMPONENT_ARCHIVE_HASH=	\
+    sha256:a8e0e2d3a3193be3e0f113253f41675d2679d23c491f32b37f4e0a736f32a28f
+COMPONENT_ARCHIVE_URL=	$(call pypi_url)
+COMPONENT_PROJECT_URL=	http://pypi.python.org/pypi/trollius/
+COMPONENT_BUGDB=	python-mod/trollius
+
+TPNO=			26097
+
+include $(WS_MAKE_RULES)/prep.mk
+include $(WS_MAKE_RULES)/setup.py.mk
+include $(WS_MAKE_RULES)/ips.mk
+
+ASLR_MODE = $(ASLR_NOT_APPLICABLE)
+
+#
+# The 2.7 tests pass but exit with an AttributeError: 'Nonetype" object has
+# no attribute 'items' message due to a known issue (#33) in python futures.
+#
+COMPONENT_TEST_DIR=             $(SOURCE_DIR)
+COMPONENT_TEST_ARGS=            setup.py test
+
+# common targets
+build:		$(BUILD_NO_ARCH)
+
+install:	$(INSTALL_NO_ARCH)
+
+test:		$(TEST_NO_ARCH)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/trollius/trollius-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,93 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+set name=pkg.fmri \
+    value=pkg:/library/python/trollius-$(PYV)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary \
+    value="Port of the Tulip project (asyncio module, PEP 3156) on Python 2"
+set name=pkg.description \
+    value="Trollius provides infrastructure for writing single-threaded concurrent code using coroutines, multiplexing I/O access over sockets and other resources, running network clients and servers, and other related primitives. Here is a more detailed list of the package contents: 1) a pluggable event loop with various system-specific implentations; 2) transport and protocol abstractions (similar to thos in Twisted); 3) concrete support for TCP, UDP, SSL, subprocess pipes, delayed calls, and others (some may be system-dependent); 4) a ``Future`` class that mimics the one in the ``concurrent.futures`` module, but adapted for use with the event loop; 5) coroutines and tasks based on generators (``yield``), to thelp write concurrent code in a sequential fashion; 6) cancellation support for ``Future``\s and coroutines; 7) synchronization primitives for use between coroutines in a single thread, mimicking those in the ``threading`` module; 8) an interface for passing work off to a theadpool, for times when you absolutely, positively have to use a library that makes blocking I/O calls."
+set name=com.oracle.info.description \
+    value="Port of the Tulip Project on Python 2"
+set name=com.oracle.info.tpno value=$(TPNO)
+set name=info.classification \
+    value=org.opensolaris.category.2008:Development/Python
+set name=info.source-url value="Victor Stinner <[email protected]>"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=org.opensolaris.arc-caseid value=PSARC/2015/474
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+#
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
+$(PYTHON_2.7_ONLY)file path=usr/lib/python$(PYVER)/vendor-packages/trollius-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/base_events.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/base_subprocess.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/compat.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/constants.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/coroutines.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/events.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/executor.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/futures.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/locks.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/log.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/proactor_events.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/protocols.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/py27_weakrefset.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/py33_exceptions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/py33_winapi.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/py3_ssl.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/queues.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/selector_events.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/selectors.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/sslproto.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/streams.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/subprocess.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/tasks.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/test_support.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/test_utils.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/time_monotonic.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/transports.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/unix_events.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/windows_events.py
+file path=usr/lib/python$(PYVER)/vendor-packages/trollius/windows_utils.py
+#
+license COPYING license="Apache 2.0"
+
+# force a dependency on futures; pkgdepend work is needed to flush this out.
+depend type=group fmri=library/python/futures-$(PYV)
+
+# force a dependency on the Python runtime
+depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
+    pkg.debug.depend.path=usr/bin
+
+# force a dependency on ordereddict; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/ordereddict-$(PYV)
+
+# force a dependency on the trollius package
+depend type=require \
+    fmri=library/python/trollius@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
--- a/components/python/troveclient/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/troveclient/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,22 @@
 #
 
 #
-# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		python-troveclient
-COMPONENT_VERSION=	1.0.8
+COMPONENT_VERSION=	1.0.9
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:613adcd3aac54b57f3347b21d36bf22e4092170e434535e91aadb2e46a67536d
+    sha256:ed9fad408c249a37e779a305cadb5cdecc656891eed27bc34b9d99f425a3fd69
 COMPONENT_ARCHIVE_URL=	$(call pypi_url)
 COMPONENT_PROJECT_URL=	http://launchpad.net/python-troveclient
 COMPONENT_BUGDB=	service/trove
 
-TPNO=			21737
+TPNO=			25759
 
 # Depends on keystoneclient which is not Python 3 ready.
 PYTHON_VERSIONS=	$(PYTHON2_VERSIONS)
--- a/components/python/troveclient/troveclient-PYVER.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/python/troveclient/troveclient-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -20,7 +20,7 @@
 #
 
 #
-# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
 #
 
 set name=pkg.fmri \
@@ -50,9 +50,11 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/python_troveclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_troveclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/entry_points.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_troveclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/python_troveclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/pbr.json
 file path=usr/lib/python$(PYVER)/vendor-packages/python_troveclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/requires.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/python_troveclient-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
 file path=usr/lib/python$(PYVER)/vendor-packages/troveclient/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/troveclient/auth_plugin.py
 file path=usr/lib/python$(PYVER)/vendor-packages/troveclient/base.py
 file path=usr/lib/python$(PYVER)/vendor-packages/troveclient/client.py
 file path=usr/lib/python$(PYVER)/vendor-packages/troveclient/common.py
@@ -68,6 +70,7 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/troveclient/compat/versions.py
 file path=usr/lib/python$(PYVER)/vendor-packages/troveclient/exceptions.py
 file path=usr/lib/python$(PYVER)/vendor-packages/troveclient/extension.py
+file path=usr/lib/python$(PYVER)/vendor-packages/troveclient/i18n.py
 file path=usr/lib/python$(PYVER)/vendor-packages/troveclient/openstack/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/troveclient/openstack/common/__init__.py
 file path=usr/lib/python$(PYVER)/vendor-packages/troveclient/openstack/common/apiclient/__init__.py
@@ -123,6 +126,9 @@
 # out.
 depend type=require fmri=library/python/keystoneclient-$(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 pbr; pkgdepend work is needed to flush this out.
 depend type=require fmri=library/python/pbr-$(PYV)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/urllib3/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,52 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+include ../../../make-rules/shared-macros.mk
+
+COMPONENT_NAME=		urllib3
+COMPONENT_VERSION=	1.10.4
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
+COMPONENT_ARCHIVE_HASH=	\
+    sha256:52131e6a561466f1206e1a648d9a73dda2a804d0f70e83782bd88494542ded09
+COMPONENT_ARCHIVE_URL=	$(call pypi_url)
+COMPONENT_PROJECT_URL=	http://pypi.python.org/pypi/urllib3/
+COMPONENT_BUGDB=	python-mod/urllib3
+
+TPNO=			23153
+
+include $(WS_MAKE_RULES)/prep.mk
+include $(WS_MAKE_RULES)/setup.py.mk
+include $(WS_MAKE_RULES)/ips.mk
+
+ASLR_MODE = $(ASLR_NOT_APPLICABLE)
+
+# common targets
+build:		$(BUILD_NO_ARCH)
+
+install:	$(INSTALL_NO_ARCH)
+
+# Tests require Tornado 4.1
+test:		$(NO_TESTS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/urllib3/patches/remove_bundled_components.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,102 @@
+In-house patch to remove the imports of local copies of six and ordered_dict.
+
+--- urllib3-1.10.4/urllib3/_collections.py.orig     2015-05-08 13:09:35.593680366 -0600
++++ urllib3-1.10.4/urllib3/_collections.py     2015-05-08 13:10:02.486402310 -0600
+@@ -10,11 +10,8 @@ except ImportError:  # Platform-specific
+             pass
+
+
+-try:  # Python 2.7+
+-    from collections import OrderedDict
+-except ImportError:
+-    from .packages.ordered_dict import OrderedDict
+-from .packages.six import iterkeys, itervalues, PY3
++from collections import OrderedDict
++from six import iterkeys, itervalues, PY3
+
+
+ __all__ = ['RecentlyUsedContainer', 'HTTPHeaderDict']
+
+--- urllib3-1.10.4/urllib3/connection.py.orig   2015-05-08 13:10:42.386855243 -0600
++++ urllib3-1.10.4/urllib3/connection.py       2015-05-08 13:11:00.210452150 -0600
+@@ -3,7 +3,7 @@ import sys
+ import socket
+ from socket import timeout as SocketTimeout
+ import warnings
+-from .packages import six
++import six
+
+ try:  # Python 3
+     from http.client import HTTPConnection as _HTTPConnection, HTTPException
+
+--- urllib3-1.10.4/urllib3/connectionpool.py.orig       2015-05-08 13:12:22.805384141 -0600
++++ urllib3-1.10.4/urllib3/connectionpool.py   2015-05-08 13:12:36.558475524 -0600
+@@ -27,7 +27,7 @@ from .exceptions import (
+     InsecureRequestWarning,
+ )
+ from .packages.ssl_match_hostname import CertificateError
+-from .packages import six
++import six
+ from .connection import (
+     port_by_scheme,
+     DummyConnection,
+
+--- urllib3-1.10.4/urllib3/fields.py.orig       2015-05-08 13:17:35.832547496 -0600
++++ urllib3-1.10.4/urllib3/fields.py   2015-05-08 13:17:46.167925955 -0600
+@@ -1,7 +1,7 @@
+ import email.utils
+ import mimetypes
+
+-from .packages import six
++import six
+
+
+ def guess_content_type(filename, default='application/octet-stream'):
+
+--- urllib3-1.10.4/urllib3/filepost.py.orig 2015-05-08 13:14:01.703344284 -0600
++++ urllib3-1.10.4/urllib3/filepost.py 2015-05-08 13:14:16.319642917 -0600
+@@ -3,8 +3,8 @@ import codecs
+ from uuid import uuid4
+ from io import BytesIO
+
+-from .packages import six
+-from .packages.six import b
++import six
++from six import b
+ from .fields import RequestField
+
+ writer = codecs.lookup('utf-8')[3]
+
+--- urllib3-1.10.4/urllib3/response.py.orig 2015-05-08 13:14:46.148251904 -0600
++++ urllib3-1.10.4/urllib3/response.py 2015-05-08 13:14:58.056078256 -0600
+@@ -10,7 +10,7 @@ from ._collections import HTTPHeaderDict
+ from .exceptions import (
+     ProtocolError, DecodeError, ReadTimeoutError, ResponseNotChunked
+ )
+-from .packages.six import string_types as basestring, binary_type, PY3
++from six import string_types as basestring, binary_type, PY3
+ from .connection import HTTPException, BaseSSLError
+ from .util.response import is_fp_closed
+
+--- urllib3-1.10.4/urllib3/util/request.py.orig  2015-05-08 13:15:36.877580798 -0600
++++ urllib3-1.10.4/urllib3/util/request.py  2015-05-08 13:15:43.538499579 -0600
+@@ -1,6 +1,6 @@
+ from base64 import b64encode
+
+-from ..packages.six import b
++from six import b
+
+ ACCEPT_ENCODING = 'gzip,deflate'
+
+
+--- urllib3-1.10.4/urllib3/util/retry.py.orig  2015-05-08 13:16:14.384622856 -0600
++++ urllib3-1.10.4/urllib3/util/retry.py    2015-05-08 13:16:22.531096314 -0600
+@@ -8,7 +8,7 @@ from ..exceptions import (
+     ReadTimeoutError,
+     ResponseError,
+ )
+-from ..packages import six
++import six
+
+
+ log = logging.getLogger(__name__)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/urllib3/urllib3-PYVER.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,83 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+
+set name=pkg.fmri \
+    value=pkg:/library/python/urllib3-$(PYV)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary \
+    value="HTTP library with thread-safe connection pooling, file post, and more."
+set name=pkg.description \
+    value="An HTTP library with thread-safe connection pooling, file post, and more."
+set name=com.oracle.info.description value="the Python urllib3 module"
+set name=com.oracle.info.tpno value=$(TPNO)
+set name=info.classification \
+    value=org.opensolaris.category.2008:Development/Python
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=info.upstream value="Andrey Petrov <[email protected]>"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=org.opensolaris.arc-caseid value=PSARC/2015/475
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+#
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3/_collections.py
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3/connection.py
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3/connectionpool.py
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3/contrib/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3/contrib/ntlmpool.py
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3/contrib/pyopenssl.py
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3/exceptions.py
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3/fields.py
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3/filepost.py
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3/packages/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3/packages/ssl_match_hostname/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3/packages/ssl_match_hostname/_implementation.py
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3/poolmanager.py
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3/request.py
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3/response.py
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3/util/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3/util/connection.py
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3/util/request.py
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3/util/response.py
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3/util/retry.py
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3/util/ssl_.py
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3/util/timeout.py
+file path=usr/lib/python$(PYVER)/vendor-packages/urllib3/util/url.py
+#
+license urllib3.license license=MIT
+
+# force a dependency on the Python runtime
+depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
+    pkg.debug.depend.path=usr/bin
+
+# force a dependency on six; pkgdepend work is needed to flush this out.
+depend type=require fmri=library/python/six-$(PYV)
+
+# force a dependency on the urllib3 package
+depend type=require \
+    fmri=library/python/urllib3@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/urllib3/urllib3.license	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,138 @@
+
+Copyright 2008-2014 Andrey Petrov and contributors (see CONTRIBUTORS.txt)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this
+software and associated documentation files (the "Software"), to deal in the Software
+without restriction, including without limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
+to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+------------------------------------------------------------
+
+dummyserver/proxy.py
+
+#
+# Copyright (C) 2012 Senko Rasic 
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+------------------------------------------------------------
+
+urllib3/packages/six.py
+
+#Copyright (c) 2010-2011 Benjamin Peterson
+
+#Permission is hereby granted, free of charge, to any person obtaining a copy of
+#this software and associated documentation files (the "Software"), to deal in
+#the Software without restriction, including without limitation the rights to
+#use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+#the Software, and to permit persons to whom the Software is furnished to do so,
+#subject to the following conditions:
+
+#The above copyright notice and this permission notice shall be included in all
+#copies or substantial portions of the Software.
+
+#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+#FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+#COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+#IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+#CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+8:#use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+15:#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+------------------------------------------------------------
+
+urllib3/packages/ordered_dict.py:
+Copyright 2009 Raymond Hettinger, released under the MIT License.
+
+This is the MIT license: http://www.opensource.org/licenses/mit-license.php
+
+The MIT License (MIT)
+
+Copyright (c) 
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+------------------------------------------------------------
+
+urllib3/packages/ssl_match_hostname/_implementation.py
+
+========================================
+PSF LICENSE AGREEMENT FOR PYTHON 3.3.3
+========================================
+
+1.  This LICENSE AGREEMENT is between the Python Software Foundation (“PSF”),
+    and the Individual or Organization (“Licensee”) accessing and otherwise
+    using Python 3.3.3 software in source or binary form and its associated
+    documentation.
+2.  Subject to the terms and conditions of this License Agreement, PSF hereby
+    grants Licensee a nonexclusive, royalty-free, world-wide license to
+    reproduce, analyze, test, perform and/or display publicly, prepare
+    derivative works, distribute, and otherwise use Python 3.3.3 alone or in
+    any derivative version, provided, however, that PSF’s License Agreement and
+    PSF’s notice of copyright, i.e., “Copyright © 2001-2013 Python Software
+    Foundation; All Rights Reserved” are retained in Python 3.3.3 alone or in
+    any derivative version prepared by Licensee.
+3.  In the event Licensee prepares a derivative work that is based on or
+    incorporates Python 3.3.3 or any part thereof, and wants to make the
+    derivative work available to others as provided herein, then Licensee
+    hereby agrees to include in any such work a brief summary of the changes
+    made to Python 3.3.3.
+4.  PSF is making Python 3.3.3 available to Licensee on an “AS IS” basis. PSF
+    MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF
+    EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION
+    OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR
+    THAT THE USE OF PYTHON 3.3.3 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
+5.  PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON 3.3.3 FOR
+    ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF
+    MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 3.3.3, OR ANY DERIVATIVE
+    THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+6.  This License Agreement will automatically terminate upon a material breach
+    of its terms and conditions.
+7.  Nothing in this License Agreement shall be deemed to create any
+    relationship of agency, partnership, or joint venture between PSF and
+    Licensee. This License Agreement does not grant permission to use PSF
+    trademarks or trade name in a trademark sense to endorse or promote
+    products or services of Licensee, or any third party.
+8.  By copying, installing or otherwise using Python 3.3.3, Licensee agrees to
+    be bound by the terms and conditions of this License Agreement.
+
--- a/components/rabbitmq/Makefile	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/rabbitmq/Makefile	Fri Feb 05 17:54:17 2016 -0500
@@ -20,22 +20,24 @@
 #
 
 #
-# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../make-rules/shared-macros.mk
 
+PATH=/usr/gnu/bin:/usr/bin:/usr/sbin
+
 COMPONENT_NAME=		rabbitmq-server
-COMPONENT_VERSION=	3.1.3
+COMPONENT_VERSION=	3.5.6
 COMPONENT_PROJECT_URL=	http://www.rabbitmq.com/
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:ebb8b0dba8ef82e5523194072f465f2abe451783e09255bf1474c560667a67a5
+    sha256:24be1433234112db391e0c5ef32bfb2ca111e51b2e57998cc0f3d97ba361671f
 COMPONENT_ARCHIVE_URL=	$(COMPONENT_PROJECT_URL)/releases/$(COMPONENT_NAME)/v$(COMPONENT_VERSION)/$(COMPONENT_ARCHIVE)
 COMPONENT_BUGDB=	service/rabbitmq
 
-TPNO=			14503
+TPNO=			25764
 
 include $(WS_MAKE_RULES)/prep.mk
 include $(WS_MAKE_RULES)/justmake.mk
@@ -47,6 +49,10 @@
 
 PKG_PROTO_DIRS += $(BUILD_DIR)/$(MACH32)
 
+COMPONENT_INSTALL_ENV +=	TARGET_DIR=$(PROTO_DIR)
+COMPONENT_INSTALL_ENV +=	SBIN_DIR=$(PROTO_DIR)/usr/sbin
+COMPONENT_INSTALL_ENV +=	MAN_DIR=$(PROTO_DIR)/usr/share/man
+
 # We delegate the running of the tests to a script because it's easier to find
 # and use unique free ports in a single process, and it's easier to make sure
 # that we don't leave any servers running if the tests themselves fail.
@@ -57,8 +63,7 @@
 # common targets
 build:		$(BUILD_32)
 
-# The install target in the rabbitmq makefile isn't useful to us.
-install:
+install:	$(INSTALL_32)
 
 test:		$(TEST_32)
 
@@ -68,4 +73,5 @@
 
 
 REQUIRED_PACKAGES += runtime/erlang
+REQUIRED_PACKAGES += shell/bash
 REQUIRED_PACKAGES += shell/ksh93
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/rabbitmq/files/rabbitmq-env.conf	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,2 @@
+# Increase soft limit on file descriptors for RabbitMQ
+ulimit -n 8192
--- a/components/rabbitmq/files/rabbitmq-env.conf.5	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-'\" t
-.\"     Title: rabbitmq-env.conf
-.\"    Author: The RabbitMQ Team <[email protected]>
-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\"      Date: 05/10/2013
-.\"    Manual: RabbitMQ Server
-.\"    Source: RabbitMQ Server
-.\"  Language: English
-.\"
-.TH "RABBITMQ\-ENV\&.CONF" "5" "05/10/2013" "RabbitMQ Server" "RabbitMQ Server"
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-rabbitmq-env.conf \- default settings for RabbitMQ AMQP server
-.SH "DESCRIPTION"
-.PP
-
-/etc/rabbitmq/rabbitmq\-env\&.conf
-contains variable settings that override the defaults built in to the RabbitMQ startup scripts\&.
-.PP
-The file is interpreted by the system shell, and so should consist of a sequence of shell environment variable definitions\&. Normal shell syntax is permitted (since the file is sourced using the shell "\&." operator), including line comments starting with "#"\&.
-.PP
-In order of preference, the startup scripts get their values from the environment, from
-/etc/rabbitmq/rabbitmq\-env\&.conf
-and finally from the built\-in default values\&. For example, for the
-\fBRABBITMQ_NODENAME\fR
-setting,
-.PP
-
-\fBRABBITMQ_NODENAME\fR
-.PP
-from the environment is checked first\&. If it is absent or equal to the empty string, then
-.PP
-
-\fBNODENAME\fR
-.PP
-from
-/etc/rabbitmq/rabbitmq\-env\&.conf
-is checked\&. If it is also absent or set equal to the empty string then the default value from the startup script is used\&.
-.PP
-The variable names in /etc/rabbitmq/rabbitmq\-env\&.conf are always equal to the environment variable names, with the
-\fBRABBITMQ_\fR
-prefix removed:
-\fBRABBITMQ_NODE_PORT\fR
-from the environment becomes
-\fBNODE_PORT\fR
-in the
-/etc/rabbitmq/rabbitmq\-env\&.conf
-file, etc\&.
-.sp
-.fi
-.SH "SEE ALSO"
-.PP
-
-\fBrabbitmq-server\fR(1)
-\fBrabbitmqctl\fR(1)
-.SH "EXAMPLES"
-.sp
-.nf
-      \fB
-# I am a complete /etc/rabbitmq/rabbitmq\-env\&.conf file\&.
-# Comment lines start with a hash character\&.
-# This is a /bin/sh script file \- use ordinary envt var syntax
-NODENAME=hare
-        \fR
-    
-.fi
-.PP
-This is an example of a complete
-/etc/rabbitmq/rabbitmq\-env\&.conf
-file that overrides the default Erlang node name from "rabbit" to "hare"\&.
-.SH "AUTHOR"
-.PP
-\fBThe RabbitMQ Team <\fR\fB\fBinfo@rabbitmq\&.com\fR\fR\fB>\fR
--- a/components/rabbitmq/files/rabbitmq-plugins.1	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-'\" t
-.\"     Title: rabbitmq-plugins
-.\"    Author: The RabbitMQ Team <[email protected]>
-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\"      Date: 05/10/2013
-.\"    Manual: RabbitMQ Service
-.\"    Source: RabbitMQ Server
-.\"  Language: English
-.\"
-.TH "RABBITMQ\-PLUGINS" "1" "05/10/2013" "RabbitMQ Server" "RabbitMQ Service"
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-rabbitmq-plugins \- command line tool for managing RabbitMQ broker plugins
-.SH "SYNOPSIS"
-.HP \w'\fBrabbitmq\-plugins\fR\ 'u
-\fBrabbitmq\-plugins\fR {\fIcommand\fR} [\fIcommand\ options\fR...]
-.SH "DESCRIPTION"
-.PP
-
-\fBrabbitmq\-plugins\fR
-is a command line tool for managing RabbitMQ broker plugins\&. It allows one to enable, disable and browse plugins\&. It must be run by a user with write permissions to the RabbitMQ configuration directory\&.
-.PP
-Some plugins depend on others to work correctly\&.
-\fBrabbitmq\-plugins\fR
-traverses these dependencies and enables all required plugins\&. Plugins listed on the
-\fBrabbitmq\-plugins\fR
-command line are marked as explicitly enabled; dependent plugins are marked as implicitly enabled\&. Implicitly enabled plugins are automatically disabled again when they are no longer required\&.
-.SH "COMMANDS"
-.PP
-\fBlist\fR [\-v] [\-m] [\-E] [\-e] [\fIpattern\fR]
-.RS 4
-.PP
-\-v
-.RS 4
-Show all plugin details (verbose)\&.
-.RE
-.PP
-\-m
-.RS 4
-Show only plugin names (minimal)\&.
-.RE
-.PP
-\-E
-.RS 4
-Show only explicitly enabled plugins\&.
-.RE
-.PP
-\-e
-.RS 4
-Show only explicitly or implicitly enabled plugins\&.
-.RE
-.PP
-pattern
-.RS 4
-Pattern to filter the plugin names by\&.
-.RE
-.sp
-Lists all plugins, their versions, dependencies and descriptions\&. Each plugin is prefixed with a status indicator \- [ ] to indicate that the plugin is not enabled, [E] to indicate that it is explicitly enabled, [e] to indicate that it is implicitly enabled, and [!] to indicate that it is enabled but missing and thus not operational\&.
-.sp
-If the optional pattern is given, only plugins whose name matches
-\fBpattern\fR
-are shown\&.
-.RE
-.PP
-\fBenable\fR {\fIplugin\fR \&.\&.\&.}
-.RS 4
-.PP
-plugin
-.RS 4
-One or more plugins to enable\&.
-.RE
-.sp
-Enables the specified plugins and all their dependencies\&.
-.RE
-.PP
-\fBdisable\fR {\fIplugin\fR \&.\&.\&.}
-.RS 4
-.PP
-plugin
-.RS 4
-One or more plugins to disable\&.
-.RE
-.sp
-Disables the specified plugins and all plugins that depend on them\&.
-.RE
-.SH "EXAMPLES"
-.PP
-\fBrabbitmq\-plugins list\fR
-.RS 4
-This command lists all plugins, on one line each\&.
-.RE
-.PP
-\fBrabbitmq\-plugins list \-v \fR
-.RS 4
-This command lists all plugins\&.
-.RE
-.PP
-\fBrabbitmq\-plugins list \-v management\fR
-.RS 4
-This command lists all plugins whose name contains "management"\&.
-.RE
-.PP
-\fBrabbitmq\-plugins list \-e rabbit\fR
-.RS 4
-This command lists all implicitly or explicitly enabled RabbitMQ plugins\&.
-.RE
-.PP
-\fBrabbitmq\-plugins enable rabbitmq_shovel rabbitmq_management\fR
-.RS 4
-This command enables the
-\fBshovel\fR
-and
-\fBmanagement\fR
-plugins and all their dependencies\&.
-.RE
-.PP
-\fBrabbitmq\-plugins disable amqp_client\fR
-.RS 4
-This command disables
-\fBamqp_client\fR
-and all plugins that depend on it\&.
-.RE
-.SH "AUTHOR"
-.PP
-\fBThe RabbitMQ Team <\fR\fB\fBinfo@rabbitmq\&.com\fR\fR\fB>\fR
--- a/components/rabbitmq/files/rabbitmq-server.1	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-'\" t
-.\"     Title: rabbitmq-server
-.\"    Author: The RabbitMQ Team <[email protected]>
-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\"      Date: 05/10/2013
-.\"    Manual: RabbitMQ Server
-.\"    Source: RabbitMQ Server
-.\"  Language: English
-.\"
-.TH "RABBITMQ\-SERVER" "1" "05/10/2013" "RabbitMQ Server" "RabbitMQ Server"
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-rabbitmq-server \- start RabbitMQ AMQP server
-.SH "SYNOPSIS"
-.HP \w'\fBrabbitmq\-server\fR\ 'u
-\fBrabbitmq\-server\fR [\-detached]
-.SH "DESCRIPTION"
-.PP
-RabbitMQ is an implementation of AMQP, the emerging standard for high performance enterprise messaging\&. The RabbitMQ server is a robust and scalable implementation of an AMQP broker\&.
-.PP
-Running rabbitmq\-server in the foreground displays a banner message, and reports on progress in the startup sequence, concluding with the message "broker running", indicating that the RabbitMQ broker has been started successfully\&. To shut down the server, just terminate the process or use rabbitmqctl(1)\&.
-.SH "ENVIRONMENT"
-.PP
-RABBITMQ_MNESIA_BASE
-.RS 4
-Defaults to
-/var/lib/rabbitmq/mnesia\&. Set this to the directory where Mnesia database files should be placed\&.
-.RE
-.PP
-RABBITMQ_LOG_BASE
-.RS 4
-Defaults to
-/var/log/rabbitmq\&. Log files generated by the server will be placed in this directory\&.
-.RE
-.PP
-RABBITMQ_NODENAME
-.RS 4
-Defaults to rabbit\&. This can be useful if you want to run more than one node per machine \-
-\fBRABBITMQ_NODENAME\fR
-should be unique per erlang\-node\-and\-machine combination\&. See the
-\fBclustering on a single machine guide\fR\&\s-2\u[1]\d\s+2
-for details\&.
-.RE
-.PP
-RABBITMQ_NODE_IP_ADDRESS
-.RS 4
-By default RabbitMQ will bind to all interfaces, on IPv4 and IPv6 if available\&. Set this if you only want to bind to one network interface or address family\&.
-.RE
-.PP
-RABBITMQ_NODE_PORT
-.RS 4
-Defaults to 5672\&.
-.RE
-.SH "OPTIONS"
-.PP
-\-detached
-.RS 4
-Start the server process in the background\&. Note that this will cause the pid not to be written to the pid file\&.
-.RE
-.SH "SEE ALSO"
-.PP
-
-\fBrabbitmq-env.conf\fR(5)
-\fBrabbitmqctl\fR(1)
-.SH "EXAMPLES"
-.PP
-\fBrabbitmq\-server \-detached\fR
-.RS 4
-Runs RabbitMQ AMQP server in the background\&.
-.RE
-.SH "AUTHOR"
-.PP
-\fBThe RabbitMQ Team <\fR\fB\fBinfo@rabbitmq\&.com\fR\fR\fB>\fR
-.SH "NOTES"
-.IP " 1." 4
-clustering on a single machine guide
-.RS 4
-\%http://www.rabbitmq.com/clustering.html#single-machine
-.RE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/rabbitmq/files/rabbitmq.config	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,7 @@
+% FHC read buffer has been disabled by default in later versions of
+% RabbitMQ. 
+[   
+  {rabbit, [
+    {fhc_read_buffering, false}
+  ]}  
+].
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/rabbitmq/files/rabbitmq.xml	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,90 @@
+<?xml version="1.0"?>
+<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
+<!--
+
+ Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+
+ CDDL HEADER START
+
+ The contents of this file are subject to the terms of the
+ Common Development and Distribution License (the "License").
+ You may not use this file except in compliance with the License.
+
+ You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ or http://www.opensolaris.org/os/licensing.
+ See the License for the specific language governing permissions
+ and limitations under the License.
+
+ When distributing Covered Code, include this CDDL HEADER in each
+ file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ If applicable, add the following below this CDDL HEADER, with the
+ fields enclosed by brackets "[]" replaced with your own identifying
+ information: Portions Copyright [yyyy] [name of copyright owner]
+
+ CDDL HEADER END
+
+ 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='rabbitmq'>
+
+<service
+	name='application/rabbitmq'
+	type='service'
+	version='1'>
+
+	<!-- Each node probably should be its own instance -->
+	<create_default_instance enabled='false' />
+
+	<dependency
+		name='fs'
+		grouping='require_any'
+		restart_on='none'
+		type='service'>
+		<service_fmri value='svc:/system/filesystem/minimal' />
+	</dependency>
+
+	<dependency name='network'
+		grouping='require_any'
+		restart_on='error'
+		type='service'>
+		<service_fmri value='svc:/milestone/network' />
+	</dependency>
+
+	<method_context>
+		<method_credential user='rabbitmq'
+			privileges='basic,{zone}:/system/volatile/rabbitmq' />
+	</method_context>
+
+	<exec_method
+		type='method'
+		name='start'
+		exec='/lib/svc/method/rabbitmq %m'
+		timeout_seconds='30'>
+	</exec_method>
+
+	<exec_method
+		type='method'
+		name='stop'
+		exec='/lib/svc/method/rabbitmq %m'
+		timeout_seconds='30'>
+	</exec_method>
+
+	<stability value='Unstable' />
+
+	<template>
+		<common_name>
+			<loctext xml:lang='C'>
+			RabbitMQ: an AMQP message broker
+			</loctext>
+		</common_name>
+		<documentation>
+			<manpage title='rabbitmq-server' section='1' />
+		</documentation>
+	</template>
+</service>
+
+</service_bundle>
--- a/components/rabbitmq/files/rabbitmqctl.1	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1351 +0,0 @@
-'\" t
-.\"     Title: rabbitmqctl
-.\"    Author: The RabbitMQ Team <[email protected]>
-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\"      Date: 05/10/2013
-.\"    Manual: RabbitMQ Service
-.\"    Source: RabbitMQ Server
-.\"  Language: English
-.\"
-.TH "RABBITMQCTL" "1" "05/10/2013" "RabbitMQ Server" "RabbitMQ Service"
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-rabbitmqctl \- command line tool for managing a RabbitMQ broker
-.SH "SYNOPSIS"
-.HP \w'\fBrabbitmqctl\fR\ 'u
-\fBrabbitmqctl\fR [\-n\ \fInode\fR] [\-q] {\fIcommand\fR} [\fIcommand\ options\fR...]
-.SH "DESCRIPTION"
-.PP
-RabbitMQ is an implementation of AMQP, the emerging standard for high performance enterprise messaging\&. The RabbitMQ server is a robust and scalable implementation of an AMQP broker\&.
-.PP
-
-\fBrabbitmqctl\fR
-is a command line tool for managing a RabbitMQ broker\&. It performs all actions by connecting to one of the broker\'s nodes\&.
-.PP
-Diagnostic information is displayed if the broker was not running, could not be reached, or rejected the connection due to mismatching Erlang cookies\&.
-.SH "OPTIONS"
-.PP
-[\-n \fInode\fR]
-.RS 4
-Default node is "rabbit@server", where server is the local host\&. On a host named "server\&.example\&.com", the node name of the RabbitMQ Erlang node will usually be rabbit@server (unless RABBITMQ_NODENAME has been set to some non\-default value at broker startup time)\&. The output of
-\fBhostname \-s\fR
-is usually the correct suffix to use after the "@" sign\&. See rabbitmq\-server(1) for details of configuring the RabbitMQ broker\&.
-.RE
-.PP
-[\-q]
-.RS 4
-Quiet output mode is selected with the "\-q" flag\&. Informational messages are suppressed when quiet mode is in effect\&.
-.RE
-.SH "COMMANDS"
-.SS "Application and Cluster Management"
-.PP
-\fBstop\fR [\fIpid_file\fR]
-.RS 4
-Stops the Erlang node on which RabbitMQ is running\&. To restart the node follow the instructions for
-Running the Server
-in the
-\fBinstallation guide\fR\&\s-2\u[1]\d\s+2\&.
-.sp
-If a
-\fBpid_file\fR
-is specified, also waits for the process specified there to terminate\&. See the description of the
-\fBwait\fR
-command below for details on this file\&.
-.RE
-.PP
-\fBstop_app\fR
-.RS 4
-Stops the RabbitMQ application, leaving the Erlang node running\&.
-.sp
-This command is typically run prior to performing other management actions that require the RabbitMQ application to be stopped, e\&.g\&.
-\fBreset\fR\&.
-.RE
-.PP
-\fBstart_app\fR
-.RS 4
-Starts the RabbitMQ application\&.
-.sp
-This command is typically run after performing other management actions that required the RabbitMQ application to be stopped, e\&.g\&.
-\fBreset\fR\&.
-.RE
-.PP
-\fBwait\fR {\fIpid_file\fR}
-.RS 4
-Wait for the RabbitMQ application to start\&.
-.sp
-This command will wait for the RabbitMQ application to start at the node\&. It will wait for the pid file to be created, then for a process with a pid specified in the pid file to start, and then for the RabbitMQ application to start in that process\&. It will fail if the process terminates without starting the RabbitMQ application\&.
-.sp
-A suitable pid file is created by the
-\fBrabbitmq\-server\fR
-script\&. By default this is located in the Mnesia directory\&. Modify the
-\fBRABBITMQ_PID_FILE\fR
-environment variable to change the location\&.
-.RE
-.PP
-\fBreset\fR
-.RS 4
-Return a RabbitMQ node to its virgin state\&.
-.sp
-Removes the node from any cluster it belongs to, removes all data from the management database, such as configured users and vhosts, and deletes all persistent messages\&.
-.sp
-For
-\fBreset\fR
-and
-\fBforce_reset\fR
-to succeed the RabbitMQ application must have been stopped, e\&.g\&. with
-\fBstop_app\fR\&.
-.RE
-.PP
-\fBforce_reset\fR
-.RS 4
-Forcefully return a RabbitMQ node to its virgin state\&.
-.sp
-The
-\fBforce_reset\fR
-command differs from
-\fBreset\fR
-in that it resets the node unconditionally, regardless of the current management database state and cluster configuration\&. It should only be used as a last resort if the database or cluster configuration has been corrupted\&.
-.sp
-For
-\fBreset\fR
-and
-\fBforce_reset\fR
-to succeed the RabbitMQ application must have been stopped, e\&.g\&. with
-\fBstop_app\fR\&.
-.RE
-.PP
-\fBrotate_logs\fR {\fIsuffix\fR}
-.RS 4
-Instruct the RabbitMQ node to rotate the log files\&.
-.sp
-The RabbitMQ broker appends the contents of its log files to files with names composed of the original name and the suffix, and then resumes logging to freshly created files at the original location\&. I\&.e\&. effectively the current log contents are moved to the end of the suffixed files\&.
-.sp
-When the target files do not exist they are created\&. When no
-\fBsuffix\fR
-is specified, the empty log files are simply created at the original location; no rotation takes place\&.
-.RE
-.SS "Cluster management"
-.PP
-\fBjoin_cluster\fR {\fIclusternode\fR} [\-\-ram]
-.RS 4
-.PP
-clusternode
-.RS 4
-Node to cluster with\&.
-.RE
-.PP
-[\-\-ram]
-.RS 4
-If provided, the node will join the cluster as a RAM node\&.
-.RE
-.sp
-Instruct the node to become a member of the cluster that the specified node is in\&. Before clustering, the node is reset, so be careful when using this command\&. For this command to succeed the RabbitMQ application must have been stopped, e\&.g\&. with
-\fBstop_app\fR\&.
-.sp
-Cluster nodes can be of two types: disc or RAM\&. Disc nodes replicate data in RAM and on disc, thus providing redundancy in the event of node failure and recovery from global events such as power failure across all nodes\&. RAM nodes replicate data in RAM only (with the exception of queue contents, which can reside on disc if the queue is persistent or too big to fit in memory) and are mainly used for scalability\&. RAM nodes are more performant only when managing resources (e\&.g\&. adding/removing queues, exchanges, or bindings)\&. A cluster must always have at least one disc node, and usually should have more than one\&.
-.sp
-The node will be a disc node by default\&. If you wish to create a RAM node, provide the
-\fB\-\-ram\fR
-flag\&.
-.sp
-After executing the
-\fBcluster\fR
-command, whenever the RabbitMQ application is started on the current node it will attempt to connect to the nodes that were in the cluster when the node went down\&.
-.sp
-To leave a cluster,
-\fBreset\fR
-the node\&. You can also remove nodes remotely with the
-\fBforget_cluster_node\fR
-command\&.
-.sp
-For more details see the
-\fBclustering guide\fR\&\s-2\u[2]\d\s+2\&.
-.RE
-.PP
-\fBcluster_status\fR
-.RS 4
-Displays all the nodes in the cluster grouped by node type, together with the currently running nodes\&.
-.RE
-.PP
-\fBchange_cluster_node_type\fR {disc | ram}
-.RS 4
-Changes the type of the cluster node\&. The node must be stopped for this operation to succeed, and when turning a node into a RAM node the node must not be the only disc node in the cluster\&.
-.RE
-.PP
-\fBforget_cluster_node\fR [\-\-offline]
-.RS 4
-.PP
-[\-\-offline]
-.RS 4
-Enables node removal from an offline node\&. This is only useful in the situation where all the nodes are offline and the last node to go down cannot be brought online, thus preventing the whole cluster from starting\&. It should not be used in any other circumstances since it can lead to inconsistencies\&.
-.RE
-.sp
-Removes a cluster node remotely\&. The node that is being removed must be offline, while the node we are removing from must be online, except when using the
-\fB\-\-offline\fR
-flag\&.
-.RE
-.PP
-\fBupdate_cluster_nodes\fR {clusternode}
-.RS 4
-.PP
-clusternode
-.RS 4
-The node to consult for up to date information\&.
-.RE
-.sp
-Instructs an already clustered node to contact
-\fBclusternode\fR
-to cluster when waking up\&. This is different from
-\fBjoin_cluster\fR
-since it does not join any cluster \- it checks that the node is already in a cluster with
-\fBclusternode\fR\&.
-.sp
-The need for this command is motivated by the fact that clusters can change while a node is offline\&. Consider the situation in which node A and B are clustered\&. A goes down, C clusters with B, and then B leaves the cluster\&. When A wakes up, it\'ll try to contact B, but this will fail since B is not in the cluster anymore\&.
-\fBupdate_cluster_nodes \-n A C\fR
-will solve this situation\&.
-.RE
-.PP
-\fBsync_queue\fR {queue}
-.RS 4
-.PP
-queue
-.RS 4
-The name of the queue to synchronise\&.
-.RE
-.sp
-Instructs a mirrored queue with unsynchronised slaves to synchronise itself\&. The queue will block while synchronisation takes place (all publishers to and consumers from the queue will block)\&. The queue must be mirrored for this command to succeed\&.
-.sp
-Note that unsynchronised queues from which messages are being drained will become synchronised eventually\&. This command is primarily useful for queues which are not being drained\&.
-.RE
-.PP
-\fBcancel_sync_queue\fR {queue}
-.RS 4
-.PP
-queue
-.RS 4
-The name of the queue to cancel synchronisation for\&.
-.RE
-.sp
-Instructs a synchronising mirrored queue to stop synchronising itself\&.
-.RE
-.SS "User management"
-.PP
-Note that
-\fBrabbitmqctl\fR
-manages the RabbitMQ internal user database\&. Users from any alternative authentication backend will not be visible to
-\fBrabbitmqctl\fR\&.
-.PP
-\fBadd_user\fR {\fIusername\fR} {\fIpassword\fR}
-.RS 4
-.PP
-username
-.RS 4
-The name of the user to create\&.
-.RE
-.PP
-password
-.RS 4
-The password the created user will use to log in to the broker\&.
-.RE
-.RE
-.PP
-\fBdelete_user\fR {\fIusername\fR}
-.RS 4
-.PP
-username
-.RS 4
-The name of the user to delete\&.
-.RE
-.RE
-.PP
-\fBchange_password\fR {\fIusername\fR} {\fInewpassword\fR}
-.RS 4
-.PP
-username
-.RS 4
-The name of the user whose password is to be changed\&.
-.RE
-.PP
-newpassword
-.RS 4
-The new password for the user\&.
-.RE
-.RE
-.PP
-\fBclear_password\fR {\fIusername\fR}
-.RS 4
-.PP
-username
-.RS 4
-The name of the user whose password is to be cleared\&.
-.RE
-.RE
-.PP
-\fBset_user_tags\fR {\fIusername\fR} {\fItag\fR \&.\&.\&.}
-.RS 4
-.PP
-username
-.RS 4
-The name of the user whose tags are to be set\&.
-.RE
-.PP
-tag
-.RS 4
-Zero, one or more tags to set\&. Any existing tags will be removed\&.
-.RE
-.RE
-.PP
-\fBlist_users\fR
-.RS 4
-Lists users\&. Each result row will contain the user name followed by a list of the tags set for that user\&.
-.RE
-.SS "Access control"
-.PP
-Note that
-\fBrabbitmqctl\fR
-manages the RabbitMQ internal user database\&. Permissions for users from any alternative authorisation backend will not be visible to
-\fBrabbitmqctl\fR\&.
-.PP
-\fBadd_vhost\fR {\fIvhostpath\fR}
-.RS 4
-.PP
-vhostpath
-.RS 4
-The name of the virtual host entry to create\&.
-.RE
-.sp
-Creates a virtual host\&.
-.RE
-.PP
-\fBdelete_vhost\fR {\fIvhostpath\fR}
-.RS 4
-.PP
-vhostpath
-.RS 4
-The name of the virtual host entry to delete\&.
-.RE
-.sp
-Deletes a virtual host\&.
-.sp
-Deleting a virtual host deletes all its exchanges, queues, bindings, user permissions, parameters and policies\&.
-.RE
-.PP
-\fBlist_vhosts\fR [\fIvhostinfoitem\fR \&.\&.\&.]
-.RS 4
-Lists virtual hosts\&.
-.sp
-The
-\fBvhostinfoitem\fR
-parameter is used to indicate which virtual host information items to include in the results\&. The column order in the results will match the order of the parameters\&.
-\fBvhostinfoitem\fR
-can take any value from the list that follows:
-.PP
-name
-.RS 4
-The name of the virtual host with non\-ASCII characters escaped as in C\&.
-.RE
-.PP
-tracing
-.RS 4
-Whether tracing is enabled for this virtual host\&.
-.RE
-.sp
-If no
-\fBvhostinfoitem\fRs are specified then the vhost name is displayed\&.
-.RE
-.PP
-\fBset_permissions\fR [\-p \fIvhostpath\fR] {\fIuser\fR} {\fIconf\fR} {\fIwrite\fR} {\fIread\fR}
-.RS 4
-.PP
-vhostpath
-.RS 4
-The name of the virtual host to which to grant the user access, defaulting to
-\fB/\fR\&.
-.RE
-.PP
-user
-.RS 4
-The name of the user to grant access to the specified virtual host\&.
-.RE
-.PP
-conf
-.RS 4
-A regular expression matching resource names for which the user is granted configure permissions\&.
-.RE
-.PP
-write
-.RS 4
-A regular expression matching resource names for which the user is granted write permissions\&.
-.RE
-.PP
-read
-.RS 4
-A regular expression matching resource names for which the user is granted read permissions\&.
-.RE
-.sp
-Sets user permissions\&.
-.RE
-.PP
-\fBclear_permissions\fR [\-p \fIvhostpath\fR] {\fIusername\fR}
-.RS 4
-.PP
-vhostpath
-.RS 4
-The name of the virtual host to which to deny the user access, defaulting to
-\fB/\fR\&.
-.RE
-.PP
-username
-.RS 4
-The name of the user to deny access to the specified virtual host\&.
-.RE
-.sp
-Sets user permissions\&.
-.RE
-.PP
-\fBlist_permissions\fR [\-p \fIvhostpath\fR]
-.RS 4
-.PP
-vhostpath
-.RS 4
-The name of the virtual host for which to list the users that have been granted access to it, and their permissions\&. Defaults to
-\fB/\fR\&.
-.RE
-.sp
-Lists permissions in a virtual host\&.
-.RE
-.PP
-\fBlist_user_permissions\fR {\fIusername\fR}
-.RS 4
-.PP
-username
-.RS 4
-The name of the user for which to list the permissions\&.
-.RE
-.sp
-Lists user permissions\&.
-.RE
-.SS "Parameter Management"
-.PP
-Certain features of RabbitMQ (such as the federation plugin) are controlled by dynamic, cluster\-wide
-\fIparameters\fR\&. Each parameter consists of a component name, a name and a value, and is associated with a virtual host\&. The component name and name are strings, and the value is an Erlang term\&. Parameters can be set, cleared and listed\&. In general you should refer to the documentation for the feature in question to see how to set parameters\&.
-.PP
-\fBset_parameter\fR [\-p \fIvhostpath\fR] {\fIcomponent_name\fR} {\fIname\fR} {\fIvalue\fR}
-.RS 4
-Sets a parameter\&.
-.PP
-component_name
-.RS 4
-The name of the component for which the parameter is being set\&.
-.RE
-.PP
-name
-.RS 4
-The name of the parameter being set\&.
-.RE
-.PP
-value
-.RS 4
-The value for the parameter, as a JSON term\&. In most shells you are very likely to need to quote this\&.
-.RE
-.RE
-.PP
-\fBclear_parameter\fR [\-p \fIvhostpath\fR] {\fIcomponent_name\fR} {\fIkey\fR}
-.RS 4
-Clears a parameter\&.
-.PP
-component_name
-.RS 4
-The name of the component for which the parameter is being cleared\&.
-.RE
-.PP
-name
-.RS 4
-The name of the parameter being cleared\&.
-.RE
-.RE
-.PP
-\fBlist_parameters\fR [\-p \fIvhostpath\fR]
-.RS 4
-Lists all parameters for a virtual host\&.
-.RE
-.SS "Policy Management"
-.PP
-Policies are used to control and modify the behaviour of queues and exchanges on a cluster\-wide basis\&. Policies apply within a given vhost, and consist of a name, pattern, definition and an optional priority\&. Policies can be set, cleared and listed\&.
-.PP
-\fBset_policy\fR [\-p \fIvhostpath\fR] {\fIname\fR} {\fIpattern\fR} {\fIdefinition\fR} [\fIpriority\fR]
-.RS 4
-Sets a policy\&.
-.PP
-name
-.RS 4
-The name of the policy\&.
-.RE
-.PP
-pattern
-.RS 4
-The regular expression, which when matches on a given resources causes the policy to apply\&.
-.RE
-.PP
-definition
-.RS 4
-The definition of the policy, as a JSON term\&. In most shells you are very likely to need to quote this\&.
-.RE
-.PP
-priority
-.RS 4
-The priority of the policy as an integer, defaulting to 0\&. Higher numbers indicate greater precedence\&.
-.RE
-.RE
-.PP
-\fBclear_policy\fR [\-p \fIvhostpath\fR] {\fIname\fR}
-.RS 4
-Clears a policy\&.
-.PP
-name
-.RS 4
-The name of the policy being cleared\&.
-.RE
-.RE
-.PP
-\fBlist_policies\fR [\-p \fIvhostpath\fR]
-.RS 4
-Lists all policies for a virtual host\&.
-.RE
-.SS "Server Status"
-.PP
-The server status queries interrogate the server and return a list of results with tab\-delimited columns\&. Some queries (\fBlist_queues\fR,
-\fBlist_exchanges\fR,
-\fBlist_bindings\fR, and
-\fBlist_consumers\fR) accept an optional
-\fBvhost\fR
-parameter\&. This parameter, if present, must be specified immediately after the query\&.
-.PP
-The list_queues, list_exchanges and list_bindings commands accept an optional virtual host parameter for which to display results\&. The default value is "/"\&.
-.PP
-\fBlist_queues\fR [\-p \fIvhostpath\fR] [\fIqueueinfoitem\fR \&.\&.\&.]
-.RS 4
-Returns queue details\&. Queue details of the
-\fB/\fR
-virtual host are returned if the "\-p" flag is absent\&. The "\-p" flag can be used to override this default\&.
-.sp
-The
-\fBqueueinfoitem\fR
-parameter is used to indicate which queue information items to include in the results\&. The column order in the results will match the order of the parameters\&.
-\fBqueueinfoitem\fR
-can take any value from the list that follows:
-.PP
-name
-.RS 4
-The name of the queue with non\-ASCII characters escaped as in C\&.
-.RE
-.PP
-durable
-.RS 4
-Whether or not the queue survives server restarts\&.
-.RE
-.PP
-auto_delete
-.RS 4
-Whether the queue will be deleted automatically when no longer used\&.
-.RE
-.PP
-arguments
-.RS 4
-Queue arguments\&.
-.RE
-.PP
-policy
-.RS 4
-Policy name applying to the queue\&.
-.RE
-.PP
-pid
-.RS 4
-Id of the Erlang process associated with the queue\&.
-.RE
-.PP
-owner_pid
-.RS 4
-Id of the Erlang process representing the connection which is the exclusive owner of the queue\&. Empty if the queue is non\-exclusive\&.
-.RE
-.PP
-exclusive_consumer_pid
-.RS 4
-Id of the Erlang process representing the channel of the exclusive consumer subscribed to this queue\&. Empty if there is no exclusive consumer\&.
-.RE
-.PP
-exclusive_consumer_tag
-.RS 4
-Consumer tag of the exclusive consumer subscribed to this queue\&. Empty if there is no exclusive consumer\&.
-.RE
-.PP
-messages_ready
-.RS 4
-Number of messages ready to be delivered to clients\&.
-.RE
-.PP
-messages_unacknowledged
-.RS 4
-Number of messages delivered to clients but not yet acknowledged\&.
-.RE
-.PP
-messages
-.RS 4
-Sum of ready and unacknowledged messages (queue depth)\&.
-.RE
-.PP
-consumers
-.RS 4
-Number of consumers\&.
-.RE
-.PP
-active_consumers
-.RS 4
-Number of active consumers\&. An active consumer is one which could immediately receive any messages sent to the queue \- i\&.e\&. it is not limited by its prefetch count, TCP congestion, flow control, or because it has issued channel\&.flow\&. At least one of messages_ready and active_consumers must always be zero\&.
-.sp
-Note that this value is an instantaneous snapshot \- when consumers are restricted by their prefetch count they may only appear to be active for small fractions of a second until more messages are sent out\&.
-.RE
-.PP
-memory
-.RS 4
-Bytes of memory consumed by the Erlang process associated with the queue, including stack, heap and internal structures\&.
-.RE
-.PP
-slave_pids
-.RS 4
-If the queue is mirrored, this gives the IDs of the current slaves\&.
-.RE
-.PP
-synchronised_slave_pids
-.RS 4
-If the queue is mirrored, this gives the IDs of the current slaves which are synchronised with the master \- i\&.e\&. those which could take over from the master without message loss\&.
-.RE
-.PP
-status
-.RS 4
-The status of the queue\&. Normally \'running\', but may be "{syncing, MsgCount}" if the queue is synchronising\&.
-.RE
-.sp
-If no
-\fBqueueinfoitem\fRs are specified then queue name and depth are displayed\&.
-.RE
-.PP
-\fBlist_exchanges\fR [\-p \fIvhostpath\fR] [\fIexchangeinfoitem\fR \&.\&.\&.]
-.RS 4
-Returns exchange details\&. Exchange details of the
-\fB/\fR
-virtual host are returned if the "\-p" flag is absent\&. The "\-p" flag can be used to override this default\&.
-.sp
-The
-\fBexchangeinfoitem\fR
-parameter is used to indicate which exchange information items to include in the results\&. The column order in the results will match the order of the parameters\&.
-\fBexchangeinfoitem\fR
-can take any value from the list that follows:
-.PP
-name
-.RS 4
-The name of the exchange with non\-ASCII characters escaped as in C\&.
-.RE
-.PP
-type
-.RS 4
-The exchange type (such as [\fBdirect\fR,
-\fBtopic\fR,
-\fBheaders\fR,
-\fBfanout\fR])\&.
-.RE
-.PP
-durable
-.RS 4
-Whether or not the exchange survives server restarts\&.
-.RE
-.PP
-auto_delete
-.RS 4
-Whether the exchange will be deleted automatically when no longer used\&.
-.RE
-.PP
-internal
-.RS 4
-Whether the exchange is internal, i\&.e\&. cannot be directly published to by a client\&.
-.RE
-.PP
-arguments
-.RS 4
-Exchange arguments\&.
-.RE
-.PP
-policy
-.RS 4
-Policy name for applying to the exchange\&.
-.RE
-.sp
-If no
-\fBexchangeinfoitem\fRs are specified then exchange name and type are displayed\&.
-.RE
-.PP
-\fBlist_bindings\fR [\-p \fIvhostpath\fR] [\fIbindinginfoitem\fR \&.\&.\&.]
-.RS 4
-Returns binding details\&. By default the bindings for the
-\fB/\fR
-virtual host are returned\&. The "\-p" flag can be used to override this default\&.
-.sp
-The
-\fBbindinginfoitem\fR
-parameter is used to indicate which binding information items to include in the results\&. The column order in the results will match the order of the parameters\&.
-\fBbindinginfoitem\fR
-can take any value from the list that follows:
-.PP
-source_name
-.RS 4
-The name of the source of messages to which the binding is attached\&. With non\-ASCII characters escaped as in C\&.
-.RE
-.PP
-source_kind
-.RS 4
-The kind of the source of messages to which the binding is attached\&. Currently always exchange\&. With non\-ASCII characters escaped as in C\&.
-.RE
-.PP
-destination_name
-.RS 4
-The name of the destination of messages to which the binding is attached\&. With non\-ASCII characters escaped as in C\&.
-.RE
-.PP
-destination_kind
-.RS 4
-The kind of the destination of messages to which the binding is attached\&. With non\-ASCII characters escaped as in C\&.
-.RE
-.PP
-routing_key
-.RS 4
-The binding\'s routing key, with non\-ASCII characters escaped as in C\&.
-.RE
-.PP
-arguments
-.RS 4
-The binding\'s arguments\&.
-.RE
-.sp
-If no
-\fBbindinginfoitem\fRs are specified then all above items are displayed\&.
-.RE
-.PP
-\fBlist_connections\fR [\fIconnectioninfoitem\fR \&.\&.\&.]
-.RS 4
-Returns TCP/IP connection statistics\&.
-.sp
-The
-\fBconnectioninfoitem\fR
-parameter is used to indicate which connection information items to include in the results\&. The column order in the results will match the order of the parameters\&.
-\fBconnectioninfoitem\fR
-can take any value from the list that follows:
-.PP
-pid
-.RS 4
-Id of the Erlang process associated with the connection\&.
-.RE
-.PP
-name
-.RS 4
-Readable name for the connection\&.
-.RE
-.PP
-port
-.RS 4
-Server port\&.
-.RE
-.PP
-host
-.RS 4
-Server hostname obtained via reverse DNS, or its IP address if reverse DNS failed or was not enabled\&.
-.RE
-.PP
-peer_port
-.RS 4
-Peer port\&.
-.RE
-.PP
-peer_host
-.RS 4
-Peer hostname obtained via reverse DNS, or its IP address if reverse DNS failed or was not enabled\&.
-.RE
-.PP
-ssl
-.RS 4
-Boolean indicating whether the connection is secured with SSL\&.
-.RE
-.PP
-ssl_protocol
-.RS 4
-SSL protocol (e\&.g\&. tlsv1)
-.RE
-.PP
-ssl_key_exchange
-.RS 4
-SSL key exchange algorithm (e\&.g\&. rsa)
-.RE
-.PP
-ssl_cipher
-.RS 4
-SSL cipher algorithm (e\&.g\&. aes_256_cbc)
-.RE
-.PP
-ssl_hash
-.RS 4
-SSL hash function (e\&.g\&. sha)
-.RE
-.PP
-peer_cert_subject
-.RS 4
-The subject of the peer\'s SSL certificate, in RFC4514 form\&.
-.RE
-.PP
-peer_cert_issuer
-.RS 4
-The issuer of the peer\'s SSL certificate, in RFC4514 form\&.
-.RE
-.PP
-peer_cert_validity
-.RS 4
-The period for which the peer\'s SSL certificate is valid\&.
-.RE
-.PP
-last_blocked_by
-.RS 4
-The reason for which this connection was last blocked\&. One of \'resource\' \- due to a memory or disk alarm, \'flow\' \- due to internal flow control, or \'none\' if the connection was never blocked\&.
-.RE
-.PP
-last_blocked_age
-.RS 4
-Time, in seconds, since this connection was last blocked, or \'infinity\'\&.
-.RE
-.PP
-state
-.RS 4
-Connection state (one of [\fBstarting\fR,
-\fBtuning\fR,
-\fBopening\fR,
-\fBrunning\fR,
-\fBblocking\fR,
-\fBblocked\fR,
-\fBclosing\fR,
-\fBclosed\fR])\&.
-.RE
-.PP
-channels
-.RS 4
-Number of channels using the connection\&.
-.RE
-.PP
-protocol
-.RS 4
-Version of the AMQP protocol in use (currently one of
-\fB{0,9,1}\fR
-or
-\fB{0,8,0}\fR)\&. Note that if a client requests an AMQP 0\-9 connection, we treat it as AMQP 0\-9\-1\&.
-.RE
-.PP
-auth_mechanism
-.RS 4
-SASL authentication mechanism used, such as
-\fBPLAIN\fR\&.
-.RE
-.PP
-user
-.RS 4
-Username associated with the connection\&.
-.RE
-.PP
-vhost
-.RS 4
-Virtual host name with non\-ASCII characters escaped as in C\&.
-.RE
-.PP
-timeout
-.RS 4
-Connection timeout / negotiated heartbeat interval, in seconds\&.
-.RE
-.PP
-frame_max
-.RS 4
-Maximum frame size (bytes)\&.
-.RE
-.PP
-client_properties
-.RS 4
-Informational properties transmitted by the client during connection establishment\&.
-.RE
-.PP
-recv_oct
-.RS 4
-Octets received\&.
-.RE
-.PP
-recv_cnt
-.RS 4
-Packets received\&.
-.RE
-.PP
-send_oct
-.RS 4
-Octets send\&.
-.RE
-.PP
-send_cnt
-.RS 4
-Packets sent\&.
-.RE
-.PP
-send_pend
-.RS 4
-Send queue size\&.
-.RE
-.sp
-If no
-\fBconnectioninfoitem\fRs are specified then user, peer host, peer port, time since flow control and memory block state are displayed\&.
-.RE
-.PP
-\fBlist_channels\fR [\fIchannelinfoitem\fR \&.\&.\&.]
-.RS 4
-Returns information on all current channels, the logical containers executing most AMQP commands\&. This includes channels that are part of ordinary AMQP connections, and channels created by various plug\-ins and other extensions\&.
-.sp
-The
-\fBchannelinfoitem\fR
-parameter is used to indicate which channel information items to include in the results\&. The column order in the results will match the order of the parameters\&.
-\fBchannelinfoitem\fR
-can take any value from the list that follows:
-.PP
-pid
-.RS 4
-Id of the Erlang process associated with the connection\&.
-.RE
-.PP
-connection
-.RS 4
-Id of the Erlang process associated with the connection to which the channel belongs\&.
-.RE
-.PP
-name
-.RS 4
-Readable name for the channel\&.
-.RE
-.PP
-number
-.RS 4
-The number of the channel, which uniquely identifies it within a connection\&.
-.RE
-.PP
-user
-.RS 4
-Username associated with the channel\&.
-.RE
-.PP
-vhost
-.RS 4
-Virtual host in which the channel operates\&.
-.RE
-.PP
-transactional
-.RS 4
-True if the channel is in transactional mode, false otherwise\&.
-.RE
-.PP
-confirm
-.RS 4
-True if the channel is in confirm mode, false otherwise\&.
-.RE
-.PP
-consumer_count
-.RS 4
-Number of logical AMQP consumers retrieving messages via the channel\&.
-.RE
-.PP
-messages_unacknowledged
-.RS 4
-Number of messages delivered via this channel but not yet acknowledged\&.
-.RE
-.PP
-messages_uncommitted
-.RS 4
-Number of messages received in an as yet uncommitted transaction\&.
-.RE
-.PP
-acks_uncommitted
-.RS 4
-Number of acknowledgements received in an as yet uncommitted transaction\&.
-.RE
-.PP
-messages_unconfirmed
-.RS 4
-Number of published messages not yet confirmed\&. On channels not in confirm mode, this remains 0\&.
-.RE
-.PP
-prefetch_count
-.RS 4
-QoS prefetch count limit in force, 0 if unlimited\&.
-.RE
-.PP
-client_flow_blocked
-.RS 4
-True if the client issued a
-\fBchannel\&.flow{active=false}\fR
-command, blocking the server from delivering messages to the channel\'s consumers\&.
-.RE
-.sp
-If no
-\fBchannelinfoitem\fRs are specified then pid, user, consumer_count, and messages_unacknowledged are assumed\&.
-.RE
-.PP
-\fBlist_consumers\fR [\-p \fIvhostpath\fR]
-.RS 4
-List consumers, i\&.e\&. subscriptions to a queue\'s message stream\&. Each line printed shows, separated by tab characters, the name of the queue subscribed to, the id of the channel process via which the subscription was created and is managed, the consumer tag which uniquely identifies the subscription within a channel, and a boolean indicating whether acknowledgements are expected for messages delivered to this consumer\&.
-.sp
-The output is a list of rows containing, in order, the queue name, channel process id, consumer tag, and a boolean indicating whether acknowledgements are expected from the consumer\&.
-.RE
-.PP
-\fBstatus\fR
-.RS 4
-Displays broker status information such as the running applications on the current Erlang node, RabbitMQ and Erlang versions, OS name, memory and file descriptor statistics\&. (See the
-\fBcluster_status\fR
-command to find out which nodes are clustered and running\&.)
-.RE
-.PP
-\fBenvironment\fR
-.RS 4
-Display the name and value of each variable in the application environment\&.
-.RE
-.PP
-\fBreport\fR
-.RS 4
-Generate a server status report containing a concatenation of all server status information for support purposes\&. The output should be redirected to a file when accompanying a support request\&.
-.RE
-.PP
-\fBeval\fR {\fIexpr\fR}
-.RS 4
-Evaluate an arbitrary Erlang expression\&.
-.RE
-.SS "Miscellaneous"
-.PP
-\fBclose_connection\fR {\fIconnectionpid\fR} {\fIexplanation\fR}
-.RS 4
-.PP
-connectionpid
-.RS 4
-Id of the Erlang process associated with the connection to close\&.
-.RE
-.PP
-explanation
-.RS 4
-Explanation string\&.
-.RE
-.sp
-Instruct the broker to close the connection associated with the Erlang process id
-\fBconnectionpid\fR
-(see also the
-\fBlist_connections\fR
-command), passing the
-\fBexplanation\fR
-string to the connected client as part of the AMQP connection shutdown protocol\&.
-.RE
-.PP
-\fBtrace_on\fR [\-p \fIvhost\fR]
-.RS 4
-.PP
-vhost
-.RS 4
-The name of the virtual host for which to start tracing\&.
-.RE
-.sp
-Starts tracing\&.
-.RE
-.PP
-\fBtrace_off\fR [\-p \fIvhost\fR]
-.RS 4
-.PP
-vhost
-.RS 4
-The name of the virtual host for which to stop tracing\&.
-.RE
-.sp
-Stops tracing\&.
-.RE
-.PP
-\fBset_vm_memory_high_watermark\fR {\fIfraction\fR}
-.RS 4
-.PP
-fraction
-.RS 4
-The new memory threshold fraction at which flow control is triggered, as a floating point number greater than or equal to 0\&.
-.RE
-.RE
-.SH "EXAMPLES"
-.PP
-\fBrabbitmqctl stop\fR
-.RS 4
-This command instructs the RabbitMQ node to terminate\&.
-.RE
-.PP
-\fBrabbitmqctl stop_app\fR
-.RS 4
-This command instructs the RabbitMQ node to stop the RabbitMQ application\&.
-.RE
-.PP
-\fBrabbitmqctl start_app\fR
-.RS 4
-This command instructs the RabbitMQ node to start the RabbitMQ application\&.
-.RE
-.PP
-\fBrabbitmqctl wait /var/run/rabbitmq/pid\fR
-.RS 4
-This command will return when the RabbitMQ node has started up\&.
-.RE
-.PP
-\fBrabbitmqctl reset\fR
-.RS 4
-This command resets the RabbitMQ node\&.
-.RE
-.PP
-\fBrabbitmqctl force_reset\fR
-.RS 4
-This command resets the RabbitMQ node\&.
-.RE
-.PP
-\fBrabbitmqctl rotate_logs \&.1\fR
-.RS 4
-This command instructs the RabbitMQ node to append the contents of the log files to files with names consisting of the original logs\' names and "\&.1" suffix, e\&.g\&. rabbit@mymachine\&.log\&.1 and rabbit@mymachine\-sasl\&.log\&.1\&. Finally, logging resumes to fresh files at the old locations\&.
-.RE
-.PP
-\fBrabbitmqctl join_cluster hare@elena \-\-ram\fR
-.RS 4
-This command instructs the RabbitMQ node to join the cluster that
-\fBhare@elena\fR
-is part of, as a ram node\&.
-.RE
-.PP
-\fBrabbitmqctl cluster_status\fR
-.RS 4
-This command displays the nodes in the cluster\&.
-.RE
-.PP
-\fBrabbitmqctl change_cluster_node_type disc\fR
-.RS 4
-This command will turn a RAM node into a disc node\&.
-.RE
-.PP
-\fBrabbitmqctl \-n hare@mcnulty forget_cluster_node rabbit@stringer\fR
-.RS 4
-This command will remove the node
-\fBrabbit@stringer\fR
-from the node
-\fBhare@mcnulty\fR\&.
-.RE
-.PP
-\fBrabbitmqctl add_user tonyg changeit\fR
-.RS 4
-This command instructs the RabbitMQ broker to create a (non\-administrative) user named
-\fBtonyg\fR
-with (initial) password
-\fBchangeit\fR\&.
-.RE
-.PP
-\fBrabbitmqctl delete_user tonyg\fR
-.RS 4
-This command instructs the RabbitMQ broker to delete the user named
-\fBtonyg\fR\&.
-.RE
-.PP
-\fBrabbitmqctl change_password tonyg newpass\fR
-.RS 4
-This command instructs the RabbitMQ broker to change the password for the user named
-\fBtonyg\fR
-to
-\fBnewpass\fR\&.
-.RE
-.PP
-\fBrabbitmqctl clear_password tonyg\fR
-.RS 4
-This command instructs the RabbitMQ broker to clear the password for the user named
-\fBtonyg\fR\&. This user now cannot log in with a password (but may be able to through e\&.g\&. SASL EXTERNAL if configured)\&.
-.RE
-.PP
-\fBrabbitmqctl set_user_tags tonyg administrator\fR
-.RS 4
-This command instructs the RabbitMQ broker to ensure the user named
-\fBtonyg\fR
-is an administrator\&. This has no effect when the user logs in via AMQP, but can be used to permit the user to manage users, virtual hosts and permissions when the user logs in via some other means (for example with the management plugin)\&.
-.RE
-.PP
-\fBrabbitmqctl set_user_tags tonyg\fR
-.RS 4
-This command instructs the RabbitMQ broker to remove any tags from the user named
-\fBtonyg\fR\&.
-.RE
-.PP
-\fBrabbitmqctl list_users\fR
-.RS 4
-This command instructs the RabbitMQ broker to list all users\&.
-.RE
-.PP
-\fBrabbitmqctl add_vhost test\fR
-.RS 4
-This command instructs the RabbitMQ broker to create a new virtual host called
-\fBtest\fR\&.
-.RE
-.PP
-\fBrabbitmqctl delete_vhost test\fR
-.RS 4
-This command instructs the RabbitMQ broker to delete the virtual host called
-\fBtest\fR\&.
-.RE
-.PP
-\fBrabbitmqctl list_vhosts name tracing\fR
-.RS 4
-This command instructs the RabbitMQ broker to list all virtual hosts\&.
-.RE
-.PP
-\fBrabbitmqctl set_permissions \-p /myvhost tonyg "^tonyg\-\&.*" "\&.*" "\&.*"\fR
-.RS 4
-This command instructs the RabbitMQ broker to grant the user named
-\fBtonyg\fR
-access to the virtual host called
-\fB/myvhost\fR, with configure permissions on all resources whose names starts with "tonyg\-", and write and read permissions on all resources\&.
-.RE
-.PP
-\fBrabbitmqctl clear_permissions \-p /myvhost tonyg\fR
-.RS 4
-This command instructs the RabbitMQ broker to deny the user named
-\fBtonyg\fR
-access to the virtual host called
-\fB/myvhost\fR\&.
-.RE
-.PP
-\fBrabbitmqctl list_permissions \-p /myvhost\fR
-.RS 4
-This command instructs the RabbitMQ broker to list all the users which have been granted access to the virtual host called
-\fB/myvhost\fR, and the permissions they have for operations on resources in that virtual host\&. Note that an empty string means no permissions granted\&.
-.RE
-.PP
-\fBrabbitmqctl list_user_permissions tonyg\fR
-.RS 4
-This command instructs the RabbitMQ broker to list all the virtual hosts to which the user named
-\fBtonyg\fR
-has been granted access, and the permissions the user has for operations on resources in these virtual hosts\&.
-.RE
-.PP
-\fBrabbitmqctl set_parameter federation local_username \'"guest"\'\fR
-.RS 4
-This command sets the parameter
-\fBlocal_username\fR
-for the
-\fBfederation\fR
-component in the default virtual host to the JSON term
-\fB"guest"\fR\&.
-.RE
-.PP
-\fBrabbitmqctl clear_parameter federation local_username\fR
-.RS 4
-This command clears the parameter
-\fBlocal_username\fR
-for the
-\fBfederation\fR
-component in the default virtual host\&.
-.RE
-.PP
-\fBrabbitmqctl list_parameters\fR
-.RS 4
-This command lists all parameters in the default virtual host\&.
-.RE
-.PP
-\fBrabbitmqctl set_policy federate\-me "^amq\&." \'{"federation\-upstream\-set":"all"}\'\fR
-.RS 4
-This command sets the policy
-\fBfederate\-me\fR
-in the default virtual host so that built\-in exchanges are federated\&.
-.RE
-.PP
-\fBrabbitmqctl clear_policy federate\-me\fR
-.RS 4
-This command clears the
-\fBfederate\-me\fR
-policy in the default virtual host\&.
-.RE
-.PP
-\fBrabbitmqctl list_policies\fR
-.RS 4
-This command lists all policies in the default virtual host\&.
-.RE
-.PP
-\fBrabbitmqctl list_queues \-p /myvhost messages consumers\fR
-.RS 4
-This command displays the depth and number of consumers for each queue of the virtual host named
-\fB/myvhost\fR\&.
-.RE
-.PP
-\fBrabbitmqctl list_exchanges \-p /myvhost name type\fR
-.RS 4
-This command displays the name and type for each exchange of the virtual host named
-\fB/myvhost\fR\&.
-.RE
-.PP
-\fBrabbitmqctl list_bindings \-p /myvhost exchange_name queue_name\fR
-.RS 4
-This command displays the exchange name and queue name of the bindings in the virtual host named
-\fB/myvhost\fR\&.
-.RE
-.PP
-\fBrabbitmqctl list_connections send_pend port\fR
-.RS 4
-This command displays the send queue size and server port for each connection\&.
-.RE
-.PP
-\fBrabbitmqctl list_channels connection messages_unacknowledged\fR
-.RS 4
-This command displays the connection process and count of unacknowledged messages for each channel\&.
-.RE
-.PP
-\fBrabbitmqctl status\fR
-.RS 4
-This command displays information about the RabbitMQ broker\&.
-.RE
-.PP
-\fBrabbitmqctl report > server_report\&.txt\fR
-.RS 4
-This command creates a server report which may be attached to a support request email\&.
-.RE
-.PP
-\fBrabbitmqctl eval \'node()\&.\'\fR
-.RS 4
-This command returns the name of the node to which rabbitmqctl has connected\&.
-.RE
-.PP
-\fBrabbitmqctl close_connection "<rabbit@tanto\&.4262\&.0>" "go away"\fR
-.RS 4
-This command instructs the RabbitMQ broker to close the connection associated with the Erlang process id
-\fB<rabbit@tanto\&.4262\&.0>\fR, passing the explanation
-\fBgo away\fR
-to the connected client\&.
-.RE
-.SH "AUTHOR"
-.PP
-\fBThe RabbitMQ Team <\fR\fB\fBinfo@rabbitmq\&.com\fR\fR\fB>\fR
-.SH "NOTES"
-.IP " 1." 4
-installation guide
-.RS 4
-\%http://www.rabbitmq.com/install.html
-.RE
-.IP " 2." 4
-clustering guide
-.RS 4
-\%http://www.rabbitmq.com/clustering.html
-.RE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/rabbitmq/files/rmq-mplex	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,26 @@
+#!/bin/sh
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+#
+
+export HOME=/var/lib/rabbitmq
+exec /usr/lib/rabbitmq/bin/${0##*/} "$@"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/rabbitmq/files/svc-rabbitmq	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,104 @@
+#!/usr/bin/bash
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+#
+
+. /lib/svc/share/smf_include.sh
+
+RABBIT_SERVER=/usr/bin/rabbitmq-server
+RABBIT_CTL=/usr/bin/rabbitmqctl
+
+if [[ -z "$SMF_FMRI" ]]; then
+	echo "This script can only be invoked by smf(5)"
+	exit $SMF_EXIT_ERR_NOSMF
+fi
+
+# rabbitmq-env handles pulling in configuration from a number of sources.  Out
+# of that, the server builds more configuration variables if they haven't
+# already been set.  getenv() gives us the variable as the server would see it.
+# It's up to the caller to massage it as the server would.
+getenv() {
+	# Has the RABBITMQ_ version been set?  If so, that takes precedence.
+	r=$(eval print \$RABBITMQ_${1})
+	if [[ -n $r ]]; then
+		print $r
+	else
+		print $(
+			SCRIPT_DIR=/usr/lib/rabbitmq/bin;
+			. /usr/lib/rabbitmq/bin/rabbitmq-env;
+			eval print \${$1}
+		)
+	fi
+}
+
+# If RABBITMQ_NODENAME isn't set in the environment, then use the FMRI instance
+# name, unless the instance name is "default", in which case we use the default
+# from the configuration files.  If the instance name doesn't have an @ in it,
+# then append the hostname.
+if [[ -z $RABBITMQ_NODENAME ]]; then
+	INSTANCE=${SMF_FMRI##*:}
+	if [[ $INSTANCE == default ]]; then
+		INSTANCE=$(getenv NODENAME)
+	fi
+	if [[ $INSTANCE != *@* ]]; then
+		INSTANCE=$INSTANCE@$(hostname)
+	fi
+	export RABBITMQ_NODENAME=$INSTANCE
+fi
+
+# XXX Why isn't HOME set for us?
+export HOME=/var/lib/rabbitmq
+
+case "$1" in
+"start")
+	$RABBIT_SERVER -detached
+
+	# make sure the service is actually up before returning
+	while true; do
+		/usr/bin/rabbitmqctl list_users > /dev/null 2>&1
+		if [[ $? -ne 0 ]]; then
+			sleep 1
+		else
+			break
+		fi
+	done
+	;;
+"stop")
+	$RABBIT_CTL -n $RABBITMQ_NODENAME stop
+	# XXX epmd should be in a separate SMF service (16749936); for now,
+	# though, be sure to kill it here.
+	epmd_pid=$(pgrep -c $(svcs -H -o ctid $SMF_FMRI) epmd)
+	if [[ -n $epmd_pid ]]; then
+		sleep 2
+		epmd -kill
+	fi
+	;;
+
+*)
+	echo "Usage: $0 { start | stop }"
+	exit $SMF_EXIT_ERR_CONFIG
+	;;
+esac
+
+exit $SMF_EXIT_OK
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/rabbitmq/patches/makefile.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,32 @@
+In-house patch to use supported sed flags and to remove gzipping of man pages
+
+--- rabbitmq-server-3.5.6/Makefile.orig  2015-11-09 11:32:32.297343560 -0700
++++ rabbitmq-server-3.5.6/Makefile    2015-11-09 11:33:27.169056719 -0700
+@@ -75,7 +75,7 @@ $(shell awk 'BEGIN {
+ }')
+ endef
+
+-ERTS_VER = $(shell erl -version 2>&1 | sed -E 's/.* version //')
++ERTS_VER = $(shell erl -version 2>&1 | sed -e 's/.* version //')
+ USE_SPECS_MIN_ERTS_VER = 5.11
+ ifeq ($(call compare_version,$(ERTS_VER),$(USE_SPECS_MIN_ERTS_VER),>=),true)
+ ERLC_OPTS += -Duse_specs
+@@ -348,8 +348,7 @@ distclean: clean
+ %.gz: %.xml $(DOCS_DIR)/examples-to-end.xsl
+	xmlto --version | grep -E '^xmlto version 0\.0\.([0-9]|1[1-8])$$' >/dev/null || opt='--stringparam man.indent.verbatims=0' ; \
+	    xsltproc --novalid $(DOCS_DIR)/examples-to-end.xsl $< > $<.tmp && \
+-	    xmlto -o $(DOCS_DIR) $$opt man $<.tmp && \
+-	    gzip -f $(DOCS_DIR)/`basename $< .xml`
++	    xmlto -o $(DOCS_DIR) $$opt man $<.tmp
+	rm -f $<.tmp
+
+ # Use tmp files rather than a pipeline so that we get meaningful errors
+@@ -393,7 +392,7 @@ install_bin: all install_dirs
+ install_docs: docs_all install_dirs
+	for section in 1 5; do \
+		mkdir -p $(MAN_DIR)/man$$section; \
+-		for manpage in $(DOCS_DIR)/*.$$section.gz; do \
++		for manpage in $(DOCS_DIR)/*.$$section; do \
+			cp $$manpage $(MAN_DIR)/man$$section; \
+		done; \
+	done
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/rabbitmq/patches/sh-to-bash.patch	Fri Feb 05 17:54:17 2016 -0500
@@ -0,0 +1,42 @@
+In-house patch to change script shebangs from /bin/sh to /bin/bash.
+
+--- rabbitmq-server-3.5.6/scripts/rabbitmq-defaults.orig	2015-11-06 15:03:53.658300806 -0700
++++ rabbitmq-server-3.5.6/scripts/rabbitmq-defaults	2015-11-06 15:04:02.201770057 -0700
+@@ -1,4 +1,4 @@
+-#!/bin/sh -e
++#!/bin/bash -e
+ ##  The contents of this file are subject to the Mozilla Public License
+ ##  Version 1.1 (the "License"); you may not use this file except in
+ ##  compliance with the License. You may obtain a copy of the License
+--- rabbitmq-server-3.5.6/scripts/rabbitmq-env.~1~	2015-10-07 06:45:15.000000000 -0600
++++ rabbitmq-server-3.5.6/scripts/rabbitmq-env	2015-11-06 15:04:49.880308945 -0700
+@@ -1,4 +1,4 @@
+-#!/bin/sh -e
++#!/bin/bash -e
+ ##  The contents of this file are subject to the Mozilla Public License
+ ##  Version 1.1 (the "License"); you may not use this file except in
+ ##  compliance with the License. You may obtain a copy of the License
+--- rabbitmq-server-3.5.6/scripts/rabbitmq-plugins.orig	2015-11-06 15:05:20.895232169 -0700
++++ rabbitmq-server-3.5.6/scripts/rabbitmq-plugins	2015-11-06 15:05:27.120820613 -0700
+@@ -1,4 +1,4 @@
+-#!/bin/sh -e
++#!/bin/bash -e
+ ##  The contents of this file are subject to the Mozilla Public License
+ ##  Version 1.1 (the "License"); you may not use this file except in
+ ##  compliance with the License. You may obtain a copy of the License
+--- rabbitmq-server-3.5.6/scripts/rabbitmq-server.orig	2015-11-06 15:05:50.732469659 -0700
++++ rabbitmq-server-3.5.6/scripts/rabbitmq-server	2015-11-06 15:05:56.720949599 -0700
+@@ -1,4 +1,4 @@
+-#!/bin/sh -e
++#!/bin/bash -e
+ ##  The contents of this file are subject to the Mozilla Public License
+ ##  Version 1.1 (the "License"); you may not use this file except in
+ ##  compliance with the License. You may obtain a copy of the License
+--- rabbitmq-server-3.5.6/scripts/rabbitmqctl.orig	2015-11-06 15:06:17.578633681 -0700
++++ rabbitmq-server-3.5.6/scripts/rabbitmqctl	2015-11-06 15:06:23.513395133 -0700
+@@ -1,4 +1,4 @@
+-#!/bin/sh -e
++#!/bin/bash -e
+ ##  The contents of this file are subject to the Mozilla Public License
+ ##  Version 1.1 (the "License"); you may not use this file except in
+ ##  compliance with the License. You may obtain a copy of the License
--- a/components/rabbitmq/rabbitmq.license	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/rabbitmq/rabbitmq.license	Fri Feb 05 17:54:17 2016 -0500
@@ -4,7 +4,7 @@
 [email protected].
 
 The files amqp-rabbitmq-0.8.json and amqp-rabbitmq-0.9.1.json are
-"Copyright (C) 2008-2013 VMware", Inc. and are covered by the MIT
+"Copyright (C) 2008-2013 GoPivotal", Inc. and are covered by the MIT
 license.
 
 jQuery is "Copyright (c) 2010 John Resig" and is covered by the MIT
@@ -21,9 +21,10 @@
 Apache License version 2.0. It was downloaded from
 http://code.google.com/p/explorercanvas/
 
-Flot is "Copyright (c) 2007-2009 IOLA and Ole Laursen" and is covered
+Flot is "Copyright (c) 2007-2013 IOLA and Ole Laursen" and is covered
 by the MIT license. It was downloaded from
-http://code.google.com/p/flot/Webmachine is Copyright (c) Basho Technologies and is covered by the
+http://www.flotcharts.org/
+Webmachine is Copyright (c) Basho Technologies and is covered by the
 Apache License 2.0.  It was downloaded from http://webmachine.basho.com/
 
 Eldap is "Copyright (c) 2010, Torbjorn Tornkvist" and is covered by
@@ -94,8 +95,8 @@
 The rest of this package is licensed under the Mozilla Public License 1.1
 Authors and Copyright are as described below:
 
-     The Initial Developer of the Original Code is VMware, Inc.
-     Copyright (c) 2007-2013 VMware, Inc.  All rights reserved.
+     The Initial Developer of the Original Code is GoPivotal, Inc.
+     Copyright (c) 2007-2015 Pivotal Software, Inc.  All rights reserved.
 
 
                           MOZILLA PUBLIC LICENSE
@@ -546,8 +547,8 @@
 
      The Original Code is RabbitMQ.
 
-     The Initial Developer of the Original Code is VMware, Inc.
-     Copyright (c) 2007-2013 VMware, Inc.  All rights reserved.''
+     The Initial Developer of the Original Code is GoPivotal, Inc.
+     Copyright (c) 2007-2015 Pivotal Software, Inc.  All rights reserved.''
 
      [NOTE: The text of this Exhibit A may differ slightly from the text of
      the notices in the Source Code files of the Original Code. You should
@@ -861,7 +862,7 @@
 
 --------------------------------------------------------------------------
 
-Copyright (c) 2007-2009 IOLA and Ole Laursen
+Copyright (c) 2007-2013 IOLA and Ole Laursen
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
@@ -1394,8 +1395,8 @@
 
      The Original Code is RabbitMQ.
 
-     The Initial Developer of the Original Code is VMware, Inc.
-     Copyright (c) 2007-2013 VMware, Inc.  All rights reserved.''
+     The Initial Developer of the Original Code is GoPivotal, Inc.
+     Copyright (c) 2007-2014 GoPivotal, Inc.  All rights reserved.''
 
      [NOTE: The text of this Exhibit A may differ slightly from the text of
      the notices in the Source Code files of the Original Code. You should
--- a/components/rabbitmq/rabbitmq.p5m	Fri Feb 05 11:09:10 2016 -0800
+++ b/components/rabbitmq/rabbitmq.p5m	Fri Feb 05 17:54:17 2016 -0500
@@ -18,12 +18,12 @@
 #
 # CDDL HEADER END
 #
-# Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
+
+#
+# Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
 #
 
-# XXX web/server/ejabberd is a similar kind of program; should that move here?
-
-<transform path=usr/lib/rabbitmq/bin/(.*) -> set action.hash scripts/%<1>>
+<transform path=usr/lib/rabbitmq/bin/(.*) -> set action.hash sbin/%<1>>
 <transform path=usr/lib/rabbitmq/ebin/(.*) -> set action.hash ebin/%<1>>
 <transform path=usr/lib/rabbitmq/include/(.*) -> set action.hash include/%<1>>
 <transform path=usr/lib/rabbitmq/plugins/(.*) -> set action.hash plugins/%<1>>
@@ -44,11 +44,13 @@
 set name=org.opensolaris.arc-caseid value=PSARC/2013/175
 set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
 #
-dir  path=etc/rabbitmq
-#
-file rabbitmq.xml path=lib/svc/manifest/application/rabbitmq.xml
-file svc-rabbitmq path=lib/svc/method/rabbitmq
-file rmq-mplex path=usr/bin/rabbitmq-plugins
+file files/rabbitmq-env.conf path=etc/rabbitmq/rabbitmq-env.conf mode=0644 \
+    overlay=allow preserve=renamenew
+file files/rabbitmq.config path=etc/rabbitmq/rabbitmq.config mode=0644 \
+    overlay=allow preserve=renamenew
+file files/rabbitmq.xml path=lib/svc/manifest/application/rabbitmq.xml
+file files/svc-rabbitmq path=lib/svc/method/rabbitmq
+file files/rmq-mplex path=usr/bin/rabbitmq-plugins
 link path=usr/bin/rabbitmq-server target=rabbitmq-plugins
 link path=usr/bin/rabbitmqctl target=rabbitmq-plugins
 file path=usr/lib/rabbitmq/bin/rabbitmq-defaults
@@ -63,15 +65,13 @@
 file path=usr/lib/rabbitmq/ebin/delegate_sup.beam
 file path=usr/lib/rabbitmq/ebin/dtree.beam
 file path=usr/lib/rabbitmq/ebin/file_handle_cache.beam
+file path=usr/lib/rabbitmq/ebin/file_handle_cache_stats.beam
 file path=usr/lib/rabbitmq/ebin/gatherer.beam
 file path=usr/lib/rabbitmq/ebin/gen_server2.beam
 file path=usr/lib/rabbitmq/ebin/gm.beam
-file path=usr/lib/rabbitmq/ebin/gm_soak_test.beam
-file path=usr/lib/rabbitmq/ebin/gm_speed_test.beam
-file path=usr/lib/rabbitmq/ebin/gm_tests.beam
 file path=usr/lib/rabbitmq/ebin/lqueue.beam
 file path=usr/lib/rabbitmq/ebin/mirrored_supervisor.beam
-file path=usr/lib/rabbitmq/ebin/mirrored_supervisor_tests.beam
+file path=usr/lib/rabbitmq/ebin/mirrored_supervisor_sups.beam
 file path=usr/lib/rabbitmq/ebin/mnesia_sync.beam
 file path=usr/lib/rabbitmq/ebin/mochijson2.beam
 file path=usr/lib/rabbitmq/ebin/mochinum.beam
@@ -86,30 +86,38 @@
 file path=usr/lib/rabbitmq/ebin/rabbit_amqqueue.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_amqqueue_process.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_amqqueue_sup.beam
+file path=usr/lib/rabbitmq/ebin/rabbit_amqqueue_sup_sup.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_app.in
-file path=usr/lib/rabbitmq/ebin/rabbit_auth_backend.beam
+file path=usr/lib/rabbitmq/ebin/rabbit_auth_backend_dummy.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_auth_backend_internal.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_auth_mechanism.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_auth_mechanism_amqplain.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_auth_mechanism_cr_demo.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_auth_mechanism_plain.beam
+file path=usr/lib/rabbitmq/ebin/rabbit_authn_backend.beam
+file path=usr/lib/rabbitmq/ebin/rabbit_authz_backend.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_autoheal.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_backing_queue.beam
-file path=usr/lib/rabbitmq/ebin/rabbit_backing_queue_qc.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_basic.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_binary_generator.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_binary_parser.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_binding.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_channel.beam
+file path=usr/lib/rabbitmq/ebin/rabbit_channel_interceptor.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_channel_sup.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_channel_sup_sup.beam
+file path=usr/lib/rabbitmq/ebin/rabbit_cli.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_client_sup.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_command_assembler.beam
+file path=usr/lib/rabbitmq/ebin/rabbit_connection_helper_sup.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_connection_sup.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_control_main.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_ctl_usage.beam
+file path=usr/lib/rabbitmq/ebin/rabbit_dead_letter.beam
+file path=usr/lib/rabbitmq/ebin/rabbit_diagnostics.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_direct.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_disk_monitor.beam
+file path=usr/lib/rabbitmq/ebin/rabbit_epmd_monitor.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_error_logger.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_error_logger_file_h.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_event.beam
@@ -138,10 +146,10 @@
 file path=usr/lib/rabbitmq/ebin/rabbit_mirror_queue_mode_exactly.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_mirror_queue_mode_nodes.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_mirror_queue_slave.beam
-file path=usr/lib/rabbitmq/ebin/rabbit_mirror_queue_slave_sup.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_mirror_queue_sync.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_misc.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_mnesia.beam
+file path=usr/lib/rabbitmq/ebin/rabbit_mnesia_rename.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_msg_file.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_msg_store.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_msg_store_ets_index.beam
@@ -155,24 +163,27 @@
 file path=usr/lib/rabbitmq/ebin/rabbit_plugins.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_plugins_main.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_plugins_usage.beam
+file path=usr/lib/rabbitmq/ebin/rabbit_policies.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_policy.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_policy_validator.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_prelaunch.beam
+file path=usr/lib/rabbitmq/ebin/rabbit_prequeue.beam
+file path=usr/lib/rabbitmq/ebin/rabbit_priority_queue.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_queue_collector.beam
+file path=usr/lib/rabbitmq/ebin/rabbit_queue_consumers.beam
+file path=usr/lib/rabbitmq/ebin/rabbit_queue_decorator.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_queue_index.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_reader.beam
+file path=usr/lib/rabbitmq/ebin/rabbit_recovery_terms.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_registry.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_restartable_sup.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_router.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_runtime_parameter.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_runtime_parameters.beam
-file path=usr/lib/rabbitmq/ebin/rabbit_runtime_parameters_test.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_sasl_report_file_h.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_ssl.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_sup.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_table.beam
-file path=usr/lib/rabbitmq/ebin/rabbit_tests.beam
-file path=usr/lib/rabbitmq/ebin/rabbit_tests_event_receiver.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_trace.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_types.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_upgrade.beam
@@ -182,53 +193,53 @@
 file path=usr/lib/rabbitmq/ebin/rabbit_vhost.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_vm.beam
 file path=usr/lib/rabbitmq/ebin/rabbit_writer.beam
+file path=usr/lib/rabbitmq/ebin/ssl_compat.beam
+file path=usr/lib/rabbitmq/ebin/supervised_lifecycle.beam
 file path=usr/lib/rabbitmq/ebin/supervisor2.beam
-file path=usr/lib/rabbitmq/ebin/supervisor2_tests.beam
 file path=usr/lib/rabbitmq/ebin/tcp_acceptor.beam
 file path=usr/lib/rabbitmq/ebin/tcp_acceptor_sup.beam
 file path=usr/lib/rabbitmq/ebin/tcp_listener.beam
 file path=usr/lib/rabbitmq/ebin/tcp_listener_sup.beam
-file path=usr/lib/rabbitmq/ebin/test_sup.beam
+file path=usr/lib/rabbitmq/ebin/time_compat.beam
+file path=usr/lib/rabbitmq/ebin/truncate.beam
 file path=usr/lib/rabbitmq/ebin/vm_memory_monitor.beam
 file path=usr/lib/rabbitmq/ebin/worker_pool.beam
 file path=usr/lib/rabbitmq/ebin/worker_pool_sup.beam
 file path=usr/lib/rabbitmq/ebin/worker_pool_worker.beam
 file path=usr/lib/rabbitmq/include/gm_specs.hrl
 file path=usr/lib/rabbitmq/include/rabbit.hrl
+file path=usr/lib/rabbitmq/include/rabbit_cli.hrl
 file path=usr/lib/rabbitmq/include/rabbit_framing.hrl
 file path=usr/lib/rabbitmq/include/rabbit_msg_store.hrl
 file path=usr/lib/rabbitmq/plugins/README
-file path=usr/lib/rabbitmq/plugins/amqp_client-0.0.0.ez
-file path=usr/lib/rabbitmq/plugins/cowboy-0.5.0-rmq0.0.0-git4b93c2d.ez
-file path=usr/lib/rabbitmq/plugins/eldap-0.0.0-gite309de4.ez
-file path=usr/lib/rabbitmq/plugins/mochiweb-2.3.1-rmq0.0.0-gitd541e9a.ez
-file path=usr/lib/rabbitmq/plugins/rabbitmq_amqp1_0-0.0.0.ez
-file path=usr/lib/rabbitmq/plugins/rabbitmq_auth_backend_ldap-0.0.0.ez
-file path=usr/lib/rabbitmq/plugins/rabbitmq_auth_mechanism_ssl-0.0.0.ez
-file path=usr/lib/rabbitmq/plugins/rabbitmq_consistent_hash_exchange-0.0.0.ez
-file path=usr/lib/rabbitmq/plugins/rabbitmq_federation-0.0.0.ez
-file path=usr/lib/rabbitmq/plugins/rabbitmq_federation_management-0.0.0.ez
-file path=usr/lib/rabbitmq/plugins/rabbitmq_jsonrpc-0.0.0.ez
-file path=usr/lib/rabbitmq/plugins/rabbitmq_jsonrpc_channel-0.0.0.ez
-file path=usr/lib/rabbitmq/plugins/rabbitmq_jsonrpc_channel_examples-0.0.0.ez
-file path=usr/lib/rabbitmq/plugins/rabbitmq_management-0.0.0.ez
-file path=usr/lib/rabbitmq/plugins/rabbitmq_management_agent-0.0.0.ez
-file path=usr/lib/rabbitmq/plugins/rabbitmq_management_visualiser-0.0.0.ez
-file path=usr/lib/rabbitmq/plugins/rabbitmq_mqtt-0.0.0.ez
-file path=usr/lib/rabbitmq/plugins/rabbitmq_shovel-0.0.0.ez
-file path=usr/lib/rabbitmq/plugins/rabbitmq_shovel_management-0.0.0.ez
-file path=usr/lib/rabbitmq/plugins/rabbitmq_stomp-0.0.0.ez
-file path=usr/lib/rabbitmq/plugins/rabbitmq_tracing-0.0.0.ez
-file path=usr/lib/rabbitmq/plugins/rabbitmq_web_dispatch-0.0.0.ez
-file path=usr/lib/rabbitmq/plugins/rabbitmq_web_stomp-0.0.0.ez
-file path=usr/lib/rabbitmq/plugins/rabbitmq_web_stomp_examples-0.0.0.ez
-file path=usr/lib/rabbitmq/plugins/rfc4627_jsonrpc-0.0.0-git7ab174b.ez
-file path=usr/lib/rabbitmq/plugins/sockjs-0.3.4-rmq0.0.0-git3132eb9.ez
-file path=usr/lib/rabbitmq/plugins/webmachine-1.9.1-rmq0.0.0-git52e62bc.ez
-file rabbitmq-plugins.1 path=usr/share/man/man1/rabbitmq-plugins.1
-file rabbitmq-server.1 path=usr/share/man/man1/rabbitmq-server.1
-file rabbitmqctl.1 path=usr/share/man/man1/rabbitmqctl.1
-file rabbitmq-env.conf.5 path=usr/share/man/man5/rabbitmq-env.conf.5
+file path=usr/lib/rabbitmq/plugins/amqp_client-$(COMPONENT_VERSION).ez
+file path=usr/lib/rabbitmq/plugins/cowboy-0.5.0-rmq$(COMPONENT_VERSION)-git4b93c2d.ez
+file path=usr/lib/rabbitmq/plugins/eldap-$(COMPONENT_VERSION)-gite309de4.ez
+file path=usr/lib/rabbitmq/plugins/mochiweb-2.7.0-rmq$(COMPONENT_VERSION)-git680dba8.ez
+file path=usr/lib/rabbitmq/plugins/rabbitmq_amqp1_0-$(COMPONENT_VERSION).ez
+file path=usr/lib/rabbitmq/plugins/rabbitmq_auth_backend_ldap-$(COMPONENT_VERSION).ez
+file path=usr/lib/rabbitmq/plugins/rabbitmq_auth_mechanism_ssl-$(COMPONENT_VERSION).ez
+file path=usr/lib/rabbitmq/plugins/rabbitmq_consistent_hash_exchange-$(COMPONENT_VERSION).ez
+file path=usr/lib/rabbitmq/plugins/rabbitmq_federation-$(COMPONENT_VERSION).ez
+file path=usr/lib/rabbitmq/plugins/rabbitmq_federation_management-$(COMPONENT_VERSION).ez
+file path=usr/lib/rabbitmq/plugins/rabbitmq_management-$(COMPONENT_VERSION).ez
+file path=usr/lib/rabbitmq/plugins/rabbitmq_management_agent-$(COMPONENT_VERSION).ez
+file path=usr/lib/rabbitmq/plugins/rabbitmq_management_visualiser-$(COMPONENT_VERSION).ez
+file path=usr/lib/rabbitmq/plugins/rabbitmq_mqtt-$(COMPONENT_VERSION).ez
+file path=usr/lib/rabbitmq/plugins/rabbitmq_shovel-$(COMPONENT_VERSION).ez
+file path=usr/lib/rabbitmq/plugins/rabbitmq_shovel_management-$(COMPONENT_VERSION).ez
+file path=usr/lib/rabbitmq/plugins/rabbitmq_stomp-$(COMPONENT_VERSION).ez
+file path=usr/lib/rabbitmq/plugins/rabbitmq_test-$(COMPONENT_VERSION).ez
+file path=usr/lib/rabbitmq/plugins/rabbitmq_tracing-$(COMPONENT_VERSION).ez
+file path=usr/lib/rabbitmq/plugins/rabbitmq_web_dispatch-$(COMPONENT_VERSION).ez
+file path=usr/lib/rabbitmq/plugins/rabbitmq_web_stomp-$(COMPONENT_VERSION).ez
+file path=usr/lib/rabbitmq/plugins/rabbitmq_web_stomp_examples-$(COMPONENT_VERSION).ez
+file path=usr/lib/rabbitmq/plugins/sockjs-0.3.4-rmq$(COMPONENT_VERSION)-git3132eb9.ez
+file path=usr/lib/rabbitmq/plugins/webmachine-1.10.3-rmq$(COMPONENT_VERSION)-gite9359c7.ez
+file path=usr/share/man/man1/rabbitmq-plugins.1
+file path=usr/share/man/man1/rabbitmq-server.1
+file path=usr/share/man/man1/rabbitmqctl.1
+file path=usr/share/man/man5/rabbitmq-env.conf.5
 dir  path=var/lib/rabbitmq owner=rabbitmq
 dir  path=var/log/rabbitmq owner=rabbitmq
 #
--- a/components/rabbitmq/rabbitmq.xml	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
-<!--
-
- Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at usr/src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
- 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='rabbitmq'>
-
-<service
-	name='application/rabbitmq'
-	type='service'
-	version='1'>
-
-	<!-- Each node probably should be its own instance -->
-	<create_default_instance enabled='false' />
-
-	<dependency
-		name='fs'
-		grouping='require_any'
-		restart_on='none'
-		type='service'>
-		<service_fmri value='svc:/system/filesystem/minimal' />
-	</dependency>
-
-	<dependency name='network'
-		grouping='require_any'
-		restart_on='error'
-		type='service'>
-		<service_fmri value='svc:/milestone/network' />
-	</dependency>
-
-	<method_context>
-		<method_credential user='rabbitmq'
-			privileges='basic,{zone}:/system/volatile/rabbitmq' />
-	</method_context>
-
-	<exec_method
-		type='method'
-		name='start'
-		exec='/lib/svc/method/rabbitmq %m'
-		timeout_seconds='300'>
-	</exec_method>
-
-	<exec_method
-		type='method'
-		name='stop'
-		exec='/lib/svc/method/rabbitmq %m'
-		timeout_seconds='300'>
-	</exec_method>
-
-	<stability value='Unstable' />
-
-	<template>
-		<common_name>
-			<loctext xml:lang='C'>
-			RabbitMQ: an AMQP message broker
-			</loctext>
-		</common_name>
-		<documentation>
-			<manpage title='rabbitmq-server' section='1' />
-		</documentation>
-	</template>
-</service>
-
-</service_bundle>
--- a/components/rabbitmq/rmq-mplex	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-#!/bin/sh
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
-#
-
-exec /usr/lib/rabbitmq/bin/${0##*/} "$@"
--- a/components/rabbitmq/svc-rabbitmq	Fri Feb 05 11:09:10 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-#!/usr/sbin/sh
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-
-#
-# Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
-#
-
-. /lib/svc/share/smf_include.sh
-
-RABBIT_SERVER=/usr/bin/rabbitmq-server
-RABBIT_CTL=/usr/bin/rabbitmqctl
-
-if [[ -z "$SMF_FMRI" ]]; then
-	echo "This script can only be invoked by smf(5)"
-	exit $SMF_EXIT_ERR_NOSMF
-fi
-
-# rabbitmq-env handles pulling in configuration from a number of sources.  Out
-# of that, the server builds more configuration variables if they haven't
-# already been set.  getenv() gives us the variable as the server would see it.
-# It's up to the caller to massage it as the server would.
-getenv() {
-	# Has the RABBITMQ_ version been set?  If so, that takes precedence.
-	r=$(eval print \$RABBITMQ_${1})
-	if [[ -n $r ]]; then
-		print $r
-	else
-		print $(
-			SCRIPT_DIR=/usr/lib/rabbitmq/bin;
-			. /usr/lib/rabbitmq/bin/rabbitmq-env;
-			eval print \${$1}
-		)
-	fi
-}
-
-# If RABBITMQ_NODENAME isn't set in the environment, then use the FMRI instance
-# name, unless the instance name is "default", in which case we use the default
-# from the configuration files.  If the instance name doesn't have an @ in it,
-# then append the hostname.
-if [[ -z $RABBITMQ_NODENAME ]]; then
-	INSTANCE=${SMF_FMRI##*:}
-	if [[ $INSTANCE == default ]]; then
-		INSTANCE=$(getenv NODENAME)
-	fi
-	if [[ $INSTANCE != *@* ]]; then
-		INSTANCE=$INSTANCE@$(hostname)
-	fi
-	export RABBITMQ_NODENAME=$INSTANCE
-fi
-
-# XXX Why isn't HOME set for us?
-export HOME=/var/lib/rabbitmq
-
-case "$1" in
-"start")
-	$RABBIT_SERVER -detached
-	;;
-
-"stop")
-	$RABBIT_CTL -n $RABBITMQ_NODENAME stop
-	# XXX epmd should be in a separate SMF service (16749936); for now,
-	# though, be sure to kill it here.
-	epmd_pid=$(pgrep -c $(svcs -H -o ctid $SMF_FMRI) epmd)
-	if [[ -n $epmd_pid ]]; then
-		sleep 2
-		epmd -kill
-	fi
-	;;
-
-*)
-	echo "Usage: $0 { start | stop }"
-	exit $SMF_EXIT_ERR_CONFIG
-	;;
-esac
-
-exit $SMF_EXIT_OK
--- a/transforms/python-3-groups	Fri Feb 05 11:09:10 2016 -0800
+++ b/transforms/python-3-groups	Fri Feb 05 17:54:17 2016 -0500
@@ -33,6 +33,7 @@
 <transform depend fmri=library/python/boto-34 type=group -> drop>
 <transform depend fmri=library/python/coverage-34 type=group -> drop>
 <transform depend fmri=library/python/django-34 type=group -> drop>
+<transform depend fmri=library/python/futures-34 type=group -> drop>
 <transform depend fmri=library/python/keystoneclient-34 type=group -> drop>
 <transform depend fmri=library/python/librabbitmq-34 type=group -> drop>
 <transform depend fmri=library/python/m2crypto-34 type=group -> drop>
@@ -42,6 +43,7 @@
 <transform depend fmri=library/python/boto-35 type=group -> drop>
 <transform depend fmri=library/python/coverage-35 type=group -> drop>
 <transform depend fmri=library/python/django-35 type=group -> drop>
+<transform depend fmri=library/python/futures-35 type=group -> drop>
 <transform depend fmri=library/python/keystoneclient-35 type=group -> drop>
 <transform depend fmri=library/python/librabbitmq-35 type=group -> drop>
 <transform depend fmri=library/python/m2crypto-35 type=group -> drop>
--- a/transforms/standard-python-libraries	Fri Feb 05 11:09:10 2016 -0800
+++ b/transforms/standard-python-libraries	Fri Feb 05 17:54:17 2016 -0500
@@ -32,6 +32,8 @@
 <transform depend fmri=library/python/argparse-35 -> drop>
 <transform depend fmri=library/python/enum-34 -> drop>
 <transform depend fmri=library/python/enum-35 -> drop>
+<transform depend fmri=library/python/futures-34 -> drop>
+<transform depend fmri=library/python/futures-35 -> drop>
 <transform depend fmri=library/python/importlib-27 -> drop>
 <transform depend fmri=library/python/importlib-34 -> drop>
 <transform depend fmri=library/python/importlib-35 -> drop>