Merge "XOS Core complete helm initial submission"
diff --git a/xos-core/Chart.yaml b/xos-core/Chart.yaml
new file mode 100644
index 0000000..40a1708
--- /dev/null
+++ b/xos-core/Chart.yaml
@@ -0,0 +1,2 @@
+name: xos-core
+version: 1.0.0
diff --git a/xos-core/templates/_helpers.tpl b/xos-core/templates/_helpers.tpl
new file mode 100644
index 0000000..399c79a
--- /dev/null
+++ b/xos-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/xos-core/templates/certchain-secret.yaml b/xos-core/templates/certchain-secret.yaml
new file mode 100644
index 0000000..3441992
--- /dev/null
+++ b/xos-core/templates/certchain-secret.yaml
@@ -0,0 +1,8 @@
+apiVersion: v1
+kind: Secret
+metadata:
+  name: cert-chain-secret
+  namespace: default
+type: Opaque
+data:
+  local_certs.crt: {{ .Values.secrets.im_cert_chain }}
\ No newline at end of file
diff --git a/xos-core/templates/chameleon-deployment.yaml b/xos-core/templates/chameleon-deployment.yaml
new file mode 100644
index 0000000..536b4a2
--- /dev/null
+++ b/xos-core/templates/chameleon-deployment.yaml
@@ -0,0 +1,21 @@
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: xos-chameleon
+  labels:
+    app: xos-chameleon    
+spec:
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: xos-chameleon
+    spec:
+      containers:
+        - name: xos-chameleon
+          image: {{ .Values.pull_docker_registry }}{{ .Values.images.xos_chameleon.repository }}:{{ .Values.images.xos_chameleon.tag }}
+          command: ["python chameleon/chameleon/main.py -R 9101 -G xos-core:50055 --swagger-url /apidocs -r"]
+          ports:
+            - containerPort: 9101
+              port: 9101
+              protocol: TCP
\ No newline at end of file
diff --git a/xos-core/templates/chameleon-service.yaml b/xos-core/templates/chameleon-service.yaml
new file mode 100644
index 0000000..0b9da59
--- /dev/null
+++ b/xos-core/templates/chameleon-service.yaml
@@ -0,0 +1,12 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: "xos-chameleon"
+spec:
+  type: NodePort
+  ports:
+  - port: 9101
+    targetPort: 9101 
+    protocol: TCP
+  selector:
+    app: "xos-chameleon"
diff --git a/xos-core/templates/core-configmap.yaml b/xos-core/templates/core-configmap.yaml
new file mode 100644
index 0000000..886a0f5
--- /dev/null
+++ b/xos-core/templates/core-configmap.yaml
@@ -0,0 +1,8 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: xos-core
+  # labels:
+  #   {{- include "xos-core.release_labels" . | indent 4 }}
+data:
+  config: {{ .Values.configs.core_config }}
diff --git a/xos-core/templates/core-deployment.yaml b/xos-core/templates/core-deployment.yaml
new file mode 100644
index 0000000..b9e2c16
--- /dev/null
+++ b/xos-core/templates/core-deployment.yaml
@@ -0,0 +1,60 @@
+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.pull_docker_registry }}{{ .Values.images.xos_core.repository }}:{{ .Values.images.xos_core.tag }}
+          command: ["/bin/bash", "-c", "cd coreapi; ./start_coreapi.sh"]
+          ports:
+            - containerPort: 50051
+              port: 50051
+              protocol: TCP
+            - containerPort: 50055
+              port: 50055
+              protocol: TCP
+          volumeMounts:
+            - name: certchain-volume
+              mountPath: /usr/local/share/ca-certificates
+            - name: coreapi-volume
+              mountPath: /opt/cord_profile
+              readOnly: true
+            - name: xos-core-config
+              mountPath: /opt/xos/xos_config.yaml
+              subPath: config/xos_config.yaml
+            - name: initial-data-config
+              mountPath: /opt/xos/core/migrations/initial_data.yaml
+              subPath: migrations/initial_data.yaml
+      volumes:
+        - name: certchain-volume
+          secret:
+            secretName: cert-chain-secret
+        - name: coreapi-volume
+          secret:
+            secretName: coreapi-cert-secret
+            items:
+            - key: core_api_cert.pem
+              path: coreapisecret/core_api_cert.pem
+            - key: core_api_key.pem
+              path: coreapisecret/core_api_key.pem
+        - name: xos-core-config
+          configMap:
+            name: xos-core 
+            items: 
+             - key: config
+               path: config/xos_config.yaml
+        - name: initial-data-config
+          configMap:
+            name: xos-initial-data 
+            items: 
+             - key: config
+               path: migrations/initial_data.yaml
diff --git a/xos-core/templates/core-service.yaml b/xos-core/templates/core-service.yaml
new file mode 100644
index 0000000..7e56013
--- /dev/null
+++ b/xos-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/xos-core/templates/coreapi-cert-secret.yaml b/xos-core/templates/coreapi-cert-secret.yaml
new file mode 100644
index 0000000..a79c84e
--- /dev/null
+++ b/xos-core/templates/coreapi-cert-secret.yaml
@@ -0,0 +1,9 @@
+apiVersion: v1
+kind: Secret
+metadata:
+  name: coreapi-cert-secret
+  namespace: default
+type: kubernetes.io/tls
+data:
+  core_api_cert.pem: {{ .Values.secrets.core_api_cert }}
+  core_api_key.pem: {{ .Values.secrets.core_api_key }}
diff --git a/xos-core/templates/db-configmap.yaml b/xos-core/templates/db-configmap.yaml
new file mode 100644
index 0000000..45183b2
--- /dev/null
+++ b/xos-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/xos-core/templates/db-deployment.yaml b/xos-core/templates/db-deployment.yaml
new file mode 100644
index 0000000..ca34b69
--- /dev/null
+++ b/xos-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.pull_docker_registry }}{{ .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/xos-core/templates/db-service.yaml b/xos-core/templates/db-service.yaml
new file mode 100644
index 0000000..8afaf64
--- /dev/null
+++ b/xos-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"
diff --git a/xos-core/templates/gateway-configmap.yaml b/xos-core/templates/gateway-configmap.yaml
new file mode 100644
index 0000000..d29b4b3
--- /dev/null
+++ b/xos-core/templates/gateway-configmap.yaml
@@ -0,0 +1,6 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: xos-gateway
+data:
+  config: {{ .Values.configs.gateway_config }}
diff --git a/xos-core/templates/gui-app-configmap.yaml b/xos-core/templates/gui-app-configmap.yaml
new file mode 100644
index 0000000..d387b77
--- /dev/null
+++ b/xos-core/templates/gui-app-configmap.yaml
@@ -0,0 +1,6 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: xos-app-config
+data:
+  config: {{ .Values.configs.gui_app_config }}
diff --git a/xos-core/templates/gui-deployment.yaml b/xos-core/templates/gui-deployment.yaml
new file mode 100644
index 0000000..57f4351
--- /dev/null
+++ b/xos-core/templates/gui-deployment.yaml
@@ -0,0 +1,44 @@
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: xos-gui
+  labels:
+    app: xos-gui    
+spec:
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: xos-gui    
+    spec:
+      containers:
+        - name: xos-gui 
+          image: {{ .Values.pull_docker_registry }}{{ .Values.images.xos_gui.repository }}:{{ .Values.images.xos_gui.tag }}
+          ports:
+            - containerPort: 4000
+              port: 4000
+              protocol: TCP
+          volumeMounts:
+            - name: style-config
+              mountPath: /var/www/dist/style.config.js
+              subPath: style/style.config.js
+            - name: app-config
+              mountPath: /var/www/dist/app.config.js
+              subPath: app/app.config.js
+            - name: extensions-volume
+              mountPath: /var/www/dist/extensions
+      volumes:
+        - name: style-config
+          configMap:
+            name: xos-style-config 
+            items: 
+             - key: config
+               path: style/style.config.js
+        - name: app-config
+          configMap:
+            name: xos-app-config 
+            items: 
+             - key: config
+               path: app/app.config.js
+        - name: extensions-volume
+            emptyDir: {}
diff --git a/xos-core/templates/gui-service.yaml b/xos-core/templates/gui-service.yaml
new file mode 100644
index 0000000..ccf6c83
--- /dev/null
+++ b/xos-core/templates/gui-service.yaml
@@ -0,0 +1,12 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: "xos-gui"
+spec:
+  type: NodePort
+  ports:
+  - port: 4000
+    targetPort: 4000 
+    protocol: TCP
+  selector:
+    app: "xos-gui"
diff --git a/xos-core/templates/gui-style-configmap.yaml b/xos-core/templates/gui-style-configmap.yaml
new file mode 100644
index 0000000..88a1413
--- /dev/null
+++ b/xos-core/templates/gui-style-configmap.yaml
@@ -0,0 +1,6 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: xos-style-config
+data:
+  config: {{ .Values.configs.gui_style_config }}
diff --git a/xos-core/templates/guiextensionstore-deployment.yaml b/xos-core/templates/guiextensionstore-deployment.yaml
new file mode 100644
index 0000000..bc33061
--- /dev/null
+++ b/xos-core/templates/guiextensionstore-deployment.yaml
@@ -0,0 +1,23 @@
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: xos-guiextensionstore
+  labels:
+    app: xos-guiextensionstore    
+spec:
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: xos-guiextensionstore    
+    spec:
+      containers:
+        - name: xos-guiextensionstore 
+          image: {{ .Values.pull_docker_registry }}{{ .Values.images.node.repository }}:{{ .Values.images.node.tag }}
+          command: ["/bin/true"]
+          volumeMounts:
+            - name: extensions-volume
+              mountPath: /var/www/dist/extensions
+      volumes:
+        - name: extensions-volume
+            emptyDir: {}
diff --git a/xos-core/templates/initial-data-configmap.yaml b/xos-core/templates/initial-data-configmap.yaml
new file mode 100644
index 0000000..e7b61c6
--- /dev/null
+++ b/xos-core/templates/initial-data-configmap.yaml
@@ -0,0 +1,6 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: xos-initial-data
+data:
+  config: {{ .Values.configs.initial_data_config }}
diff --git a/xos-core/templates/redis-deployment.yaml b/xos-core/templates/redis-deployment.yaml
new file mode 100644
index 0000000..38a9c8b
--- /dev/null
+++ b/xos-core/templates/redis-deployment.yaml
@@ -0,0 +1,20 @@
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: xos-redis
+  labels:
+    app: xos-redis    
+spec:
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: xos-redis
+    spec:
+      containers:
+        - name: xos-redis
+          image: {{ .Values.pull_docker_registry }}{{ .Values.images.redis.repository }}:{{ .Values.images.redis.tag }}
+          ports:
+            - containerPort: 6379
+              port: 6379 
+              protocol: TCP
\ No newline at end of file
diff --git a/xos-core/templates/redis-service.yaml b/xos-core/templates/redis-service.yaml
new file mode 100644
index 0000000..47e9a38
--- /dev/null
+++ b/xos-core/templates/redis-service.yaml
@@ -0,0 +1,12 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: "redis"
+spec:
+  type: NodePort
+  ports:
+  - port: 6379
+    targetPort: 6379 
+    protocol: TCP
+  selector:
+    app: "xos-redis"
diff --git a/xos-core/templates/tosca-configmap.yaml b/xos-core/templates/tosca-configmap.yaml
new file mode 100644
index 0000000..f20b859
--- /dev/null
+++ b/xos-core/templates/tosca-configmap.yaml
@@ -0,0 +1,6 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: xos-tosca
+data:
+  config: {{ .Values.configs.tosca_config }}
diff --git a/xos-core/templates/tosca-deployment.yaml b/xos-core/templates/tosca-deployment.yaml
new file mode 100644
index 0000000..f4c4ab8
--- /dev/null
+++ b/xos-core/templates/tosca-deployment.yaml
@@ -0,0 +1,36 @@
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: xos-tosca
+  labels:
+    app: xos-tosca    
+spec:
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: xos-tosca    
+    spec:
+      containers:
+        - name: xos-tosca 
+          image: {{ .Values.pull_docker_registry }}{{ .Values.images.xos_tosca.repository }}:{{ .Values.images.xos_tosca.tag }}
+          ports:
+            - containerPort: 9102
+              port: 9102 
+              protocol: TCP
+          volumeMounts:
+            - name: secret-volume
+              mountPath: /usr/local/share/ca-certificates
+            - name: xos-core-config
+              mountPath: /opt/xos-tosca/src/xos-tosca.config.yaml
+              subPath: config/xos-tosca.config.yaml
+      volumes:
+        - name: secret-volume
+          secret:
+            secretName: cert-chain-secret
+        - name: xos-core-config
+          configMap:
+            name: xos-tosca 
+            items: 
+             - key: config
+               path: config/xos-tosca.config.yaml
diff --git a/xos-core/templates/tosca-service.yaml b/xos-core/templates/tosca-service.yaml
new file mode 100644
index 0000000..5fdfbef
--- /dev/null
+++ b/xos-core/templates/tosca-service.yaml
@@ -0,0 +1,12 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: "xos-tosca"
+spec:
+  type: NodePort
+  ports:
+  - port: 9102
+    targetPort: 9102 
+    protocol: TCP
+  selector:
+    app: "xos-tosca"
diff --git a/xos-core/templates/ws-deployment.yaml b/xos-core/templates/ws-deployment.yaml
new file mode 100644
index 0000000..8b3a41d
--- /dev/null
+++ b/xos-core/templates/ws-deployment.yaml
@@ -0,0 +1,32 @@
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: xos-ws
+  labels:
+    app: xos-ws    
+spec:
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: xos-ws
+    spec:
+      containers:
+        - name: xos-ws
+          image: {{ .Values.pull_docker_registry }}{{ .Values.images.xos_ws.repository }}:{{ .Values.images.xos_ws.tag }}
+          command: ["npm start -- --config gateway-config.yml"]
+          ports:
+            - containerPort: 3000
+              port: 3000
+              protocol: TCP
+          volumeMounts:
+            - name: gateway-config
+              mountPath: /var/www/src/config/gateway-config.yml
+              subPath: config/gateway-config.yml
+      volumes:
+        - name: gateway-config
+          configMap:
+            name: xos-gateway 
+            items: 
+             - key: config
+               path: config/gateway-config.yml
\ No newline at end of file
diff --git a/xos-core/templates/ws-service.yaml b/xos-core/templates/ws-service.yaml
new file mode 100644
index 0000000..b3374c3
--- /dev/null
+++ b/xos-core/templates/ws-service.yaml
@@ -0,0 +1,12 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: "xos-ws"
+spec:
+  type: NodePort
+  ports:
+  - port: 3000
+    targetPort: 3000 
+    protocol: TCP
+  selector:
+    app: "xos-ws"
diff --git a/xos-core/values.yaml b/xos-core/values.yaml
new file mode 100644
index 0000000..bbedada
--- /dev/null
+++ b/xos-core/values.yaml
@@ -0,0 +1,69 @@
+pull_docker_registry: docker-registry:5000/
+
+images:
+  xos_core:
+    repository: xosproject/xos-ui
+    tag: 'latest'
+  xos_gui:
+    repository: xosproject/xos-gui
+    tag: 'latest'
+  xos_db:
+    repository: xosproject/xos-postgres
+    tag: 'latest'
+  xos_tosca:
+    repository: xosproject/xos-tosca
+    tag: 'latest'
+  xos_chameleon:
+    repository: xosproject/chameleon
+    tag: 'latest'
+  node:
+    repository: node
+    tag: 'latest'
+  redis:
+    repository: redis
+    tag: 'latest'
+  xos_ws:
+    repository: xosproject/xos-ws
+    tag: 'latest'
+
+# synchronizers:
+#   - name: vsg
+#     repository: xosprogect/vsg-synchronizer
+#     tag: 'latest'
+
+secrets:
+  im_cert_chain: <BASE64_ENCODED_PEM_DATA>
+  core_api_cert: <BASE64_ENCODED_PEM_DATA>
+  core_api_key: <BASE64_ENCODED_PEM_DATA>
+
+configs:
+  initial_data_config: <INITIAL_DATA>
+  core_config: <CORE_CONFIG_DATA>
+  gui_style_config: <STYLE_CONFIG_DATA>
+  gui_app_config: <APP_CONFIG_DATA>
+  gateway_config: <GATEWAY_CONFIG_DATA>
+  tosca_config: <TOSCA_CONFIG_DATA>
+  # |-
+  #   ---
+  #   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