[CONTRIB] Uses new tpls for repos / images

This commit makes Contrib chart to use the new generator for repositories and
images.
As new templates doesn't work well with "sub charts", we move also
subcharts to components folder.

Issue-ID: OOM-2364
Signed-off-by: Sylvain Desbureaux <sylvain.desbureaux@orange.com>
Change-Id: I33ca36a2b25e67fd9f74ae408cd34f58405d6b80
diff --git a/kubernetes/contrib/components/awx/templates/statefulset.yaml b/kubernetes/contrib/components/awx/templates/statefulset.yaml
new file mode 100644
index 0000000..46747cd
--- /dev/null
+++ b/kubernetes/contrib/components/awx/templates/statefulset.yaml
@@ -0,0 +1,213 @@
+{{/*
+# Copyright © 2019 Bell Canada
+#
+# 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.
+*/}}
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ include "common.release" . }}
+    heritage: {{ .Release.Service }}
+spec:
+  podManagementPolicy: OrderedReady
+  replicas: {{ .Values.replicaCount }}
+  serviceName: {{ include "common.fullname" . }}
+  selector:
+    matchLabels:
+      app: {{ include "common.fullname" . }}
+      name: {{ include "common.name" . }}-web-deploy
+      service: django
+  template:
+    metadata:
+      labels:
+        app: {{ include "common.fullname" . }}
+        name: {{ include "common.name" . }}-web-deploy
+        release: {{ include "common.release" . }}
+        service: django
+    spec:
+
+      initContainers:
+      - name: {{ include "common.name" . }}-init-readiness
+        image: {{ include "repositoryGenerator.image.readiness" . }}
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        command:
+        - /app/ready.py
+        args:
+        - --container-name
+        - {{ include "common.name" . }}-mgnt
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+
+      containers:
+
+      - image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.image.web }}
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-web
+        ports:
+        - containerPort: {{ .Values.service.web.internalPort }}
+          protocol: TCP
+        resources:
+          requests:
+            cpu: 500m
+            memory: 1Gi
+        volumeMounts:
+        - mountPath: /etc/tower/settings.py
+          name: awx-application-config
+          readOnly: true
+          subPath: settings.py
+        - mountPath: /etc/tower/conf.d/
+          name: awx-application-credentials
+          readOnly: true
+        - mountPath: /etc/tower/SECRET_KEY
+          name: awx-secret-key
+          readOnly: true
+          subPath: SECRET_KEY
+      - command: ["/bin/sh","-c"]
+        args: ["/usr/bin/launch_awx_task.sh"]
+        env:
+        - name: AWX_SKIP_MIGRATIONS
+          value: "1"
+
+        image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.image.task }}
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-celery
+        resources:
+          requests:
+            cpu: 1500m
+            memory: 2Gi
+        securityContext:
+          privileged: true
+        volumeMounts:
+        - mountPath: /etc/tower/settings.py
+          name: awx-application-config
+          readOnly: true
+          subPath: settings.py
+        - mountPath: /etc/tower/conf.d/
+          name: awx-application-credentials
+          readOnly: true
+        - mountPath: /etc/tower/SECRET_KEY
+          name: awx-secret-key
+          readOnly: true
+          subPath: SECRET_KEY
+      - env:
+        - name: MY_POD_IP
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: status.podIP
+        - name: RABBITMQ_USE_LONGNAME
+          value: "true"
+        - name: RABBITMQ_NODENAME
+          value: rabbit@$(MY_POD_IP)
+        - name: RABBITMQ_ERLANG_COOKIE
+          valueFrom:
+            secretKeyRef:
+              key: rabbitmq_erlang_cookie
+              name: {{ include "common.fullname" . }}-secrets
+        - name: K8S_SERVICE_NAME
+          value: {{ include "common.servicename" . }}-rabbitmq
+
+        image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.image.rabbitmq }}
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-rabbit
+        livenessProbe:
+          exec:
+            command:
+            - rabbitmqctl
+            - status
+          failureThreshold: 3
+          initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
+          periodSeconds: {{ .Values.liveness.periodSeconds }}
+          successThreshold: 1
+          timeoutSeconds: 10
+        ports:
+        - containerPort: {{ .Values.service.rabbitmq.http.internalPort }}
+          name: {{ .Values.service.rabbitmq.http.portName }}
+          protocol: TCP
+        - containerPort: {{ .Values.service.rabbitmq.amqp.internalPort }}
+          name: {{ .Values.service.rabbitmq.amqp.portName }}
+          protocol: TCP
+        readinessProbe:
+          exec:
+            command:
+            - rabbitmqctl
+            - status
+          failureThreshold: 3
+          initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
+          periodSeconds: {{ .Values.liveness.periodSeconds }}
+          successThreshold: 1
+          timeoutSeconds: 10
+        resources:
+          requests:
+            cpu: 500m
+            memory: 2Gi
+        volumeMounts:
+        - mountPath: /etc/rabbitmq
+          name: rabbitmq-config
+
+      - image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.image.memcached }}
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-memcached
+        resources:
+          requests:
+            cpu: 500m
+            memory: 1Gi
+      serviceAccount: {{ include "common.fullname" . }}
+      serviceAccountName: {{ include "common.fullname" . }}
+      volumes:
+      - configMap:
+          defaultMode: 420
+          items:
+          - key: awx_settings
+            path: settings.py
+          name: {{ include "common.fullname" . }}-settings
+        name: awx-application-config
+      - name: awx-application-credentials
+        secret:
+          defaultMode: 420
+          items:
+          - key: credentials_py
+            path: credentials.py
+          - key: environment_sh
+            path: environment.sh
+          secretName: {{ include "common.fullname" . }}-secrets
+      - name: awx-secret-key
+        secret:
+          defaultMode: 420
+          items:
+          - key: secret_key
+            path: SECRET_KEY
+          secretName: {{ include "common.fullname" . }}-secrets
+      - configMap:
+          defaultMode: 420
+          items:
+          - key: rabbitmq.conf
+            path: rabbitmq.conf
+          - key: enabled_plugins
+            path: enabled_plugins
+          - key: rabbitmq_definitions.json
+            path: rabbitmq_definitions.json
+          name: {{ include "common.fullname" . }}-rabbitmq
+        name: rabbitmq-config
+      imagePullSecrets:
+      - name: "{{ include "common.namespace" . }}-docker-registry-key"