[CORD-2608]
Install helm/kubespray and create chart for XOS

Change-Id: I1bb90fd2575fb399d367985659719378f17680fe
diff --git a/roles/cord-helm-charts/files/core_templates/_helpers.tpl b/roles/cord-helm-charts/files/core_templates/_helpers.tpl
new file mode 100644
index 0000000..399c79a
--- /dev/null
+++ b/roles/cord-helm-charts/files/core_templates/_helpers.tpl
@@ -0,0 +1,8 @@
+{{- define "xos-core.release_labels" }}
+app: {{ printf "%s-%s" .Release.Name .Chart.Name | trunc 63 }}
+version: {{ .Chart.Version }}
+release: {{ .Release.Name }}
+{{- end }}
+{{- define "xos-core.full_name" -}}
+{{- printf "%s-%s" .Release.Name .Chart.Name | trunc 63 -}}
+{{- end -}}
diff --git a/roles/cord-helm-charts/files/core_templates/core-configmap.yaml b/roles/cord-helm-charts/files/core_templates/core-configmap.yaml
new file mode 100644
index 0000000..1e79d79
--- /dev/null
+++ b/roles/cord-helm-charts/files/core_templates/core-configmap.yaml
@@ -0,0 +1,31 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: xos-core
+  labels:
+    {{- include "xos-core.release_labels" . | indent 4 }}
+data:
+  config: |-
+    ---
+    name: xos-core
+    database:
+      name: xos
+      username: postgres
+      password: password
+    logging:
+      version: 1
+      handlers:
+        console:
+          class: logging.StreamHandler
+        file:
+          class: logging.handlers.RotatingFileHandler
+          filename: /var/log/xos.log
+          maxBytes: 10485760
+          backupCount: 5
+      loggers:
+        '':
+          handlers:
+              - console
+              - file
+          level: DEBUG
+    xos_dir: /opt/xos
diff --git a/roles/cord-helm-charts/files/core_templates/core-deployment.yaml b/roles/cord-helm-charts/files/core_templates/core-deployment.yaml
new file mode 100644
index 0000000..8090347
--- /dev/null
+++ b/roles/cord-helm-charts/files/core_templates/core-deployment.yaml
@@ -0,0 +1,34 @@
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: xos-core
+  labels:
+    app: xos-core
+spec:
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: xos-core
+    spec:
+      containers:
+        - name: xos-core
+          image: {{ .Values.images.xos_core.repository }}:{{ .Values.images.xos_core.tag }}
+          # command: ["/bin/bash", "-c", "cd coreapi; ./start_coreapi.sh"]
+          command: ["/bin/bash", "-c", "sleep 86400"]
+          ports:
+            - containerPort: 50051
+              protocol: TCP
+            - containerPort: 50055
+              protocol: TCP
+          volumeMounts:
+            - name: xos-core-config
+              mountPath: /opt/xos/xos_config.yaml
+              subPath: config/xos_config.yaml
+      volumes:
+        - name: xos-core-config
+          configMap:
+            name: xos-core
+            items:
+             - key: config
+               path: config/xos_config.yaml
diff --git a/roles/cord-helm-charts/files/core_templates/core-service.yaml b/roles/cord-helm-charts/files/core_templates/core-service.yaml
new file mode 100644
index 0000000..ab63b07
--- /dev/null
+++ b/roles/cord-helm-charts/files/core_templates/core-service.yaml
@@ -0,0 +1,19 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: "xos-core"
+  labels:
+    {{- include "xos-core.release_labels" . | indent 4 }}
+spec:
+  type: NodePort
+  ports:
+  - port: 50051
+    name: secure
+    targetPort: 50051
+    protocol: TCP
+  - port: 50055
+    name: insecure
+    targetPort: 50055
+    protocol: TCP
+  selector:
+    app: "xos-core"
diff --git a/roles/cord-helm-charts/files/core_templates/db-configmap.yaml b/roles/cord-helm-charts/files/core_templates/db-configmap.yaml
new file mode 100644
index 0000000..45183b2
--- /dev/null
+++ b/roles/cord-helm-charts/files/core_templates/db-configmap.yaml
@@ -0,0 +1,8 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: xos-db
+  labels:
+    {{- include "xos-core.release_labels" . | indent 4 }}
+data:
+  service_5432_name: 'xos-db'
diff --git a/roles/cord-helm-charts/files/core_templates/db-deployment.yaml b/roles/cord-helm-charts/files/core_templates/db-deployment.yaml
new file mode 100644
index 0000000..326c475
--- /dev/null
+++ b/roles/cord-helm-charts/files/core_templates/db-deployment.yaml
@@ -0,0 +1,27 @@
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: xos-db
+  labels:
+    app: xos-db
+spec:
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: xos-db
+      annotations:
+        checksum/config-map: {{ include (print $.Chart.Name "/templates/db-configmap.yaml") . | sha256sum }}
+    spec:
+      containers:
+        - name: xos-db
+          image: {{ .Values.images.xos_db.repository }}:{{ .Values.images.xos_db.tag }}
+          ports:
+            - containerPort: 5432
+              protocol: TCP
+          env:
+            - name: SERVICE_5432_NAME
+              valueFrom:
+                configMapKeyRef:
+                  name: xos-db
+                  key: service_5432_name
diff --git a/roles/cord-helm-charts/files/core_templates/db-service.yaml b/roles/cord-helm-charts/files/core_templates/db-service.yaml
new file mode 100644
index 0000000..96433b2
--- /dev/null
+++ b/roles/cord-helm-charts/files/core_templates/db-service.yaml
@@ -0,0 +1,14 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: "xos-db"
+  labels:
+    {{- include "xos-core.release_labels" . | indent 4 }}
+spec:
+  type: NodePort
+  ports:
+  - port: 5432
+    targetPort: 5432
+    protocol: TCP
+  selector:
+    app: "xos-db"