Merge "Disable nova calls from tempest when heat is enabled"
diff --git a/data/devstack-plugins-registry.footer b/data/devstack-plugins-registry.footer
deleted file mode 100644
index 669cb8d..0000000
--- a/data/devstack-plugins-registry.footer
+++ /dev/null
@@ -1,28 +0,0 @@
-
-Drivers
-=======
-
-+--------------------+-------------------------------------------------+------------------+
-|Plugin Name |URL |Comments |
-+--------------------+-------------------------------------------------+------------------+
-|dragonflow |git://git.openstack.org/openstack/dragonflow |[d1]_ |
-+--------------------+-------------------------------------------------+------------------+
-|odl |git://git.openstack.org/openstack/networking-odl |[d2]_ |
-+--------------------+-------------------------------------------------+------------------+
-
-.. [d1] demonstrates example of installing 3rd party SDN controller
-.. [d2] demonstrates a pretty advanced set of modes that that allow
- one to run OpenDayLight either from a pre-existing install, or
- also from source
-
-Alternate Configs
-=================
-
-+-------------+------------------------------------------------------------+------------+
-| Plugin Name | URL | Comments |
-| | | |
-+-------------+------------------------------------------------------------+------------+
-|glusterfs |git://git.openstack.org/openstack/devstack-plugin-glusterfs | |
-+-------------+------------------------------------------------------------+------------+
-| | | |
-+-------------+------------------------------------------------------------+------------+
diff --git a/data/devstack-plugins-registry.header b/data/devstack-plugins-registry.header
index 9f8a994..46d5e60 100644
--- a/data/devstack-plugins-registry.header
+++ b/data/devstack-plugins-registry.header
@@ -1,3 +1,8 @@
+..
+ Note to patch submitters: this file is covered by a periodic proposal
+ job. You should edit the files data/devstack-plugins-registry.footer
+ data/devstack-plugins-registry.header instead of this one.
+
==========================
DevStack Plugin Registry
==========================
@@ -14,6 +19,6 @@
namespace, which includes but is not limited to official OpenStack
projects.
-+------------------+------------------------------------------------------------+------------+
-|Plugin Name |URL |Date |
-+------------------+------------------------------------------------------------+------------+
++----------------------------+-------------------------------------------------------------------------+
+|Plugin Name |URL |
++----------------------------+-------------------------------------------------------------------------+
diff --git a/doc/source/plugin-registry.rst b/doc/source/plugin-registry.rst
index b96883a..29b743f 100644
--- a/doc/source/plugin-registry.rst
+++ b/doc/source/plugin-registry.rst
@@ -1,7 +1,7 @@
..
- Note to reviewers: the intent of this file is to be easy for
- community members to update. As such fast approving (single core +2)
- is fine as long as you've identified that the plugin listed actually exists.
+ Note to patch submitters: this file is covered by a periodic proposal
+ job. You should edit the files data/devstack-plugins-registry.footer
+ data/devstack-plugins-registry.header instead of this one.
==========================
DevStack Plugin Registry
@@ -12,44 +12,186 @@
exist. Any project that wishes to list their plugin here is welcomed
to.
-Official OpenStack Projects
-===========================
+Detected Plugins
+================
-The following are plugins that exist for official OpenStack projects.
+The following are plugins that a script has found in the openstack/
+namespace, which includes but is not limited to official OpenStack
+projects.
-+------------------+---------------------------------------------+--------------------+
-|Plugin Name |URL |Comments |
-+------------------+---------------------------------------------+--------------------+
-|aodh |git://git.openstack.org/openstack/aodh | alarming |
-+------------------+---------------------------------------------+--------------------+
-|barbican |git://git.openstack.org/openstack/barbican | key management |
-+------------------+---------------------------------------------+--------------------+
-|ceilometer |git://git.openstack.org/openstack/ceilometer | metering |
-+------------------+---------------------------------------------+--------------------+
-|congress |git://git.openstack.org/openstack/congress | governance |
-+------------------+---------------------------------------------+--------------------+
-|cue |git://git.openstack.org/openstack/cue | message-broker |
-+------------------+---------------------------------------------+--------------------+
-|gnocchi |git://git.openstack.org/openstack/gnocchi | metric |
-+------------------+---------------------------------------------+--------------------+
-|ironic |git://git.openstack.org/openstack/ironic | baremetal |
-+------------------+---------------------------------------------+--------------------+
-|magnum |git://git.openstack.org/openstack/magnum | |
-+------------------+---------------------------------------------+--------------------+
-|manila |git://git.openstack.org/openstack/manila | file shares |
-+------------------+---------------------------------------------+--------------------+
-|mistral |git://git.openstack.org/openstack/mistral | |
-+------------------+---------------------------------------------+--------------------+
-|rally |git://git.openstack.org/openstack/rally | |
-+------------------+---------------------------------------------+--------------------+
-|sahara |git://git.openstack.org/openstack/sahara | |
-+------------------+---------------------------------------------+--------------------+
-|trove |git://git.openstack.org/openstack/trove | |
-+------------------+---------------------------------------------+--------------------+
-|zaqar |git://git.openstack.org/openstack/zaqar | |
-+------------------+---------------------------------------------+--------------------+
-
-
++----------------------------+-------------------------------------------------------------------------+
+|Plugin Name |URL |
++----------------------------+-------------------------------------------------------------------------+
+|aodh |git://git.openstack.org/openstack/aodh |
++----------------------------+-------------------------------------------------------------------------+
+|app-catalog-ui |git://git.openstack.org/openstack/app-catalog-ui |
++----------------------------+-------------------------------------------------------------------------+
+|astara |git://git.openstack.org/openstack/astara |
++----------------------------+-------------------------------------------------------------------------+
+|barbican |git://git.openstack.org/openstack/barbican |
++----------------------------+-------------------------------------------------------------------------+
+|blazar |git://git.openstack.org/openstack/blazar |
++----------------------------+-------------------------------------------------------------------------+
+|ceilometer |git://git.openstack.org/openstack/ceilometer |
++----------------------------+-------------------------------------------------------------------------+
+|ceilometer-powervm |git://git.openstack.org/openstack/ceilometer-powervm |
++----------------------------+-------------------------------------------------------------------------+
+|cerberus |git://git.openstack.org/openstack/cerberus |
++----------------------------+-------------------------------------------------------------------------+
+|cloudkitty |git://git.openstack.org/openstack/cloudkitty |
++----------------------------+-------------------------------------------------------------------------+
+|collectd-ceilometer-plugin |git://git.openstack.org/openstack/collectd-ceilometer-plugin |
++----------------------------+-------------------------------------------------------------------------+
+|congress |git://git.openstack.org/openstack/congress |
++----------------------------+-------------------------------------------------------------------------+
+|cue |git://git.openstack.org/openstack/cue |
++----------------------------+-------------------------------------------------------------------------+
+|designate |git://git.openstack.org/openstack/designate |
++----------------------------+-------------------------------------------------------------------------+
+|devstack-plugin-amqp1 |git://git.openstack.org/openstack/devstack-plugin-amqp1 |
++----------------------------+-------------------------------------------------------------------------+
+|devstack-plugin-bdd |git://git.openstack.org/openstack/devstack-plugin-bdd |
++----------------------------+-------------------------------------------------------------------------+
+|devstack-plugin-ceph |git://git.openstack.org/openstack/devstack-plugin-ceph |
++----------------------------+-------------------------------------------------------------------------+
+|devstack-plugin-glusterfs |git://git.openstack.org/openstack/devstack-plugin-glusterfs |
++----------------------------+-------------------------------------------------------------------------+
+|devstack-plugin-hdfs |git://git.openstack.org/openstack/devstack-plugin-hdfs |
++----------------------------+-------------------------------------------------------------------------+
+|devstack-plugin-pika |git://git.openstack.org/openstack/devstack-plugin-pika |
++----------------------------+-------------------------------------------------------------------------+
+|devstack-plugin-sheepdog |git://git.openstack.org/openstack/devstack-plugin-sheepdog |
++----------------------------+-------------------------------------------------------------------------+
+|devstack-plugin-zmq |git://git.openstack.org/openstack/devstack-plugin-zmq |
++----------------------------+-------------------------------------------------------------------------+
+|dragonflow |git://git.openstack.org/openstack/dragonflow |
++----------------------------+-------------------------------------------------------------------------+
+|drbd-devstack |git://git.openstack.org/openstack/drbd-devstack |
++----------------------------+-------------------------------------------------------------------------+
+|ec2-api |git://git.openstack.org/openstack/ec2-api |
++----------------------------+-------------------------------------------------------------------------+
+|freezer |git://git.openstack.org/openstack/freezer |
++----------------------------+-------------------------------------------------------------------------+
+|freezer-api |git://git.openstack.org/openstack/freezer-api |
++----------------------------+-------------------------------------------------------------------------+
+|freezer-web-ui |git://git.openstack.org/openstack/freezer-web-ui |
++----------------------------+-------------------------------------------------------------------------+
+|gce-api |git://git.openstack.org/openstack/gce-api |
++----------------------------+-------------------------------------------------------------------------+
+|gnocchi |git://git.openstack.org/openstack/gnocchi |
++----------------------------+-------------------------------------------------------------------------+
+|ironic |git://git.openstack.org/openstack/ironic |
++----------------------------+-------------------------------------------------------------------------+
+|ironic-inspector |git://git.openstack.org/openstack/ironic-inspector |
++----------------------------+-------------------------------------------------------------------------+
+|kingbird |git://git.openstack.org/openstack/kingbird |
++----------------------------+-------------------------------------------------------------------------+
+|kuryr |git://git.openstack.org/openstack/kuryr |
++----------------------------+-------------------------------------------------------------------------+
+|magnum |git://git.openstack.org/openstack/magnum |
++----------------------------+-------------------------------------------------------------------------+
+|manila |git://git.openstack.org/openstack/manila |
++----------------------------+-------------------------------------------------------------------------+
+|mistral |git://git.openstack.org/openstack/mistral |
++----------------------------+-------------------------------------------------------------------------+
+|monasca-api |git://git.openstack.org/openstack/monasca-api |
++----------------------------+-------------------------------------------------------------------------+
+|murano |git://git.openstack.org/openstack/murano |
++----------------------------+-------------------------------------------------------------------------+
+|networking-6wind |git://git.openstack.org/openstack/networking-6wind |
++----------------------------+-------------------------------------------------------------------------+
+|networking-bagpipe |git://git.openstack.org/openstack/networking-bagpipe |
++----------------------------+-------------------------------------------------------------------------+
+|networking-bgpvpn |git://git.openstack.org/openstack/networking-bgpvpn |
++----------------------------+-------------------------------------------------------------------------+
+|networking-calico |git://git.openstack.org/openstack/networking-calico |
++----------------------------+-------------------------------------------------------------------------+
+|networking-cisco |git://git.openstack.org/openstack/networking-cisco |
++----------------------------+-------------------------------------------------------------------------+
+|networking-fortinet |git://git.openstack.org/openstack/networking-fortinet |
++----------------------------+-------------------------------------------------------------------------+
+|networking-generic-switch |git://git.openstack.org/openstack/networking-generic-switch |
++----------------------------+-------------------------------------------------------------------------+
+|networking-infoblox |git://git.openstack.org/openstack/networking-infoblox |
++----------------------------+-------------------------------------------------------------------------+
+|networking-l2gw |git://git.openstack.org/openstack/networking-l2gw |
++----------------------------+-------------------------------------------------------------------------+
+|networking-midonet |git://git.openstack.org/openstack/networking-midonet |
++----------------------------+-------------------------------------------------------------------------+
+|networking-mlnx |git://git.openstack.org/openstack/networking-mlnx |
++----------------------------+-------------------------------------------------------------------------+
+|networking-nec |git://git.openstack.org/openstack/networking-nec |
++----------------------------+-------------------------------------------------------------------------+
+|networking-odl |git://git.openstack.org/openstack/networking-odl |
++----------------------------+-------------------------------------------------------------------------+
+|networking-ofagent |git://git.openstack.org/openstack/networking-ofagent |
++----------------------------+-------------------------------------------------------------------------+
+|networking-ovn |git://git.openstack.org/openstack/networking-ovn |
++----------------------------+-------------------------------------------------------------------------+
+|networking-ovs-dpdk |git://git.openstack.org/openstack/networking-ovs-dpdk |
++----------------------------+-------------------------------------------------------------------------+
+|networking-plumgrid |git://git.openstack.org/openstack/networking-plumgrid |
++----------------------------+-------------------------------------------------------------------------+
+|networking-powervm |git://git.openstack.org/openstack/networking-powervm |
++----------------------------+-------------------------------------------------------------------------+
+|networking-sfc |git://git.openstack.org/openstack/networking-sfc |
++----------------------------+-------------------------------------------------------------------------+
+|networking-vsphere |git://git.openstack.org/openstack/networking-vsphere |
++----------------------------+-------------------------------------------------------------------------+
+|neutron |git://git.openstack.org/openstack/neutron |
++----------------------------+-------------------------------------------------------------------------+
+|neutron-lbaas |git://git.openstack.org/openstack/neutron-lbaas |
++----------------------------+-------------------------------------------------------------------------+
+|neutron-lbaas-dashboard |git://git.openstack.org/openstack/neutron-lbaas-dashboard |
++----------------------------+-------------------------------------------------------------------------+
+|neutron-vpnaas |git://git.openstack.org/openstack/neutron-vpnaas |
++----------------------------+-------------------------------------------------------------------------+
+|nova-docker |git://git.openstack.org/openstack/nova-docker |
++----------------------------+-------------------------------------------------------------------------+
+|nova-powervm |git://git.openstack.org/openstack/nova-powervm |
++----------------------------+-------------------------------------------------------------------------+
+|octavia |git://git.openstack.org/openstack/octavia |
++----------------------------+-------------------------------------------------------------------------+
+|osprofiler |git://git.openstack.org/openstack/osprofiler |
++----------------------------+-------------------------------------------------------------------------+
+|rally |git://git.openstack.org/openstack/rally |
++----------------------------+-------------------------------------------------------------------------+
+|sahara |git://git.openstack.org/openstack/sahara |
++----------------------------+-------------------------------------------------------------------------+
+|sahara-dashboard |git://git.openstack.org/openstack/sahara-dashboard |
++----------------------------+-------------------------------------------------------------------------+
+|scalpels |git://git.openstack.org/openstack/scalpels |
++----------------------------+-------------------------------------------------------------------------+
+|searchlight |git://git.openstack.org/openstack/searchlight |
++----------------------------+-------------------------------------------------------------------------+
+|senlin |git://git.openstack.org/openstack/senlin |
++----------------------------+-------------------------------------------------------------------------+
+|smaug |git://git.openstack.org/openstack/smaug |
++----------------------------+-------------------------------------------------------------------------+
+|solum |git://git.openstack.org/openstack/solum |
++----------------------------+-------------------------------------------------------------------------+
+|tacker |git://git.openstack.org/openstack/tacker |
++----------------------------+-------------------------------------------------------------------------+
+|tap-as-a-service |git://git.openstack.org/openstack/tap-as-a-service |
++----------------------------+-------------------------------------------------------------------------+
+|tricircle |git://git.openstack.org/openstack/tricircle |
++----------------------------+-------------------------------------------------------------------------+
+|trove |git://git.openstack.org/openstack/trove |
++----------------------------+-------------------------------------------------------------------------+
+|trove-dashboard |git://git.openstack.org/openstack/trove-dashboard |
++----------------------------+-------------------------------------------------------------------------+
+|vitrage |git://git.openstack.org/openstack/vitrage |
++----------------------------+-------------------------------------------------------------------------+
+|vitrage-dashboard |git://git.openstack.org/openstack/vitrage-dashboard |
++----------------------------+-------------------------------------------------------------------------+
+|vmware-nsx |git://git.openstack.org/openstack/vmware-nsx |
++----------------------------+-------------------------------------------------------------------------+
+|watcher |git://git.openstack.org/openstack/watcher |
++----------------------------+-------------------------------------------------------------------------+
+|watcher-dashboard |git://git.openstack.org/openstack/watcher-dashboard |
++----------------------------+-------------------------------------------------------------------------+
+|zaqar |git://git.openstack.org/openstack/zaqar |
++----------------------------+-------------------------------------------------------------------------+
Drivers
=======
@@ -78,34 +220,3 @@
+-------------+------------------------------------------------------------+------------+
| | | |
+-------------+------------------------------------------------------------+------------+
-
-Additional Services
-===================
-
-+-----------------+------------------------------------------------------------+------------+
-| Plugin Name | URL | Comments |
-| | | |
-+-----------------+------------------------------------------------------------+------------+
-|amqp1 |git://git.openstack.org/openstack/devstack-plugin-amqp1 | |
-+-----------------+------------------------------------------------------------+------------+
-|bdd |git://git.openstack.org/openstack/devstack-plugin-bdd | |
-+-----------------+------------------------------------------------------------+------------+
-|ec2-api |git://git.openstack.org/openstack/ec2-api |[as1]_ |
-+-----------------+------------------------------------------------------------+------------+
-|glusterfs |git://git.openstack.org/openstack/devstack-plugin-glusterfs | |
-+-----------------+------------------------------------------------------------+------------+
-|hdfs |git://git.openstack.org/openstack/devstack-plugin-hdfs | |
-+-----------------+------------------------------------------------------------+------------+
-|ironic-inspector |git://git.openstack.org/openstack/ironic-inspector | |
-+-----------------+------------------------------------------------------------+------------+
-|pika |git://git.openstack.org/openstack/devstack-plugin-pika | |
-+-----------------+------------------------------------------------------------+------------+
-|sheepdog |git://git.openstack.org/openstack/devstack-plugin-sheepdog | |
-+-----------------+------------------------------------------------------------+------------+
-|zmq |git://git.openstack.org/openstack/devstack-plugin-zmq | |
-+-----------------+------------------------------------------------------------+------------+
-| | | |
-+-----------------+------------------------------------------------------------+------------+
-
-.. [as1] first functional devstack plugin, hence why used in most of
- the examples.
diff --git a/exercises/euca.sh b/exercises/euca.sh
index c2957e2..60e7d8c 100755
--- a/exercises/euca.sh
+++ b/exercises/euca.sh
@@ -17,7 +17,6 @@
# an error. It is also useful for following allowing as the install occurs.
set -o xtrace
-
# Settings
# ========
@@ -89,7 +88,8 @@
VOLUME_ZONE=`euca-describe-availability-zones | head -n1 | cut -f2`
die_if_not_set $LINENO VOLUME_ZONE "Failure to find zone for volume"
- VOLUME=`euca-create-volume -s 1 -z $VOLUME_ZONE | cut -f2`
+ VOLUME=`euca-create-volume -s 1 -z $VOLUME_ZONE` || die $LINENO "Failure to create volume"
+ VOLUME=`echo "$VOLUME" | cut -f2`
die_if_not_set $LINENO VOLUME "Failure to create volume"
# Test that volume has been created
diff --git a/functions-common b/functions-common
index a26cc50..0b690da 100644
--- a/functions-common
+++ b/functions-common
@@ -322,7 +322,7 @@
# XXX: old code paths seem to have assumed SUSE platforms also
# had "yum". Keep this ordered above yum so we don't try to
# install the rh package. suse calls it just "lsb"
- sudo zypper -y install lsb
+ sudo zypper -n install lsb
elif [[ -x $(which dnf 2>/dev/null) ]]; then
sudo dnf install -y redhat-lsb-core
elif [[ -x $(which yum 2>/dev/null) ]]; then
@@ -380,7 +380,8 @@
DISTRO="sle${os_RELEASE%.*}"
elif [[ "$os_VENDOR" =~ (Red.*Hat) || \
"$os_VENDOR" =~ (CentOS) || \
- "$os_VENDOR" =~ (OracleLinux) ]]; then
+ "$os_VENDOR" =~ (OracleLinux) || \
+ "$os_VENDOR" =~ (Virtuozzo) ]]; then
# Drop the . release as we assume it's compatible
# XXX re-evaluate when we get RHEL10
DISTRO="rhel${os_RELEASE::1}"
@@ -421,7 +422,7 @@
[ "$os_VENDOR" = "Fedora" ] || [ "$os_VENDOR" = "Red Hat" ] || \
[ "$os_VENDOR" = "CentOS" ] || [ "$os_VENDOR" = "OracleLinux" ] || \
- [ "$os_VENDOR" = "CloudLinux" ] || [ "$os_VENDOR" = "kvmibm" ]
+ [ "$os_VENDOR" = "Virtuozzo" ] || [ "$os_VENDOR" = "kvmibm" ]
}
@@ -433,7 +434,7 @@
GetOSVersion
fi
- [ "$os_VENDOR" = "openSUSE" ] || [ "$os_VENDOR" = "SUSE LINUX" ]
+ [[ "$os_VENDOR" =~ (openSUSE) || "$os_VENDOR" == "SUSE LINUX" ]]
}
diff --git a/lib/cinder_backends/solidfire b/lib/cinder_backends/solidfire
deleted file mode 100644
index 16bc527..0000000
--- a/lib/cinder_backends/solidfire
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/bash
-#
-# lib/cinder_backends/solidfire
-# Configure the solidfire driver
-
-# Enable with:
-#
-# CINDER_ENABLED_BACKENDS+=,solidfire:<volume-type-name>
-
-# Dependencies:
-#
-# - ``functions`` file
-# - ``cinder`` configurations
-
-# CINDER_CONF
-
-# configure_cinder_driver - make configuration changes, including those to other services
-
-# Save trace setting
-_XTRACE_CINDER_SOLIDFIRE=$(set +o | grep xtrace)
-set +o xtrace
-
-
-# Entry Points
-# ------------
-
-# configure_cinder_backend_solidfire - Set config files, create data dirs, etc
-function configure_cinder_backend_solidfire {
- # To use SolidFire, set the following in local.conf:
- # CINDER_ENABLED_BACKENDS+=,solidfire:<volume-type-name>
- # SAN_IP=<mvip>
- # SAN_LOGIN=<cluster-admin-account>
- # SAN_PASSWORD=<cluster-admin-password>
-
- local be_name=$1
- iniset $CINDER_CONF $be_name volume_backend_name $be_name
- iniset $CINDER_CONF $be_name volume_driver "cinder.volume.drivers.solidfire.SolidFireDriver"
- iniset $CINDER_CONF $be_name san_ip $SAN_IP
- iniset $CINDER_CONF $be_name san_login $SAN_LOGIN
- iniset $CINDER_CONF $be_name san_password $SAN_PASSWORD
-}
-
-
-# Restore xtrace
-$_XTRACE_CINDER_SOLIDFIRE
-
-# Local variables:
-# mode: shell-script
-# End:
diff --git a/lib/databases/postgresql b/lib/databases/postgresql
index 852bac4..14425a5 100644
--- a/lib/databases/postgresql
+++ b/lib/databases/postgresql
@@ -47,7 +47,7 @@
}
function configure_database_postgresql {
- local pg_conf pg_dir pg_hba root_roles
+ local pg_conf pg_dir pg_hba root_roles version
echo_summary "Configuring and starting PostgreSQL"
if is_fedora; then
pg_hba=/var/lib/pgsql/data/pg_hba.conf
@@ -56,6 +56,13 @@
sudo postgresql-setup initdb
fi
elif is_ubuntu; then
+ version=`psql --version | cut -d ' ' -f3 | cut -d. -f1-2`
+ if vercmp $version '>=' 9.3; then
+ if [ -z "`pg_lsclusters -h`" ]; then
+ echo 'No PostgreSQL clusters exist; will create one'
+ sudo pg_createcluster $version main --start
+ fi
+ fi
pg_dir=`find /etc/postgresql -name pg_hba.conf|xargs dirname`
pg_hba=$pg_dir/pg_hba.conf
pg_conf=$pg_dir/postgresql.conf
diff --git a/lib/glance b/lib/glance
index 4df2310..3743e16 100644
--- a/lib/glance
+++ b/lib/glance
@@ -55,6 +55,8 @@
GLANCE_POLICY_JSON=$GLANCE_CONF_DIR/policy.json
GLANCE_SCHEMA_JSON=$GLANCE_CONF_DIR/schema-image.json
GLANCE_SWIFT_STORE_CONF=$GLANCE_CONF_DIR/glance-swift-store.conf
+GLANCE_GLARE_CONF=$GLANCE_CONF_DIR/glance-glare.conf
+GLANCE_GLARE_PASTE_INI=$GLANCE_CONF_DIR/glance-glare-paste.ini
if is_ssl_enabled_service "glance" || is_service_enabled tls-proxy; then
GLANCE_SERVICE_PROTOCOL="https"
@@ -69,6 +71,8 @@
GLANCE_SERVICE_PROTOCOL=${GLANCE_SERVICE_PROTOCOL:-$SERVICE_PROTOCOL}
GLANCE_REGISTRY_PORT=${GLANCE_REGISTRY_PORT:-9191}
GLANCE_REGISTRY_PORT_INT=${GLANCE_REGISTRY_PORT_INT:-19191}
+GLANCE_GLARE_PORT=${GLANCE_GLARE_PORT:-9494}
+GLANCE_GLARE_HOSTPORT=${GLANCE_GLARE_HOSTPORT:-$GLANCE_SERVICE_HOST:$GLANCE_GLARE_PORT}
# Functions
# ---------
@@ -93,6 +97,9 @@
sudo install -d -o $STACK_USER $GLANCE_CONF_DIR $GLANCE_METADEF_DIR
# Copy over our glance configurations and update them
+ if is_service_enabled g-glare; then
+ cp $GLANCE_DIR/etc/glance-glare.conf $GLANCE_GLARE_CONF
+ fi
cp $GLANCE_DIR/etc/glance-registry.conf $GLANCE_REGISTRY_CONF
iniset $GLANCE_REGISTRY_CONF DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
iniset $GLANCE_REGISTRY_CONF DEFAULT bind_host $GLANCE_SERVICE_LISTEN_ADDRESS
@@ -129,6 +136,9 @@
# Store specific configs
iniset $GLANCE_API_CONF glance_store filesystem_store_datadir $GLANCE_IMAGE_DIR/
+ if is_service_enabled g-glare; then
+ iniset $GLANCE_GLARE_CONF glance_store filesystem_store_datadir $GLANCE_IMAGE_DIR/
+ fi
iniset $GLANCE_API_CONF DEFAULT registry_host $GLANCE_SERVICE_HOST
iniset $GLANCE_API_CONF DEFAULT workers "$API_WORKERS"
@@ -144,6 +154,23 @@
iniset $GLANCE_API_CONF DEFAULT graceful_shutdown_timeout "$SERVICE_GRACEFUL_SHUTDOWN_TIMEOUT"
iniset $GLANCE_SWIFT_STORE_CONF ref1 user $SERVICE_PROJECT_NAME:glance-swift
+
+ # Store the glare in swift if enabled.
+ if is_service_enabled g-glare; then
+ iniset $GLANCE_GLARE_CONF glance_store default_store swift
+ iniset $GLANCE_GLARE_CONF glance_store swift_store_create_container_on_put True
+
+ iniset $GLANCE_GLARE_CONF glance_store swift_store_config_file $GLANCE_SWIFT_STORE_CONF
+ iniset $GLANCE_GLARE_CONF glance_store default_swift_reference ref1
+ iniset $GLANCE_GLARE_CONF glance_store stores "file, http, swift"
+ iniset $GLANCE_GLARE_CONF DEFAULT graceful_shutdown_timeout "$SERVICE_GRACEFUL_SHUTDOWN_TIMEOUT"
+
+ # commenting is not strictly necessary but it's confusing to have bad values in conf
+ inicomment $GLANCE_GLARE_CONF glance_store swift_store_user
+ inicomment $GLANCE_GLARE_CONF glance_store swift_store_key
+ inicomment $GLANCE_GLARE_CONF glance_store swift_store_auth_address
+ fi
+
iniset $GLANCE_SWIFT_STORE_CONF ref1 key $SERVICE_PASSWORD
iniset $GLANCE_SWIFT_STORE_CONF ref1 auth_address $KEYSTONE_SERVICE_URI/v3
iniset $GLANCE_SWIFT_STORE_CONF ref1 user_domain_id default
@@ -220,6 +247,29 @@
iniset $GLANCE_API_CONF DEFAULT cinder_endpoint_template "https://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v1/%(project_id)s"
iniset $GLANCE_CACHE_CONF DEFAULT cinder_endpoint_template "https://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v1/%(project_id)s"
fi
+
+ # Configure GLANCE_GLARE (Glance Glare)
+ if is_service_enabled g-glare; then
+ local dburl
+ dburl=`database_connection_url glance`
+ setup_colorized_logging $GLANCE_GLARE_CONF DEFAULT tenant user
+ iniset $GLANCE_GLARE_CONF DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
+ iniset $GLANCE_GLARE_CONF DEFAULT bind_host $GLANCE_SERVICE_LISTEN_ADDRESS
+ iniset $GLANCE_GLARE_CONF DEFAULT bind_port $GLANCE_GLARE_PORT
+ inicomment $GLANCE_GLARE_CONF DEFAULT log_file
+ iniset $GLANCE_GLARE_CONF DEFAULT workers "$API_WORKERS"
+
+ iniset $GLANCE_GLARE_CONF database connection $dburl
+ iniset $GLANCE_GLARE_CONF paste_deploy flavor keystone
+ configure_auth_token_middleware $GLANCE_GLARE_CONF glare $GLANCE_AUTH_CACHE_DIR/artifact
+ # Register SSL certificates if provided
+ if is_ssl_enabled_service glance; then
+ ensure_certificates GLANCE
+ iniset $GLANCE_GLARE_CONF DEFAULT cert_file "$GLANCE_SSL_CERT"
+ iniset $GLANCE_GLARE_CONF DEFAULT key_file "$GLANCE_SSL_KEY"
+ fi
+ cp $GLANCE_DIR/etc/glance-glare-paste.ini $GLANCE_GLARE_PASTE_INI
+ fi
}
# create_glance_accounts() - Set up common required glance accounts
@@ -229,6 +279,7 @@
# SERVICE_PROJECT_NAME glance service
# SERVICE_PROJECT_NAME glance-swift ResellerAdmin (if Swift is enabled)
# SERVICE_PROJECT_NAME glance-search search (if Search is enabled)
+# SERVICE_PROJECT_NAME glare service (if enabled)
function create_glance_accounts {
if is_service_enabled g-api; then
@@ -252,13 +303,25 @@
"$GLANCE_SERVICE_PROTOCOL://$GLANCE_HOSTPORT" \
"$GLANCE_SERVICE_PROTOCOL://$GLANCE_HOSTPORT"
fi
+
+ # Add glance-glare service and endpoints
+ if is_service_enabled g-glare; then
+ create_service_user "glare"
+ get_or_create_service "glare" "artifact" "Glance Artifact Service"
+
+ get_or_create_endpoint "artifact" \
+ "$REGION_NAME" \
+ "$GLANCE_SERVICE_PROTOCOL://$GLANCE_GLARE_HOSTPORT" \
+ "$GLANCE_SERVICE_PROTOCOL://$GLANCE_GLARE_HOSTPORT" \
+ "$GLANCE_SERVICE_PROTOCOL://$GLANCE_GLARE_HOSTPORT"
+ fi
}
# create_glance_cache_dir() - Part of the init_glance() process
function create_glance_cache_dir {
# Create cache dir
- sudo install -d -o $STACK_USER $GLANCE_AUTH_CACHE_DIR/api $GLANCE_AUTH_CACHE_DIR/registry $GLANCE_AUTH_CACHE_DIR/search
- rm -f $GLANCE_AUTH_CACHE_DIR/api/* $GLANCE_AUTH_CACHE_DIR/registry/* $GLANCE_AUTH_CACHE_DIR/search/*
+ sudo install -d -o $STACK_USER $GLANCE_AUTH_CACHE_DIR/api $GLANCE_AUTH_CACHE_DIR/registry $GLANCE_AUTH_CACHE_DIR/search $GLANCE_AUTH_CACHE_DIR/artifact
+ rm -f $GLANCE_AUTH_CACHE_DIR/api/* $GLANCE_AUTH_CACHE_DIR/registry/* $GLANCE_AUTH_CACHE_DIR/search/* $GLANCE_AUTH_CACHE_DIR/artifact/*
}
# init_glance() - Initialize databases, etc.
@@ -326,6 +389,15 @@
if ! wait_for_service $SERVICE_TIMEOUT $GLANCE_SERVICE_PROTOCOL://$GLANCE_HOSTPORT; then
die $LINENO "g-api did not start"
fi
+
+ #Start g-glare after g-reg/g-api/g-search
+ if is_service_enabled g-glare; then
+ run_process g-glare "$GLANCE_BIN_DIR/glance-glare --config-file=$GLANCE_CONF_DIR/glance-glare.conf"
+ echo "Waiting for Glare [g-glare] ($GLANCE_GLARE_HOSTPORT) to start..."
+ if ! wait_for_service $SERVICE_TIMEOUT $GLANCE_SERVICE_PROTOCOL://$GLANCE_GLARE_HOSTPORT; then
+ die $LINENO " Glare [g-glare] did not start"
+ fi
+ fi
}
# stop_glance() - Stop running processes
@@ -333,6 +405,10 @@
# Kill the Glance screen windows
stop_process g-api
stop_process g-reg
+
+ if is_service_enabled g-glare; then
+ stop_process g-glare
+ fi
}
# Restore xtrace
diff --git a/lib/tempest b/lib/tempest
index 4cd94cd..3b8a888 100644
--- a/lib/tempest
+++ b/lib/tempest
@@ -322,7 +322,9 @@
local tmp_cfg_file
tmp_cfg_file=$(mktemp)
cd $TEMPEST_DIR
- tox -revenv --notest
+ if [[ "$OFFLINE" != "True" ]]; then
+ tox -revenv --notest
+ fi
# NOTE(mtreinish): Respect constraints on tempest verify-config venv
tox -evenv -- pip install -c $REQUIREMENTS_DIR/upper-constraints.txt -r requirements.txt
tox -evenv -- tempest verify-config -uro $tmp_cfg_file
@@ -555,9 +557,9 @@
iniset $TEMPEST_CONFIG auth tempest_roles "Member"
if [[ $TEMPEST_USE_TEST_ACCOUNTS == "True" ]]; then
if [[ $TEMPEST_HAS_ADMIN == "True" ]]; then
- tempest-account-generator -c $TEMPEST_CONFIG --os-username $admin_username --os-password $admin_password --os-tenant-name $admin_tenant_name -r $TEMPEST_CONCURRENCY --with-admin etc/accounts.yaml
+ tempest-account-generator -c $TEMPEST_CONFIG --os-username $admin_username --os-password "$password" --os-tenant-name $admin_tenant_name -r $TEMPEST_CONCURRENCY --with-admin etc/accounts.yaml
else
- tempest-account-generator -c $TEMPEST_CONFIG --os-username $admin_username --os-password $admin_password --os-tenant-name $admin_tenant_name -r $TEMPEST_CONCURRENCY etc/accounts.yaml
+ tempest-account-generator -c $TEMPEST_CONFIG --os-username $admin_username --os-password "$password" --os-tenant-name $admin_tenant_name -r $TEMPEST_CONCURRENCY etc/accounts.yaml
fi
iniset $TEMPEST_CONFIG auth use_dynamic_credentials False
iniset $TEMPEST_CONFIG auth test_accounts_file "etc/accounts.yaml"
diff --git a/rejoin-stack.sh b/rejoin-stack.sh
index 30b7bab..7048865 100755
--- a/rejoin-stack.sh
+++ b/rejoin-stack.sh
@@ -11,14 +11,15 @@
source $TOP_DIR/stackrc
+SCREENRC=$TOP_DIR/$SCREEN_NAME-screenrc
# if screenrc exists, run screen
-if [[ -e $TOP_DIR/stack-screenrc ]]; then
- if screen -ls | egrep -q "[0-9].stack"; then
+if [[ -e $SCREENRC ]]; then
+ if screen -ls | egrep -q "[0-9]+.${SCREEN_NAME}"; then
echo "Attaching to already started screen session.."
- exec screen -r stack
+ exec screen -r $SCREEN_NAME
fi
- exec screen -c $TOP_DIR/stack-screenrc
+ exec screen -c $SCREENRC
fi
-echo "Couldn't find $TOP_DIR/stack-screenrc file; have you run stack.sh yet?"
+echo "Couldn't find $SCREENRC file; have you run stack.sh yet?"
exit 1
diff --git a/tools/generate-devstack-plugins-list.py b/tools/generate-devstack-plugins-list.py
new file mode 100644
index 0000000..1fa5501
--- /dev/null
+++ b/tools/generate-devstack-plugins-list.py
@@ -0,0 +1,59 @@
+#! /usr/bin/env python
+
+# Copyright 2016 Hewlett Packard Enterprise 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.
+
+# This script is intended to be run as part of a periodic proposal bot
+# job in OpenStack infrastructure.
+#
+# In order to function correctly, the environment in which the
+# script runs must have
+# * network access to the review.openstack.org Gerrit API
+# working directory
+# * network access to https://git.openstack.org/cgit
+
+import json
+import requests
+
+url = 'https://review.openstack.org/projects/'
+
+# This is what a project looks like
+'''
+ "openstack-attic/akanda": {
+ "id": "openstack-attic%2Fakanda",
+ "state": "READ_ONLY"
+ },
+'''
+
+def is_in_openstack_namespace(proj):
+ return proj.startswith('openstack/')
+
+# Rather than returning a 404 for a nonexistent file, cgit delivers a
+# 0-byte response to a GET request. It also does not provide a
+# Content-Length in a HEAD response, so the way we tell if a file exists
+# is to check the length of the entire GET response body.
+def has_devstack_plugin(proj):
+ r = requests.get("https://git.openstack.org/cgit/%s/plain/devstack/plugin.sh" % proj)
+ if len(r.text) > 0:
+ return True
+ else:
+ False
+
+r = requests.get(url)
+projects = sorted(filter(is_in_openstack_namespace, json.loads(r.text[4:])))
+
+found_plugins = filter(has_devstack_plugin, projects)
+
+for project in found_plugins:
+ print project[10:]
diff --git a/tools/generate-devstack-plugins-list.sh b/tools/generate-devstack-plugins-list.sh
index 6e9e828..8a1f743 100644
--- a/tools/generate-devstack-plugins-list.sh
+++ b/tools/generate-devstack-plugins-list.sh
@@ -19,11 +19,19 @@
#
# In order to function correctly, the environment in which the
# script runs must have
+# * a writable doc/source directory relative to the current
+# working directory
+# AND ( (
# * git
# * all git repos meant to be searched for plugins cloned and
# at the desired level of up-to-datedness
-# * a writable doc/source directory relative to the current
+# * the environment variable git_dir pointing to the location
+# * of said git repositories
+# ) OR (
+# * network access to the review.openstack.org Gerrit API
# working directory
+# * network access to https://git.openstack.org/cgit
+# ))
#
# If a file named data/devstack-plugins-registry.header or
# data/devstack-plugins-registry.footer is found relative to the
@@ -35,25 +43,18 @@
test -r data/devstack-plugins-registry.header && cat data/devstack-plugins-registry.header
-pushd ${git_dir:-/opt/openstack} >/dev/null
-for i in *; do
- pushd ${i} >/dev/null
- if output="$(git log --diff-filter=A --format='%cd' --date=short -1 -- devstack/plugin.sh)"; then
- test -n "$output" && plugins[$i]=${output}
- fi
- popd >/dev/null
-done
-popd >/dev/null
+sorted_plugins=$(python tools/generate-devstack-plugins-list.py)
-sorted_plugins=( $(for k in "${!plugins[@]}"; do echo "$k"; done | sort))
-
-for k in "${sorted_plugins[@]}"; do
- project=${k:0:18}
+for k in ${sorted_plugins}; do
+ project=${k:0:28}
giturl="git://git.openstack.org/openstack/${k:0:26}"
- pdate="${plugins[$k]}"
- printf "|%-18s|%-60s|%-12s|\n" "${project}" "${giturl}" "${pdate}"
- printf "+------------------+------------------------------------------------------------+------------+\n"
+ printf "|%-28s|%-73s|\n" "${project}" "${giturl}"
+ printf "+----------------------------+-------------------------------------------------------------------------+\n"
done
test -r data/devstack-plugins-registry.footer && cat data/devstack-plugins-registry.footer
) > doc/source/plugin-registry.rst
+
+if [[ -n ${1} ]]; then
+ cp doc/source/plugin-registry.rst ${1}/doc/source/plugin-registry.rst
+fi
diff --git a/tools/worlddump.py b/tools/worlddump.py
index 01f601c..72a257f 100755
--- a/tools/worlddump.py
+++ b/tools/worlddump.py
@@ -58,8 +58,8 @@
try:
subprocess.check_call(cmd, shell=True)
print
- except subprocess.CalledProcessError:
- print "*** Failed to run: %s" % cmd
+ except subprocess.CalledProcessError as e:
+ print "*** Failed to run '%(cmd)s': %(err)s" % {'cmd': cmd, 'err': e}
def _find_cmd(cmd):
diff --git a/unstack.sh b/unstack.sh
index d7670e3..7a7c945 100755
--- a/unstack.sh
+++ b/unstack.sh
@@ -182,7 +182,7 @@
# Clean up the remainder of the screen processes
SCREEN=$(which screen)
if [[ -n "$SCREEN" ]]; then
- SESSION=$(screen -ls | awk '/[0-9].stack/ { print $1 }')
+ SESSION=$(screen -ls | awk "/[0-9]+.${SCREEN_NAME}/"'{ print $1 }')
if [[ -n "$SESSION" ]]; then
screen -X -S $SESSION quit
fi