From 2840259fb8730d34520c6543ebb2adc140582da7 Mon Sep 17 00:00:00 2001
From: Steve Wilkerson <wilkers.steve@gmail.com>
Date: Mon, 2 Jul 2018 12:46:03 -0500
Subject: [PATCH] Armada check: Add test directive to charts

This adds support for executing helm tests via the armada test
directive. It enables theses tests for all services, except for
nova and neutron as executing tests with armada force a chart to
wait. Forcing nova and neutron to wait effectively sequences the
charts, which will result in a failure to deploy past those
services

Depends-On: https://review.openstack.org/#/c/581148

Change-Id: I6ac845c82d744e2f5fd79c3e2ff3c1479dd1ddab
---
 barbican/templates/pod-test.yaml              |  2 +
 cinder/templates/pod-rally-test.yaml          |  2 +
 congress/templates/pod-test.yaml              |  2 +
 glance/templates/pod-rally-test.yaml          |  2 +
 gnocchi/templates/pod-gnocchi-test.yaml       |  2 +
 heat/templates/pod-rally-test.yaml            |  2 +
 keystone/templates/pod-rally-test.yaml        |  2 +
 mistral/templates/pod-rally-test.yaml         |  2 +
 neutron/templates/pod-rally-test.yaml         |  2 +
 nova/templates/pod-rally-test.yaml            |  2 +
 rabbitmq/templates/pod-test.yaml              |  2 +
 senlin/templates/pod-test.yaml                |  2 +
 .../armada/multinode/armada-lma.yaml          | 24 +++++++
 .../armada/multinode/armada-osh.yaml          | 72 +++++++++++++++++++
 14 files changed, 120 insertions(+)

diff --git a/barbican/templates/pod-test.yaml b/barbican/templates/pod-test.yaml
index c477bdbc14..6ab2d908cc 100644
--- a/barbican/templates/pod-test.yaml
+++ b/barbican/templates/pod-test.yaml
@@ -28,6 +28,8 @@ apiVersion: v1
 kind: Pod
 metadata:
   name: "{{.Release.Name}}-test"
+  labels:
+{{ tuple $envAll "barbican" "test" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
   annotations:
     "helm.sh/hook": test-success
 spec:
diff --git a/cinder/templates/pod-rally-test.yaml b/cinder/templates/pod-rally-test.yaml
index 7c8e5ce158..00909833d1 100644
--- a/cinder/templates/pod-rally-test.yaml
+++ b/cinder/templates/pod-rally-test.yaml
@@ -27,6 +27,8 @@ apiVersion: v1
 kind: Pod
 metadata:
   name: {{ print $envAll.Release.Name "-test" }}
+  labels:
+{{ tuple $envAll "cinder" "test" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
   annotations:
     "helm.sh/hook": test-success
 spec:
diff --git a/congress/templates/pod-test.yaml b/congress/templates/pod-test.yaml
index 9ac05286a8..341f117c00 100644
--- a/congress/templates/pod-test.yaml
+++ b/congress/templates/pod-test.yaml
@@ -23,6 +23,8 @@ apiVersion: v1
 kind: Pod
 metadata:
   name: "{{.Release.Name}}-test"
+  labels:
+{{ tuple $envAll "congress" "test" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
   annotations:
     "helm.sh/hook": test-success
 spec:
diff --git a/glance/templates/pod-rally-test.yaml b/glance/templates/pod-rally-test.yaml
index 327dd4c11f..a807b83d83 100644
--- a/glance/templates/pod-rally-test.yaml
+++ b/glance/templates/pod-rally-test.yaml
@@ -27,6 +27,8 @@ apiVersion: v1
 kind: Pod
 metadata:
   name: {{ print $envAll.Release.Name "-test" }}
+  labels:
+{{ tuple $envAll "glance" "test" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
   annotations:
     "helm.sh/hook": test-success
 spec:
diff --git a/gnocchi/templates/pod-gnocchi-test.yaml b/gnocchi/templates/pod-gnocchi-test.yaml
index 0d411b55d3..2835c0ed4f 100644
--- a/gnocchi/templates/pod-gnocchi-test.yaml
+++ b/gnocchi/templates/pod-gnocchi-test.yaml
@@ -27,6 +27,8 @@ apiVersion: v1
 kind: Pod
 metadata:
   name: "{{.Release.Name}}-test"
+  labels:
+{{ tuple $envAll "gnocchi" "test" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
   annotations:
     "helm.sh/hook": test-success
 spec:
diff --git a/heat/templates/pod-rally-test.yaml b/heat/templates/pod-rally-test.yaml
index d1cdea370b..3f435d35e2 100644
--- a/heat/templates/pod-rally-test.yaml
+++ b/heat/templates/pod-rally-test.yaml
@@ -27,6 +27,8 @@ apiVersion: v1
 kind: Pod
 metadata:
   name: {{ print $envAll.Release.Name "-test" }}
+  labels:
+{{ tuple $envAll "heat" "test" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
   annotations:
     "helm.sh/hook": test-success
 spec:
diff --git a/keystone/templates/pod-rally-test.yaml b/keystone/templates/pod-rally-test.yaml
index 93bbb54c19..91a314dbfc 100644
--- a/keystone/templates/pod-rally-test.yaml
+++ b/keystone/templates/pod-rally-test.yaml
@@ -27,6 +27,8 @@ apiVersion: v1
 kind: Pod
 metadata:
   name: {{ print $envAll.Release.Name "-test" }}
+  labels:
+{{ tuple $envAll "keystone" "test" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
   annotations:
     "helm.sh/hook": test-success
 spec:
diff --git a/mistral/templates/pod-rally-test.yaml b/mistral/templates/pod-rally-test.yaml
index 2cae93f43b..dd68b16f77 100644
--- a/mistral/templates/pod-rally-test.yaml
+++ b/mistral/templates/pod-rally-test.yaml
@@ -27,6 +27,8 @@ apiVersion: v1
 kind: Pod
 metadata:
   name: {{ print $envAll.Release.Name "-test" }}
+  labels:
+{{ tuple $envAll "mistral" "test" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
   annotations:
     "helm.sh/hook": test-success
 spec:
diff --git a/neutron/templates/pod-rally-test.yaml b/neutron/templates/pod-rally-test.yaml
index 5e0b03d4f3..bcc7a27a34 100644
--- a/neutron/templates/pod-rally-test.yaml
+++ b/neutron/templates/pod-rally-test.yaml
@@ -27,6 +27,8 @@ apiVersion: v1
 kind: Pod
 metadata:
   name: {{ print $envAll.Release.Name "-test" }}
+  labels:
+{{ tuple $envAll "neutron" "test" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
   annotations:
     "helm.sh/hook": test-success
 spec:
diff --git a/nova/templates/pod-rally-test.yaml b/nova/templates/pod-rally-test.yaml
index 60a98d7504..9982282ca2 100644
--- a/nova/templates/pod-rally-test.yaml
+++ b/nova/templates/pod-rally-test.yaml
@@ -27,6 +27,8 @@ apiVersion: v1
 kind: Pod
 metadata:
   name: {{ print $envAll.Release.Name "-test" }}
+  labels:
+{{ tuple $envAll "nova" "test" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
   annotations:
     "helm.sh/hook": test-success
 spec:
diff --git a/rabbitmq/templates/pod-test.yaml b/rabbitmq/templates/pod-test.yaml
index 9658fa1362..ea325fc74a 100644
--- a/rabbitmq/templates/pod-test.yaml
+++ b/rabbitmq/templates/pod-test.yaml
@@ -24,6 +24,8 @@ apiVersion: v1
 kind: Pod
 metadata:
   name: "{{.Release.Name}}-test"
+  labels:
+{{ tuple $envAll "rabbitmq" "test" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
   annotations:
     "helm.sh/hook": test-success
 spec:
diff --git a/senlin/templates/pod-test.yaml b/senlin/templates/pod-test.yaml
index c4d67f2bbc..6ac34d1166 100644
--- a/senlin/templates/pod-test.yaml
+++ b/senlin/templates/pod-test.yaml
@@ -27,6 +27,8 @@ apiVersion: v1
 kind: Pod
 metadata:
   name: "{{.Release.Name}}-test"
+  labels:
+{{ tuple $envAll "senlin" "test" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
   annotations:
     "helm.sh/hook": test-success
 spec:
diff --git a/tools/deployment/armada/multinode/armada-lma.yaml b/tools/deployment/armada/multinode/armada-lma.yaml
index a40ae0444c..6293a4c33b 100644
--- a/tools/deployment/armada/multinode/armada-lma.yaml
+++ b/tools/deployment/armada/multinode/armada-lma.yaml
@@ -206,6 +206,8 @@ data:
     timeout: 3600
     labels:
       release_group: osh-infra-elasticsearch
+  test:
+    enabled: true
   install:
     no_hooks: False
   upgrade:
@@ -215,6 +217,10 @@ data:
         - type: job
           labels:
             release_group: osh-infra-elasticsearch
+        - type: pod
+          labels:
+            release_group: osh-infra-elasticsearch
+            component: test
   values:
     endpoints:
       elasticsearch:
@@ -255,6 +261,8 @@ data:
     timeout: 3600
     labels:
       release_group: osh-infra-fluent-logging
+  test:
+    enabled: true
   install:
     no_hooks: False
   upgrade:
@@ -264,6 +272,10 @@ data:
         - type: job
           labels:
             release_group: osh-infra-fluent-logging
+        - type: pod
+          labels:
+            release_group: osh-infra-fluent-logging
+            component: test
   values:
     endpoints:
       elasticsearch:
@@ -355,6 +367,8 @@ data:
     timeout: 1800
     labels:
       release_group: osh-infra-prometheus
+  test:
+    enabled: true
   install:
     no_hooks: False
   upgrade:
@@ -364,6 +378,10 @@ data:
         - type: job
           labels:
             release_group: osh-infra-prometheus
+        - type: pod
+          labels:
+            release_group: osh-infra-prometheus
+            component: test
   values:
     labels:
       prometheus:
@@ -506,6 +524,8 @@ data:
     timeout: 1800
     labels:
       release_group: osh-infra-grafana
+  test:
+    enabled: true
   install:
     no_hooks: False
   upgrade:
@@ -515,6 +535,10 @@ data:
         - type: job
           labels:
             release_group: osh-infra-grafana
+        - type: pod
+          labels:
+            release_group: osh-infra-grafana
+            component: test
   values:
     endpoints:
       oslo_db:
diff --git a/tools/deployment/armada/multinode/armada-osh.yaml b/tools/deployment/armada/multinode/armada-osh.yaml
index 8c5b560e60..df58a40895 100644
--- a/tools/deployment/armada/multinode/armada-osh.yaml
+++ b/tools/deployment/armada/multinode/armada-osh.yaml
@@ -209,6 +209,8 @@ data:
     timeout: 1800
     labels:
       release_group: osh-keystone-rabbitmq
+  test:
+    enabled: true
   install:
     no_hooks: False
   upgrade:
@@ -218,6 +220,10 @@ data:
         - type: job
           labels:
             release_group: osh-keystone-rabbitmq
+        - type: pod
+          labels:
+            release_group: osh-keystone-rabbitmq
+            component: test
   values:
     endpoints:
       oslo_messaging:
@@ -260,6 +266,8 @@ data:
     timeout: 1800
     labels:
       release_group: osh-keystone
+  test:
+    enabled: true
   install:
     no_hooks: False
   upgrade:
@@ -269,6 +277,10 @@ data:
         - type: job
           labels:
             release_group: osh-keystone
+        - type: pod
+          labels:
+            release_group: osh-keystone
+            component: test
   values:
     endpoints:
       identity:
@@ -391,6 +403,8 @@ data:
     timeout: 1800
     labels:
       release_group: osh-glance-rabbitmq
+  test:
+    enabled: true
   install:
     no_hooks: False
   upgrade:
@@ -400,6 +414,10 @@ data:
         - type: job
           labels:
             release_group: osh-glance-rabbitmq
+        - type: pod
+          labels:
+            release_group: osh-glance-rabbitmq
+            component: test
   values:
     endpoints:
       oslo_messaging:
@@ -442,6 +460,8 @@ data:
     timeout: 1800
     labels:
       release_group: osh-glance
+  test:
+    enabled: true
   install:
     no_hooks: False
   upgrade:
@@ -451,6 +471,10 @@ data:
         - type: job
           labels:
             release_group: osh-glance
+        - type: pod
+          labels:
+            release_group: osh-glance
+            component: test
   values:
     endpoints:
       identity:
@@ -512,6 +536,8 @@ data:
     timeout: 1800
     labels:
       release_group: osh-cinder-rabbitmq
+  test:
+    enabled: true
   install:
     no_hooks: False
   upgrade:
@@ -521,6 +547,10 @@ data:
         - type: job
           labels:
             release_group: osh-cinder-rabbitmq
+        - type: pod
+          labels:
+            release_group: osh-cinder-rabbitmq
+            component: test
   values:
     endpoints:
       oslo_messaging:
@@ -563,6 +593,8 @@ data:
     timeout: 1800
     labels:
       release_group: osh-cinder
+  test:
+    enabled: true
   install:
     no_hooks: False
   upgrade:
@@ -572,6 +604,10 @@ data:
         - type: job
           labels:
             release_group: osh-cinder
+        - type: pod
+          labels:
+            release_group: osh-cinder
+            component: test
   values:
     endpoints:
       identity:
@@ -705,6 +741,8 @@ data:
     timeout: 1800
     labels:
       release_group: osh-nova-rabbitmq
+  test:
+    enabled: true
   install:
     no_hooks: False
   upgrade:
@@ -714,6 +752,10 @@ data:
         - type: job
           labels:
             release_group: osh-nova-rabbitmq
+        - type: pod
+          labels:
+            release_group: osh-nova-rabbitmq
+            component: test
   values:
     endpoints:
       oslo_messaging:
@@ -910,6 +952,8 @@ data:
     timeout: 1800
     labels:
       release_group: osh-neutron-rabbitmq
+  test:
+    enabled: true
   install:
     no_hooks: False
   upgrade:
@@ -919,6 +963,10 @@ data:
         - type: job
           labels:
             release_group: osh-neutron-rabbitmq
+        - type: pod
+          labels:
+            release_group: osh-neutron-rabbitmq
+            component: test
   values:
     endpoints:
       oslo_messaging:
@@ -1085,6 +1133,8 @@ data:
     timeout: 1800
     labels:
       release_group: osh-heat-rabbitmq
+  test:
+    enabled: true
   install:
     no_hooks: False
   upgrade:
@@ -1094,6 +1144,10 @@ data:
         - type: job
           labels:
             release_group: osh-heat-rabbitmq
+        - type: pod
+          labels:
+            release_group: osh-heat-rabbitmq
+            component: test
   values:
     endpoints:
       oslo_messaging:
@@ -1136,6 +1190,8 @@ data:
     timeout: 1800
     labels:
       release_group: osh-heat
+  test:
+    enabled: true
   install:
     no_hooks: False
   upgrade:
@@ -1145,6 +1201,10 @@ data:
         - type: job
           labels:
             release_group: osh-heat
+        - type: pod
+          labels:
+            release_group: osh-heat
+            component: test
   values:
     endpoints:
       identity:
@@ -1218,6 +1278,8 @@ data:
     timeout: 1800
     labels:
       release_group: osh-barbican-rabbitmq
+  test:
+    enabled: true
   install:
     no_hooks: False
   upgrade:
@@ -1227,6 +1289,10 @@ data:
         - type: job
           labels:
             release_group: osh-barbican-rabbitmq
+        - type: pod
+          labels:
+            release_group: osh-barbican-rabbitmq
+            component: test
   values:
     endpoints:
       oslo_messaging:
@@ -1269,6 +1335,8 @@ data:
     timeout: 1800
     labels:
       release_group: osh-barbican
+  test:
+    enabled: true
   install:
     no_hooks: False
   upgrade:
@@ -1278,6 +1346,10 @@ data:
         - type: job
           labels:
             release_group: osh-barbican
+        - type: pod
+          labels:
+            release_group: osh-barbican
+            component: test
   values:
     endpoints:
       identity: