Merge "Add pg_createcluster creating process for psql version after 9.3"
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 687db04..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                                                                      |
-+------------------+-------------------------------------------------------------------------+
++----------------------------+-------------------------------------------------------------------------+
+|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/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/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 caf8f11..4fb3e5e 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
@@ -552,9 +554,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/tools/generate-devstack-plugins-list.sh b/tools/generate-devstack-plugins-list.sh
index 0176785..8a1f743 100644
--- a/tools/generate-devstack-plugins-list.sh
+++ b/tools/generate-devstack-plugins-list.sh
@@ -43,38 +43,18 @@
 
 test -r data/devstack-plugins-registry.header && cat data/devstack-plugins-registry.header
 
-if test -n "$git_dir"; then
-    pushd ${git_dir} >/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}
-        giturl="git://git.openstack.org/openstack/${k:0:26}"
-        pdate="${plugins[$k]}"
-        printf "|%-18s|%-60s (%-10s)|\n" "${project}" "${giturl}" "${pdate}"
-        printf "+------------------+-------------------------------------------------------------------------+\n"
-    done
-
-else
-    sorted_plugins=$(python tools/generate-devstack-plugins-list.py)
-
-    for k in ${sorted_plugins}; do
-        project=${k:0:18}
-        giturl="git://git.openstack.org/openstack/${k:0:26}"
-        printf "|%-18s|%-73s|\n" "${project}" "${giturl}"
-        printf "+------------------+-------------------------------------------------------------------------+\n"
-    done
-
-fi
+for k in ${sorted_plugins}; do
+    project=${k:0:28}
+    giturl="git://git.openstack.org/openstack/${k:0:26}"
+    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