From 821256da3a082db0e82080cd9b15cbfd345da640 Mon Sep 17 00:00:00 2001
From: Steve Wilkerson <wilkers.steve@gmail.com>
Date: Wed, 15 Aug 2018 11:25:27 -0500
Subject: [PATCH] Armada: Use single rabbitmq deployment

This moves to use a single rabbitmq deployment for the openstack
services in the armada gate to reduce the resources required for
this check to run.

Change-Id: I81bba3c9a4d9cdaad6ddcaa066441a70f1908415
---
 tools/deployment/armada/generate-passwords.sh |   8 +-
 .../armada/multinode/armada-osh.yaml          | 429 ++----------------
 2 files changed, 38 insertions(+), 399 deletions(-)

diff --git a/tools/deployment/armada/generate-passwords.sh b/tools/deployment/armada/generate-passwords.sh
index 58540b5fe8..0bbbec9e8e 100755
--- a/tools/deployment/armada/generate-passwords.sh
+++ b/tools/deployment/armada/generate-passwords.sh
@@ -17,24 +17,20 @@
 set -xe
 
 passwords="BARBICAN_DB_PASSWORD \
-    BARBICAN_RABBITMQ_ADMIN_PASSWORD \
     BARBICAN_RABBITMQ_USER_PASSWORD \
     BARBICAN_USER_PASSWORD \
     CINDER_DB_PASSWORD \
-    CINDER_RABBITMQ_ADMIN_PASSWORD \
     CINDER_RABBITMQ_USER_PASSWORD \
     CINDER_USER_PASSWORD \
     DB_ADMIN_PASSWORD \
     ELASTICSEARCH_ADMIN_PASSWORD \
     GLANCE_DB_PASSWORD \
-    GLANCE_RABBITMQ_ADMIN_PASSWORD \
     GLANCE_RABBITMQ_USER_PASSWORD \
     GLANCE_USER_PASSWORD \
     GRAFANA_ADMIN_PASSWORD \
     GRAFANA_DB_PASSWORD \
     GRAFANA_SESSION_DB_PASSWORD \
     HEAT_DB_PASSWORD \
-    HEAT_RABBITMQ_ADMIN_PASSWORD \
     HEAT_RABBITMQ_USER_PASSWORD \
     HEAT_STACK_PASSWORD \
     HEAT_TRUSTEE_PASSWORD \
@@ -42,20 +38,18 @@ passwords="BARBICAN_DB_PASSWORD \
     KEYSTONE_ADMIN_PASSWORD \
     KEYSTONE_AUTHTOKEN_MEMCACHED_SECRET_KEY \
     KEYSTONE_DB_PASSWORD \
-    KEYSTONE_RABBITMQ_ADMIN_PASSWORD \
     KEYSTONE_RABBITMQ_USER_PASSWORD \
     KIBANA_ADMIN_PASSWORD \
     NEUTRON_DB_PASSWORD \
-    NEUTRON_RABBITMQ_ADMIN_PASSWORD \
     NEUTRON_RABBITMQ_USER_PASSWORD \
     NEUTRON_USER_PASSWORD \
     NOVA_DB_PASSWORD \
     NOVA_PLACEMENT_USER_PASSWORD \
-    NOVA_RABBITMQ_ADMIN_PASSWORD \
     NOVA_RABBITMQ_USER_PASSWORD \
     NOVA_USER_PASSWORD \
     OPENSTACK_EXPORTER_USER_PASSWORD \
     PROMETHEUS_ADMIN_PASSWORD \
+    RABBITMQ_ADMIN_PASSWORD \
     SWIFT_USER_PASSWORD"
 
 for password in $passwords
diff --git a/tools/deployment/armada/multinode/armada-osh.yaml b/tools/deployment/armada/multinode/armada-osh.yaml
index 89a36413fd..2098ec3ea9 100644
--- a/tools/deployment/armada/multinode/armada-osh.yaml
+++ b/tools/deployment/armada/multinode/armada-osh.yaml
@@ -200,15 +200,15 @@ data:
 schema: armada/Chart/v1
 metadata:
   schema: metadata/Document/v1
-  name: keystone-rabbitmq
+  name: rabbitmq
 data:
-  chart_name: keystone-rabbitmq
-  release: keystone-rabbitmq
+  chart_name: rabbitmq
+  release: rabbitmq
   namespace: openstack
   wait:
     timeout: 1800
     labels:
-      release_group: osh-keystone-rabbitmq
+      release_group: osh-rabbitmq
   test:
     enabled: true
   install:
@@ -219,23 +219,18 @@ data:
       delete:
         - type: job
           labels:
-            release_group: osh-keystone-rabbitmq
+            release_group: osh-rabbitmq
         - type: pod
           labels:
-            release_group: osh-keystone-rabbitmq
+            release_group: osh-rabbitmq
             component: test
   values:
     endpoints:
       oslo_messaging:
         auth:
           user:
-            username: keystone-rabbitmq-admin
-            password: ${KEYSTONE_RABBITMQ_ADMIN_PASSWORD}
-        hosts:
-          default: keystone-rabbitmq
-      prometheus_rabbitmq_exporter:
-        hosts:
-          default: keystone-rabbitmq-exporter
+            username: rabbitmq-admin
+            password: ${RABBITMQ_ADMIN_PASSWORD}
     monitoring:
       prometheus:
         enabled: True
@@ -301,13 +296,11 @@ data:
       oslo_messaging:
         auth:
           admin:
-            username: keystone-rabbitmq-admin
-            password: ${KEYSTONE_RABBITMQ_ADMIN_PASSWORD}
+            username: rabbitmq-admin
+            password: ${RABBITMQ_ADMIN_PASSWORD}
           keystone:
             username: keystone-rabbitmq-user
             password: ${KEYSTONE_RABBITMQ_USER_PASSWORD}
-        hosts:
-         default: keystone-rabbitmq
     labels:
       api:
         node_selector_key: openstack-control-plane
@@ -392,63 +385,6 @@ data:
     - helm-toolkit
 ---
 schema: armada/Chart/v1
-metadata:
-  schema: metadata/Document/v1
-  name: glance-rabbitmq
-data:
-  chart_name: glance-rabbitmq
-  release: glance-rabbitmq
-  namespace: openstack
-  wait:
-    timeout: 1800
-    labels:
-      release_group: osh-glance-rabbitmq
-  test:
-    enabled: true
-  install:
-    no_hooks: False
-  upgrade:
-    no_hooks: False
-    pre:
-      delete:
-        - type: job
-          labels:
-            release_group: osh-glance-rabbitmq
-        - type: pod
-          labels:
-            release_group: osh-glance-rabbitmq
-            component: test
-  values:
-    endpoints:
-      oslo_messaging:
-        auth:
-          user:
-            username: glance-rabbitmq-admin
-            password: ${GLANCE_RABBITMQ_ADMIN_PASSWORD}
-        hosts:
-          default: glance-rabbitmq
-      prometheus_rabbitmq_exporter:
-        hosts:
-          default: glance-rabbitmq-exporter
-    monitoring:
-      prometheus:
-        enabled: True
-    labels:
-      server:
-        node_selector_key: openstack-control-plane
-        node_selector_value: enabled
-      prometheus_rabbitmq_exporter:
-        node_selector_key: openstack-control-plane
-        node_selector_value: enabled
-  source:
-    type: local
-    location: ${OSH_INFRA_PATH}
-    subpath: rabbitmq
-    reference: master
-  dependencies:
-    - helm-toolkit
----
-schema: armada/Chart/v1
 metadata:
   schema: metadata/Document/v1
   name: glance
@@ -495,13 +431,11 @@ data:
       oslo_messaging:
         auth:
           admin:
-            username: glance-rabbitmq-admin
-            password: ${GLANCE_RABBITMQ_ADMIN_PASSWORD}
+            username: rabbitmq-admin
+            password: ${RABBITMQ_ADMIN_PASSWORD}
           glance:
             username: glance-rabbitmq-user
             password: ${GLANCE_RABBITMQ_USER_PASSWORD}
-        hosts:
-          default: glance-rabbitmq
     labels:
       api:
         node_selector_key: openstack-control-plane
@@ -537,63 +471,6 @@ data:
     - helm-toolkit
 ---
 schema: armada/Chart/v1
-metadata:
-  schema: metadata/Document/v1
-  name: cinder-rabbitmq
-data:
-  chart_name: cinder-rabbitmq
-  release: cinder-rabbitmq
-  namespace: openstack
-  wait:
-    timeout: 1800
-    labels:
-      release_group: osh-cinder-rabbitmq
-  test:
-    enabled: true
-  install:
-    no_hooks: False
-  upgrade:
-    no_hooks: False
-    pre:
-      delete:
-        - type: job
-          labels:
-            release_group: osh-cinder-rabbitmq
-        - type: pod
-          labels:
-            release_group: osh-cinder-rabbitmq
-            component: test
-  values:
-    endpoints:
-      oslo_messaging:
-        auth:
-          user:
-            username: cinder-rabbitmq-admin
-            password: ${CINDER_RABBITMQ_ADMIN_PASSWORD}
-        hosts:
-          default: cinder-rabbitmq
-      prometheus_rabbitmq_exporter:
-        hosts:
-          default: cinder-rabbitmq-exporter
-    monitoring:
-      prometheus:
-        enabled: True
-    labels:
-      server:
-        node_selector_key: openstack-control-plane
-        node_selector_value: enabled
-      prometheus_rabbitmq_exporter:
-        node_selector_key: openstack-control-plane
-        node_selector_value: enabled
-  source:
-    type: local
-    location: ${OSH_INFRA_PATH}
-    subpath: rabbitmq
-    reference: master
-  dependencies:
-    - helm-toolkit
----
-schema: armada/Chart/v1
 metadata:
   schema: metadata/Document/v1
   name: cinder
@@ -640,13 +517,11 @@ data:
       oslo_messaging:
         auth:
           admin:
-            username: cinder-rabbitmq-admin
-            password: ${CINDER_RABBITMQ_ADMIN_PASSWORD}
+            username: rabbitmq-admin
+            password: ${RABBITMQ_ADMIN_PASSWORD}
           cinder:
             username: cinder-rabbitmq-user
             password: ${CINDER_RABBITMQ_USER_PASSWORD}
-        hosts:
-          default: cinder-rabbitmq
     labels:
       api:
         node_selector_key: openstack-control-plane
@@ -745,63 +620,6 @@ data:
     - helm-toolkit
 ---
 schema: armada/Chart/v1
-metadata:
-  schema: metadata/Document/v1
-  name: nova-rabbitmq
-data:
-  chart_name: nova-rabbitmq
-  release: nova-rabbitmq
-  namespace: openstack
-  wait:
-    timeout: 1800
-    labels:
-      release_group: osh-nova-rabbitmq
-  test:
-    enabled: true
-  install:
-    no_hooks: False
-  upgrade:
-    no_hooks: False
-    pre:
-      delete:
-        - type: job
-          labels:
-            release_group: osh-nova-rabbitmq
-        - type: pod
-          labels:
-            release_group: osh-nova-rabbitmq
-            component: test
-  values:
-    endpoints:
-      oslo_messaging:
-        auth:
-          user:
-            username: nova-rabbitmq-admin
-            password: ${NOVA_RABBITMQ_ADMIN_PASSWORD}
-        hosts:
-          default: nova-rabbitmq
-      prometheus_rabbitmq_exporter:
-        hosts:
-          default: nova-rabbitmq-exporter
-    monitoring:
-      prometheus:
-        enabled: True
-    labels:
-      server:
-        node_selector_key: openstack-control-plane
-        node_selector_value: enabled
-      prometheus_rabbitmq_exporter:
-        node_selector_key: openstack-control-plane
-        node_selector_value: enabled
-  source:
-    type: local
-    location: ${OSH_INFRA_PATH}
-    subpath: rabbitmq
-    reference: master
-  dependencies:
-    - helm-toolkit
----
-schema: armada/Chart/v1
 metadata:
   schema: metadata/Document/v1
   name: nova
@@ -812,6 +630,8 @@ data:
   wait:
     labels:
       release_group: osh-nova
+  test:
+    enabled: true
   install:
     no_hooks: False
   upgrade:
@@ -891,13 +711,11 @@ data:
       oslo_messaging:
         auth:
           admin:
-            username: nova-rabbitmq-admin
-            password: ${NOVA_RABBITMQ_ADMIN_PASSWORD}
+            username: rabbitmq-admin
+            password: ${RABBITMQ_ADMIN_PASSWORD}
           nova:
             username: nova-rabbitmq-user
             password: ${NOVA_RABBITMQ_USER_PASSWORD}
-        hosts:
-          default: nova-rabbitmq
     labels:
       agent:
         compute:
@@ -959,63 +777,6 @@ data:
     - helm-toolkit
 ---
 schema: armada/Chart/v1
-metadata:
-  schema: metadata/Document/v1
-  name: neutron-rabbitmq
-data:
-  chart_name: neutron-rabbitmq
-  release: neutron-rabbitmq
-  namespace: openstack
-  wait:
-    timeout: 1800
-    labels:
-      release_group: osh-neutron-rabbitmq
-  test:
-    enabled: true
-  install:
-    no_hooks: False
-  upgrade:
-    no_hooks: False
-    pre:
-      delete:
-        - type: job
-          labels:
-            release_group: osh-neutron-rabbitmq
-        - type: pod
-          labels:
-            release_group: osh-neutron-rabbitmq
-            component: test
-  values:
-    endpoints:
-      oslo_messaging:
-        auth:
-          user:
-            username: neutron-rabbitmq-admin
-            password: ${NEUTRON_RABBITMQ_ADMIN_PASSWORD}
-        hosts:
-          default: neutron-rabbitmq
-      prometheus_rabbitmq_exporter:
-        hosts:
-          default: neutron-rabbitmq-exporter
-    monitoring:
-      prometheus:
-        enabled: True
-    labels:
-      server:
-        node_selector_key: openstack-control-plane
-        node_selector_value: enabled
-      prometheus_rabbitmq_exporter:
-        node_selector_key: openstack-control-plane
-        node_selector_value: enabled
-  source:
-    type: local
-    location: ${OSH_INFRA_PATH}
-    subpath: rabbitmq
-    reference: master
-  dependencies:
-    - helm-toolkit
----
-schema: armada/Chart/v1
 metadata:
   schema: metadata/Document/v1
   name: neutron
@@ -1026,6 +787,8 @@ data:
   wait:
     labels:
       release_group: osh-neutron
+  test:
+    enabled: true
   install:
     no_hooks: False
   upgrade:
@@ -1074,13 +837,11 @@ data:
       oslo_messaging:
         auth:
           admin:
-            username: neutron-rabbitmq-admin
-            password: ${NEUTRON_RABBITMQ_ADMIN_PASSWORD}
+            username: rabbitmq-admin
+            password: ${RABBITMQ_ADMIN_PASSWORD}
           neutron:
             username: neutron-rabbitmq-user
             password: ${NEUTRON_RABBITMQ_USER_PASSWORD}
-        hosts:
-          default: neutron-rabbitmq
     pod:
       replicas:
         server: 2
@@ -1143,63 +904,6 @@ data:
     - helm-toolkit
 ---
 schema: armada/Chart/v1
-metadata:
-  schema: metadata/Document/v1
-  name: heat-rabbitmq
-data:
-  chart_name: heat-rabbitmq
-  release: heat-rabbitmq
-  namespace: openstack
-  wait:
-    timeout: 1800
-    labels:
-      release_group: osh-heat-rabbitmq
-  test:
-    enabled: true
-  install:
-    no_hooks: False
-  upgrade:
-    no_hooks: False
-    pre:
-      delete:
-        - type: job
-          labels:
-            release_group: osh-heat-rabbitmq
-        - type: pod
-          labels:
-            release_group: osh-heat-rabbitmq
-            component: test
-  values:
-    endpoints:
-      oslo_messaging:
-        auth:
-          user:
-            username: heat-rabbitmq-admin
-            password: ${HEAT_RABBITMQ_ADMIN_PASSWORD}
-        hosts:
-          default: heat-rabbitmq
-      prometheus_rabbitmq_exporter:
-        hosts:
-          default: heat-rabbitmq-exporter
-    monitoring:
-      prometheus:
-        enabled: True
-    labels:
-      server:
-        node_selector_key: openstack-control-plane
-        node_selector_value: enabled
-      prometheus_rabbitmq_exporter:
-        node_selector_key: openstack-control-plane
-        node_selector_value: enabled
-  source:
-    type: local
-    location: ${OSH_INFRA_PATH}
-    subpath: rabbitmq
-    reference: master
-  dependencies:
-    - helm-toolkit
----
-schema: armada/Chart/v1
 metadata:
   schema: metadata/Document/v1
   name: heat
@@ -1250,13 +954,11 @@ data:
       oslo_messaging:
         auth:
           admin:
-            username: heat-rabbitmq-admin
-            password: ${HEAT_RABBITMQ_ADMIN_PASSWORD}
+            username: rabbitmq-admin
+            password: ${RABBITMQ_ADMIN_PASSWORD}
           heat:
             username: heat-rabbitmq-user
             password: ${HEAT_RABBITMQ_USER_PASSWORD}
-        hosts:
-          default: heat-rabbitmq
     labels:
       api:
         node_selector_key: openstack-control-plane
@@ -1288,63 +990,6 @@ data:
     - helm-toolkit
 ---
 schema: armada/Chart/v1
-metadata:
-  schema: metadata/Document/v1
-  name: barbican-rabbitmq
-data:
-  chart_name: barbican-rabbitmq
-  release: barbican-rabbitmq
-  namespace: openstack
-  wait:
-    timeout: 1800
-    labels:
-      release_group: osh-barbican-rabbitmq
-  test:
-    enabled: true
-  install:
-    no_hooks: False
-  upgrade:
-    no_hooks: False
-    pre:
-      delete:
-        - type: job
-          labels:
-            release_group: osh-barbican-rabbitmq
-        - type: pod
-          labels:
-            release_group: osh-barbican-rabbitmq
-            component: test
-  values:
-    endpoints:
-      oslo_messaging:
-        auth:
-          user:
-            username: barbican-rabbitmq-admin
-            password: ${BARBICAN_RABBITMQ_ADMIN_PASSWORD}
-        hosts:
-          default: barbican-rabbitmq
-      prometheus_rabbitmq_exporter:
-        hosts:
-          default: barbican-rabbitmq-exporter
-    monitoring:
-      prometheus:
-        enabled: True
-    labels:
-      server:
-        node_selector_key: openstack-control-plane
-        node_selector_value: enabled
-      prometheus_rabbitmq_exporter:
-        node_selector_key: openstack-control-plane
-        node_selector_value: enabled
-  source:
-    type: local
-    location: ${OSH_INFRA_PATH}
-    subpath: rabbitmq
-    reference: master
-  dependencies:
-    - helm-toolkit
----
-schema: armada/Chart/v1
 metadata:
   schema: metadata/Document/v1
   name: barbican
@@ -1356,8 +1001,6 @@ data:
     timeout: 1800
     labels:
       release_group: osh-barbican
-  test:
-    enabled: true
   install:
     no_hooks: False
   upgrade:
@@ -1391,13 +1034,11 @@ data:
       oslo_messaging:
         auth:
           admin:
-            username: barbican-rabbitmq-admin
-            password: ${BARBICAN_RABBITMQ_ADMIN_PASSWORD}
+            username: rabbitmq-admin
+            password: ${RABBITMQ_ADMIN_PASSWORD}
           barbican:
             username: barbican-rabbitmq-user
             password: ${BARBICAN_RABBITMQ_USER_PASSWORD}
-        hosts:
-          default: barbican-rabbitmq
     labels:
       api:
         node_selector_key: openstack-control-plane
@@ -1497,6 +1138,16 @@ data:
     - memcached
 ---
 schema: armada/ChartGroup/v1
+metadata:
+  schema: metadata/Document/v1
+  name: deploy-rabbitmq
+data:
+  description: "Rabbitmq"
+  sequenced: True
+  chart_group:
+    - rabbitmq
+---
+schema: armada/ChartGroup/v1
 metadata:
   schema: metadata/Document/v1
   name: openstack-keystone
@@ -1504,7 +1155,6 @@ data:
   description: "Deploy keystone"
   sequenced: True
   chart_group:
-    - keystone-rabbitmq
     - keystone
 ---
 schema: armada/ChartGroup/v1
@@ -1515,7 +1165,6 @@ data:
   description: "Deploy glance"
   sequenced: True
   chart_group:
-    - glance-rabbitmq
     - glance
 ---
 schema: armada/ChartGroup/v1
@@ -1536,7 +1185,6 @@ data:
   description: "Deploy cinder"
   sequenced: True
   chart_group:
-    - cinder-rabbitmq
     - cinder
 ---
 schema: armada/ChartGroup/v1
@@ -1549,9 +1197,7 @@ data:
   chart_group:
     - libvirt
     - openvswitch
-    - nova-rabbitmq
     - nova
-    - neutron-rabbitmq
     - neutron
 ---
 schema: armada/ChartGroup/v1
@@ -1562,7 +1208,6 @@ data:
   description: "Deploy heat"
   sequenced: True
   chart_group:
-    - heat-rabbitmq
     - heat
 ---
 schema: armada/ChartGroup/v1
@@ -1573,7 +1218,6 @@ data:
   description: "Deploy barbican"
   sequenced: True
   chart_group:
-    - barbican-rabbitmq
     - barbican
 ---
 schema: armada/ChartGroup/v1
@@ -1597,6 +1241,7 @@ data:
     - openstack-ceph-config
     - deploy-mariadb
     - deploy-memcached
+    - deploy-rabbitmq
     - openstack-keystone
     - openstack-radosgw
     - openstack-glance