From dd28b0f86ea8bcaa2228b94e5722354528ab46dc Mon Sep 17 00:00:00 2001
From: Sergey Yakubov <sergey.yakubov@desy.de>
Date: Tue, 31 Mar 2020 15:40:00 +0200
Subject: [PATCH] discovery

---
 .../asapo/configs/asapo-broker.json           |  2 +-
 .../asapo/configs/asapo-discovery.json        | 23 +++++++++
 .../asapo/configs/asapo-file-transfer.json    |  5 ++
 .../asapo/configs/asapo-fluentd.conf          |  1 +
 .../asapo/configs/asapo-receiver.json         | 24 +++++++++
 .../asapo/templates/_service.tpl              |  2 +-
 .../asapo/templates/authorizer-ingress.yaml   |  2 -
 .../asapo/templates/configs.yaml              |  4 --
 .../asapo/templates/discovery-deployment.yaml | 35 +++++++++++++
 .../templates/file-transfer-deployment.yaml   | 50 +++++++++++++++++++
 .../asapo/templates/ingress.yaml              |  7 +++
 .../asapo/templates/receiver-deployment.yaml  | 48 ++++++++++++++++++
 .../asapo/templates/services.yaml             |  6 +--
 deploy/asapo_helm_chart/asapo/values.yaml     | 23 +++++++++
 14 files changed, 220 insertions(+), 12 deletions(-)
 create mode 100644 deploy/asapo_helm_chart/asapo/configs/asapo-discovery.json
 create mode 100644 deploy/asapo_helm_chart/asapo/configs/asapo-file-transfer.json
 create mode 100644 deploy/asapo_helm_chart/asapo/configs/asapo-receiver.json
 delete mode 100644 deploy/asapo_helm_chart/asapo/templates/authorizer-ingress.yaml
 create mode 100644 deploy/asapo_helm_chart/asapo/templates/discovery-deployment.yaml
 create mode 100644 deploy/asapo_helm_chart/asapo/templates/file-transfer-deployment.yaml
 create mode 100644 deploy/asapo_helm_chart/asapo/templates/ingress.yaml
 create mode 100644 deploy/asapo_helm_chart/asapo/templates/receiver-deployment.yaml

diff --git a/deploy/asapo_helm_chart/asapo/configs/asapo-broker.json b/deploy/asapo_helm_chart/asapo/configs/asapo-broker.json
index 10441cd9f..d59aaed6d 100644
--- a/deploy/asapo_helm_chart/asapo/configs/asapo-broker.json
+++ b/deploy/asapo_helm_chart/asapo/configs/asapo-broker.json
@@ -1,6 +1,6 @@
 {
   "DatabaseServer":"auto",
-  "DiscoveryServer": "discovery:{{ .Values.ownServices.discovery.port }}",
+  "DiscoveryServer": "asapo-discovery:{{ .Values.ownServices.discovery.port }}",
   "PerformanceDbServer":"{{ .Chart.Name }}-influxdb:{{ .Values.influxdb.influxdb.service.port }}",
   "PerformanceDbName": "asapo_brokers",
   "Port": {{ .Values.ownServices.broker.port }},
diff --git a/deploy/asapo_helm_chart/asapo/configs/asapo-discovery.json b/deploy/asapo_helm_chart/asapo/configs/asapo-discovery.json
new file mode 100644
index 000000000..fdd032094
--- /dev/null
+++ b/deploy/asapo_helm_chart/asapo/configs/asapo-discovery.json
@@ -0,0 +1,23 @@
+{
+  "Mode": "static",
+  "Receiver": {
+    "StaticEndpoints": [
+      "127.0.0.1:22001"
+    ],
+    "MaxConnections": 32,
+    "UseIBAddress": false
+  },
+  "Broker": {
+    "StaticEndpoint": "127.0.0.1:5005"
+  },
+  "Mongo": {
+    "StaticEndpoint": "127.0.0.1:27017"
+  },
+  "FileTransferService": {
+    "StaticEndpoint": "127.0.0.1:27017"
+  },
+  "Port": {{ .Values.ownServices.discovery.port }},
+  "LogLevel": "debug"
+}
+
+
diff --git a/deploy/asapo_helm_chart/asapo/configs/asapo-file-transfer.json b/deploy/asapo_helm_chart/asapo/configs/asapo-file-transfer.json
new file mode 100644
index 000000000..49cc9bfc3
--- /dev/null
+++ b/deploy/asapo_helm_chart/asapo/configs/asapo-file-transfer.json
@@ -0,0 +1,5 @@
+{
+  "Port": {{ .Values.ownServices.fileTransfer.port }},
+  "LogLevel":"debug",
+  "SecretFile":"/etc/file-transfer/auth_secret.key"
+}
diff --git a/deploy/asapo_helm_chart/asapo/configs/asapo-fluentd.conf b/deploy/asapo_helm_chart/asapo/configs/asapo-fluentd.conf
index 516f52d8a..2ba55b940 100644
--- a/deploy/asapo_helm_chart/asapo/configs/asapo-fluentd.conf
+++ b/deploy/asapo_helm_chart/asapo/configs/asapo-fluentd.conf
@@ -2,6 +2,7 @@
 @type tail
 path /var/log/containers/{{ .service.serviceName }}*{{ .service.serviceName }}*.log
 pos_file /tmp/{{ .service.serviceName }}.log.pos
+read_from_head true
 tag asapo
 <parse>
 @type json
diff --git a/deploy/asapo_helm_chart/asapo/configs/asapo-receiver.json b/deploy/asapo_helm_chart/asapo/configs/asapo-receiver.json
new file mode 100644
index 000000000..1c0d4439c
--- /dev/null
+++ b/deploy/asapo_helm_chart/asapo/configs/asapo-receiver.json
@@ -0,0 +1,24 @@
+{
+  "AdvertiseIP": "auto",
+  "PerformanceDbServer": "{{ .Chart.Name }}-influxdb:{{ .Values.influxdb.influxdb.service.port }}",
+  "PerformanceDbName": "asapo_receivers",
+  "DatabaseServer": "auto",
+  "DiscoveryServer": "asapo-discovery:{{ .Values.ownServices.discovery.port }}",
+  "AuthorizationServer": "asapo-authorizer:{{ .Values.ownServices.authorizer.port }}",
+  "AuthorizationInterval": 10000,
+  "ListenPort": {{ .Values.ownServices.receiver.port }},
+  "DataServer": {
+    "NThreads": {{ .Values.ownServices.receiver.dataServer.nThreads }},
+    "ListenPort": {{ .Values.ownServices.receiver.dataServer.port }}
+  },
+  "DataCache": {
+    "Use": {{ .Values.ownServices.receiver.dataCache.enable }},
+    "SizeGB": {{ .Values.ownServices.receiver.dataCache.sizeGb }},
+    "ReservedShare": 10
+  },
+  "Tag": "receiver",
+  "WriteToDisk":true,
+  "ReceiveToDiskThresholdMB": {{ .Values.ownServices.receiver.receiveToDiskThresholdMB }},
+  "WriteToDb":true,
+  "LogLevel": "info"
+}
diff --git a/deploy/asapo_helm_chart/asapo/templates/_service.tpl b/deploy/asapo_helm_chart/asapo/templates/_service.tpl
index c766111db..09cb95b02 100644
--- a/deploy/asapo_helm_chart/asapo/templates/_service.tpl
+++ b/deploy/asapo_helm_chart/asapo/templates/_service.tpl
@@ -10,5 +10,5 @@ spec:
     - protocol: TCP
       port: {{ .service.port }}
   selector:
-    app: {{ .service.serviceName }}
+    app: {{ .service.appName | default .service.serviceName }}
 {{- end }}
diff --git a/deploy/asapo_helm_chart/asapo/templates/authorizer-ingress.yaml b/deploy/asapo_helm_chart/asapo/templates/authorizer-ingress.yaml
deleted file mode 100644
index 08bc7107b..000000000
--- a/deploy/asapo_helm_chart/asapo/templates/authorizer-ingress.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-{{ $data := dict "Release" .Release "Values" .Values "service" .Values.ownServices.authorizer }}
-{{- template "asapo.ingress" $data }}
diff --git a/deploy/asapo_helm_chart/asapo/templates/configs.yaml b/deploy/asapo_helm_chart/asapo/templates/configs.yaml
index 4c6fcd30b..6dd1c5c49 100644
--- a/deploy/asapo_helm_chart/asapo/templates/configs.yaml
+++ b/deploy/asapo_helm_chart/asapo/templates/configs.yaml
@@ -1,9 +1,5 @@
-{{ $servicesToConfig := list .Values.ownServices.authorizer.serviceName .Values.ownServices.broker.serviceName }}
-
 {{- range .Values.ownServices }}
   {{ $data := dict "Chart" $.Chart "Template" $.Template "Values" $.Values "Files" $.Files "service" . }}
-    {{- if has .serviceName $servicesToConfig }}
     {{- template "asapo.configmap-fromfile" $data }}
 ---
-  {{- end }}
 {{- end }}
diff --git a/deploy/asapo_helm_chart/asapo/templates/discovery-deployment.yaml b/deploy/asapo_helm_chart/asapo/templates/discovery-deployment.yaml
new file mode 100644
index 000000000..7cee3709d
--- /dev/null
+++ b/deploy/asapo_helm_chart/asapo/templates/discovery-deployment.yaml
@@ -0,0 +1,35 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: asapo-discovery
+  labels:
+    app: asapo-discovery
+spec:
+  replicas: {{ .Values.ownServices.discovery.replicaCount }}
+  selector:
+    matchLabels:
+      app: asapo-discovery
+  template:
+    metadata:
+      labels:
+        app: asapo-discovery
+      annotations:
+        checksum/config: {{ .Files.Get "configs/asapo-discovery.json" | sha256sum  }}
+        checksum/fluentd-config: {{ .Files.Get "configs/asapo-fluentd.conf" | sha256sum  }}
+    spec:
+      volumes:
+        - name: asapo-discovery-config
+          configMap:
+            name: asapo-discovery-config
+        {{- include "asapo.fluentd.volumes" .Values.ownServices.discovery | indent 8 }}
+      containers:
+        - name: asapo-discovery
+          image: "yakser/asapo-discovery-dev:{{ .Values.common.asapoVersionTag }}"
+          command: ["/asapo-discovery"]
+          args: ["-config", "/etc/discovery/asapo-discovery.json"]
+          ports:
+            - containerPort: {{ .Values.ownServices.discovery.port }}
+          volumeMounts:
+            - mountPath: "/etc/discovery"
+              name: asapo-discovery-config
+      {{- include "asapo.fluentd.container" . | indent 8 }}
\ No newline at end of file
diff --git a/deploy/asapo_helm_chart/asapo/templates/file-transfer-deployment.yaml b/deploy/asapo_helm_chart/asapo/templates/file-transfer-deployment.yaml
new file mode 100644
index 000000000..04e5d502f
--- /dev/null
+++ b/deploy/asapo_helm_chart/asapo/templates/file-transfer-deployment.yaml
@@ -0,0 +1,50 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: asapo-file-transfer
+  labels:
+    app: asapo-file-transfer
+spec:
+  replicas: {{ .Values.ownServices.fileTransfer.replicaCount }}
+  selector:
+    matchLabels:
+      app: asapo-file-transfer
+  template:
+    metadata:
+      labels:
+        app: asapo-file-transfer
+      annotations:
+        checksum/config: {{ .Files.Get "configs/asapo-file-transfer.json" | sha256sum  }}
+        checksum/secret: {{ include (print $.Template.BasePath "/auth-secret.yaml") . | sha256sum }}
+        checksum/fluentd-config: {{ .Files.Get "configs/asapo-fluentd.conf" | sha256sum  }}
+    spec:
+      volumes:
+        - name: all-in-one
+          projected:
+            sources:
+              - configMap:
+                  name: asapo-file-transfer-config
+              - secret:
+                  name: auth-secret
+        - name: shared-volume-offline
+          persistentVolumeClaim:
+            claimName: asapo-offline-pv
+        - name: shared-volume-online
+          persistentVolumeClaim:
+            claimName: asapo-online-pv
+        {{- include "asapo.fluentd.volumes" .Values.ownServices.fileTransfer | indent 8 }}
+      containers:
+        - name: asapo-file-transfer
+          image: "yakser/asapo-file-transfer-dev:{{ .Values.common.asapoVersionTag }}"
+          command: ["/asapo-file-transfer"]
+          args: ["-config", "/etc/file-transfer/asapo-file-transfer.json"]
+          ports:
+            - containerPort: {{ .Values.ownServices.fileTransfer.port }}
+          volumeMounts:
+            - mountPath: "/etc/file-transfer"
+              name: all-in-one
+            - mountPath: {{ .Values.common.offlineDir }}
+              name: shared-volume-offline
+            - mountPath: {{ .Values.common.onlineDir }}
+              name: shared-volume-online
+      {{- include "asapo.fluentd.container" . | indent 8 }}
\ No newline at end of file
diff --git a/deploy/asapo_helm_chart/asapo/templates/ingress.yaml b/deploy/asapo_helm_chart/asapo/templates/ingress.yaml
new file mode 100644
index 000000000..9efb8c0ac
--- /dev/null
+++ b/deploy/asapo_helm_chart/asapo/templates/ingress.yaml
@@ -0,0 +1,7 @@
+{{- range .Values.ownServices }}
+  {{- if not ._exposeServiceExtrernally }}
+  {{- $data := dict  "Release" $.Release "Values" $.Values "service" . }}
+  {{- template "asapo.ingress" $data }}
+  {{- end }}
+---
+{{- end }}
diff --git a/deploy/asapo_helm_chart/asapo/templates/receiver-deployment.yaml b/deploy/asapo_helm_chart/asapo/templates/receiver-deployment.yaml
new file mode 100644
index 000000000..bcf8c2e10
--- /dev/null
+++ b/deploy/asapo_helm_chart/asapo/templates/receiver-deployment.yaml
@@ -0,0 +1,48 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: asapo-receiver
+  labels:
+    app: asapo-receiver
+spec:
+  replicas: {{ .Values.ownServices.receiver.replicaCount }}
+  selector:
+    matchLabels:
+      app: asapo-receiver
+  template:
+    metadata:
+      labels:
+        app: asapo-receiver
+      annotations:
+        checksum/config: {{ .Files.Get "configs/asapo-receiver.json" | sha256sum  }}
+        checksum/fluentd-config: {{ .Files.Get "configs/asapo-fluentd.conf" | sha256sum  }}
+    spec:
+      volumes:
+        - name: asapo-receiver-config
+          configMap:
+            name: asapo-receiver-config
+        - name: shared-volume-offline
+          persistentVolumeClaim:
+            claimName: asapo-offline-pv
+        - name: shared-volume-online
+          persistentVolumeClaim:
+            claimName: asapo-online-pv
+        {{- include "asapo.fluentd.volumes" .Values.ownServices.receiver | indent 8 }}
+      containers:
+        - name: asapo-receiver
+          image: "yakser/asapo-receiver-dev:{{ .Values.common.asapoVersionTag }}"
+          command: ["/receiver"]
+          args: ["/etc/receiver/asapo-receiver.json"]
+          ports:
+            - containerPort: {{ .Values.ownServices.receiver.port }}
+              name: http
+            - containerPort: {{ .Values.ownServices.receiver.dataServer.port }}
+              name: http-ds
+          volumeMounts:
+            - mountPath: "/etc/receiver"
+              name: asapo-receiver-config
+            - mountPath: {{ .Values.common.offlineDir }}
+              name: shared-volume-offline
+            - mountPath: {{ .Values.common.onlineDir }}
+              name: shared-volume-online
+      {{- include "asapo.fluentd.container" . | indent 8 }}
\ No newline at end of file
diff --git a/deploy/asapo_helm_chart/asapo/templates/services.yaml b/deploy/asapo_helm_chart/asapo/templates/services.yaml
index c40f4a530..fb7f80661 100644
--- a/deploy/asapo_helm_chart/asapo/templates/services.yaml
+++ b/deploy/asapo_helm_chart/asapo/templates/services.yaml
@@ -1,9 +1,7 @@
-{{ $servicesToConfig := list .Values.ownServices.authorizer.serviceName .Values.ownServices.broker.serviceName }}
-
 {{- range .Values.ownServices }}
   {{ $data := dict "Values" $.Values "service" . }}
-  {{- if has .serviceName $servicesToConfig }}
     {{- template "asapo.service" $data }}
 ---
-  {{- end }}
 {{- end }}
+{{ $data := dict "Values" $.Values "service" .Values.ownServices.receiver.dataServer }}
+{{- template "asapo.service" $data }}
diff --git a/deploy/asapo_helm_chart/asapo/values.yaml b/deploy/asapo_helm_chart/asapo/values.yaml
index d65c1ee1d..890ecf098 100644
--- a/deploy/asapo_helm_chart/asapo/values.yaml
+++ b/deploy/asapo_helm_chart/asapo/values.yaml
@@ -16,6 +16,29 @@ ownServices:
     replicaCount: 1
     port: 5008
     _exposeServiceExtrernally: false
+  receiver:
+    serviceName: asapo-receiver
+    replicaCount: 1
+    port: 5009
+    sidecarLogs: true
+    _exposeServiceExtrernally: true
+    dataServer:
+      appName: asapo-receiver
+      serviceName: asapo-receiver-dataserver
+      port: 5010
+      nThreads: 1
+      _exposeServiceExtrernally: true
+    dataCache:
+      enable: false
+      sizeGb: 1
+    receiveToDiskThresholdMB: 200
+  fileTransfer:
+    serviceName: asapo-file-transfer
+    replicaCount: 1
+    port: 5011
+    sidecarLogs: true
+    _exposeServiceExtrernally: true
+
 
 common:
   authSecret: "12ljzgneasfd"
-- 
GitLab