From 8d6fdd33ed4d0d57c63127df4ff4e5051da35a55 Mon Sep 17 00:00:00 2001 From: Sergey Yakubov <sergey.yakubov@desy.de> Date: Mon, 6 Apr 2020 18:49:35 +0200 Subject: [PATCH] change AdvertiseIP->AdvertiseURI, update helm chart to set dataservice AdvertiseURI --- .../asapo/configs/asapo-receiver.json | 3 +- .../asapo/templates/receiver-deployment.yaml | 38 +++++++++++++++++++ .../asapo/templates/roles.yaml | 26 +++++++++++++ deploy/asapo_helm_chart/asapo/values.yaml | 2 +- .../asapo_services/scripts/receiver.json.tpl | 2 +- receiver/src/receiver_config.cpp | 2 +- receiver/src/receiver_config.h | 1 - .../receiver_datacenter_config.h | 1 + receiver/src/request_handler_db_write.cpp | 3 +- receiver/unittests/mock_receiver_config.cpp | 2 +- receiver/unittests/test_config.cpp | 7 ++-- .../test_request_handler_db_check_request.cpp | 6 +-- .../test_request_handler_db_writer.cpp | 2 +- .../settings/receiver.json.tpl.lin.in | 2 +- .../settings/receiver.json.tpl.win.in | 2 +- tests/manual/broker_debug_local/receiver.json | 2 +- .../broker_debug_local/receiver.json.tpl | 2 +- .../python_tests/producer/receiver.json.tpl | 2 +- .../producer_wait_bug_mongo/receiver.json.tpl | 2 +- .../manual/receiver_debug_local/receiver.json | 2 +- 20 files changed, 86 insertions(+), 23 deletions(-) diff --git a/deploy/asapo_helm_chart/asapo/configs/asapo-receiver.json b/deploy/asapo_helm_chart/asapo/configs/asapo-receiver.json index 990fe7465..4e13a308b 100644 --- a/deploy/asapo_helm_chart/asapo/configs/asapo-receiver.json +++ b/deploy/asapo_helm_chart/asapo/configs/asapo-receiver.json @@ -1,5 +1,4 @@ { - "AdvertiseIP": "auto", "PerformanceDbServer": "{{ .Chart.Name }}-influxdb:{{ .Values.influxdb.influxdb.service.port }}", "PerformanceDbName": "asapo_receivers", "DatabaseServer": "asapo-mongodb:{{ .Values.ownServices.mongodb.port }}", @@ -7,7 +6,9 @@ "AuthorizationServer": "asapo-authorizer:{{ .Values.ownServices.authorizer.port }}", "AuthorizationInterval": 10000, "ListenPort": {{ .Values.ownServices.receiver.port }}, + "AdvertiseIP": "auto", "DataServer": { + "AdvertiseURI": "auto", "NThreads": {{ .Values.ownServices.receiver.dataServer.nThreads }}, "ListenPort": {{ .Values.ownServices.receiver.dataServer.port }} }, diff --git a/deploy/asapo_helm_chart/asapo/templates/receiver-deployment.yaml b/deploy/asapo_helm_chart/asapo/templates/receiver-deployment.yaml index bcf8c2e10..144feeaf7 100644 --- a/deploy/asapo_helm_chart/asapo/templates/receiver-deployment.yaml +++ b/deploy/asapo_helm_chart/asapo/templates/receiver-deployment.yaml @@ -1,3 +1,15 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: config-script +data: + entrypoint.sh: |- + #!/bin/bash + export TOKEN=`cat /var/run/secrets/kubernetes.io/serviceaccount/token` + export NODE_PORT=`curl https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_SERVICE_PORT/api/v1/namespaces/{{ .Release.Namespace }}/services/asapo-receiver-dataserver --insecure --header "Authorization: Bearer $TOKEN" --silent | jq .spec.ports[0].nodePort` + jq ".DataServer.AdvertiseURI = \"$NODE_IP:$NODE_PORT\"" /etc/receiver/init/asapo-receiver.json > /etc/receiver/asapo-receiver.json +--- + apiVersion: apps/v1 kind: Deployment metadata: @@ -18,7 +30,13 @@ spec: checksum/fluentd-config: {{ .Files.Get "configs/asapo-fluentd.conf" | sha256sum }} spec: volumes: + - name: config-script + configMap: + defaultMode: 0700 + name: config-script - name: asapo-receiver-config + emptyDir: {} + - name: asapo-receiver-config-init configMap: name: asapo-receiver-config - name: shared-volume-offline @@ -28,6 +46,25 @@ spec: persistentVolumeClaim: claimName: asapo-online-pv {{- include "asapo.fluentd.volumes" .Values.ownServices.receiver | indent 8 }} + initContainers: + - name: prepare-config + image: yakser/alpine_curl_jq + command: ['/bin/entrypoint.sh'] + env: + - name: NODE_IP + valueFrom: + fieldRef: + fieldPath: status.hostIP + volumeMounts: + - mountPath: "/etc/receiver" + name: asapo-receiver-config + - mountPath: "/etc/receiver/init" + name: asapo-receiver-config-init + - mountPath: /bin/entrypoint.sh + name: config-script + readOnly: true + subPath: entrypoint.sh + containers: - name: asapo-receiver image: "yakser/asapo-receiver-dev:{{ .Values.common.asapoVersionTag }}" @@ -45,4 +82,5 @@ spec: 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/roles.yaml b/deploy/asapo_helm_chart/asapo/templates/roles.yaml index e69de29bb..e412266d9 100644 --- a/deploy/asapo_helm_chart/asapo/templates/roles.yaml +++ b/deploy/asapo_helm_chart/asapo/templates/roles.yaml @@ -0,0 +1,26 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + creationTimestamp: null + name: role +rules: + - apiGroups: + - "" + resources: + - services + verbs: + - get + - list +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + creationTimestamp: null + name: role-bind +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: role +subjects: + - kind: ServiceAccount + name: default diff --git a/deploy/asapo_helm_chart/asapo/values.yaml b/deploy/asapo_helm_chart/asapo/values.yaml index 8e6d17564..1729e975a 100644 --- a/deploy/asapo_helm_chart/asapo/values.yaml +++ b/deploy/asapo_helm_chart/asapo/values.yaml @@ -30,7 +30,7 @@ ownServices: nThreads: 1 _exposeServiceExtrernally: true dataCache: - enable: false + enable: true sizeGb: 1 receiveToDiskThresholdMB: 200 fileTransfer: diff --git a/deploy/asapo_services/scripts/receiver.json.tpl b/deploy/asapo_services/scripts/receiver.json.tpl index ace0671e8..a5f819235 100644 --- a/deploy/asapo_services/scripts/receiver.json.tpl +++ b/deploy/asapo_services/scripts/receiver.json.tpl @@ -1,5 +1,4 @@ { - "AdvertiseIP": "{{ if or (env "meta.ib_address") "none" | regexMatch "none" }}{{ env "NOMAD_IP_recv" }}{{ else }}{{ env "meta.ib_address" }}{{ end }}", "PerformanceDbServer":"localhost:8400/influxdb", "PerformanceDbName": "asapo_receivers", "DatabaseServer":"auto", @@ -8,6 +7,7 @@ "AuthorizationInterval": 10000, "ListenPort": {{ env "NOMAD_PORT_recv" }}, "DataServer": { + "AdvertiseURI": "{{ if or (env "meta.ib_address") "none" | regexMatch "none" }}{{ env "NOMAD_IP_recv" }}{{ else }}{{ env "meta.ib_address" }}{{ end }}:{{ env "NOMAD_PORT_recv_ds" }}", "NThreads": {{ env "NOMAD_META_receiver_dataserver_nthreads" }}, "ListenPort": {{ env "NOMAD_PORT_recv_ds" }} }, diff --git a/receiver/src/receiver_config.cpp b/receiver/src/receiver_config.cpp index f82f44afe..d919cfd0e 100644 --- a/receiver/src/receiver_config.cpp +++ b/receiver/src/receiver_config.cpp @@ -34,7 +34,7 @@ Error ReceiverConfigFactory::SetConfig(std::string file_name) { (err = parser.GetString("AuthorizationServer", &config.authorization_server)) || (err = parser.GetUInt64("AuthorizationInterval", &config.authorization_interval_ms)) || (err = parser.GetString("PerformanceDbName", &config.performance_db_name)) || - (err = parser.GetString("AdvertiseIP", &config.advertise_ip)) || + (err = parser.Embedded("DataServer").GetString("AdvertiseURI", &config.dataserver.advertise_uri)) || (err = parser.GetString("LogLevel", &log_level)); if (err) { diff --git a/receiver/src/receiver_config.h b/receiver/src/receiver_config.h index c69ff7990..514905eac 100644 --- a/receiver/src/receiver_config.h +++ b/receiver/src/receiver_config.h @@ -23,7 +23,6 @@ struct ReceiverConfig { uint64_t receive_to_disk_threshold_mb = 0; LogLevel log_level = LogLevel::Info; std::string tag; - std::string advertise_ip; ReceiverDataCenterConfig dataserver; std::string discovery_server; }; diff --git a/receiver/src/receiver_data_server/receiver_datacenter_config.h b/receiver/src/receiver_data_server/receiver_datacenter_config.h index ddef216fd..27b4c401c 100644 --- a/receiver/src/receiver_data_server/receiver_datacenter_config.h +++ b/receiver/src/receiver_data_server/receiver_datacenter_config.h @@ -9,6 +9,7 @@ struct ReceiverDataCenterConfig { uint64_t listen_port = 0; uint64_t nthreads = 0; std::string tag; + std::string advertise_uri; }; } diff --git a/receiver/src/request_handler_db_write.cpp b/receiver/src/request_handler_db_write.cpp index 6a0e31bcb..ad0dbf902 100644 --- a/receiver/src/request_handler_db_write.cpp +++ b/receiver/src/request_handler_db_write.cpp @@ -80,8 +80,7 @@ FileInfo RequestHandlerDbWrite::PrepareFileInfo(const Request* request) const { file_info.size = request->GetDataSize(); file_info.id = request->GetDataID(); file_info.buf_id = request->GetSlotId(); - file_info.source = GetReceiverConfig()->advertise_ip + ":" + string_format("%ld", - GetReceiverConfig()->dataserver.listen_port); + file_info.source = GetReceiverConfig()->dataserver.advertise_uri; file_info.metadata = request->GetMetaData(); return file_info; } diff --git a/receiver/unittests/mock_receiver_config.cpp b/receiver/unittests/mock_receiver_config.cpp index 99d2873ce..aacffd49c 100644 --- a/receiver/unittests/mock_receiver_config.cpp +++ b/receiver/unittests/mock_receiver_config.cpp @@ -49,6 +49,7 @@ Error SetReceiverConfig (const ReceiverConfig& config, std::string error_field) config_string += "," + Key("ListenPort", error_field) + std::to_string(config.listen_port); config_string += "," + Key("DataServer", error_field) + "{"; config_string += Key("ListenPort", error_field) + std::to_string(config.dataserver.listen_port); + config_string += "," + Key("AdvertiseURI", error_field) + "\"" + config.dataserver.advertise_uri + "\""; config_string += "," + Key("NThreads", error_field) + std::to_string(config.dataserver.nthreads); config_string += "}"; config_string += "," + Key("DataCache", error_field) + "{"; @@ -63,7 +64,6 @@ Error SetReceiverConfig (const ReceiverConfig& config, std::string error_field) config_string += "," + Key("WriteToDisk", error_field) + (config.write_to_disk ? "true" : "false"); config_string += "," + Key("WriteToDb", error_field) + (config.write_to_db ? "true" : "false"); config_string += "," + Key("LogLevel", error_field) + "\"" + log_level + "\""; - config_string += "," + Key("AdvertiseIP", error_field) + "\"" + config.advertise_ip + "\""; config_string += "," + Key("Tag", error_field) + "\"" + config.tag + "\""; config_string += "}"; diff --git a/receiver/unittests/test_config.cpp b/receiver/unittests/test_config.cpp index 538f6f9dc..d3c81a500 100644 --- a/receiver/unittests/test_config.cpp +++ b/receiver/unittests/test_config.cpp @@ -58,10 +58,9 @@ class ConfigTests : public Test { test_config.use_datacache = false; test_config.datacache_reserved_share = 10; test_config.datacache_size_gb = 2; - test_config.advertise_ip = "host"; test_config.dataserver.nthreads = 5; test_config.discovery_server = "discovery"; - test_config.advertise_ip = "0.0.0.1"; + test_config.dataserver.advertise_uri = "0.0.0.1:4201"; test_config.receive_to_disk_threshold_mb = 50; } @@ -94,7 +93,7 @@ TEST_F(ConfigTests, ReadSettings) { ASSERT_THAT(config->dataserver.nthreads, Eq(5)); ASSERT_THAT(config->dataserver.tag, Eq("receiver1_ds")); ASSERT_THAT(config->discovery_server, Eq("discovery")); - ASSERT_THAT(config->advertise_ip, Eq("0.0.0.1")); + ASSERT_THAT(config->dataserver.advertise_uri, Eq("0.0.0.1:4201")); ASSERT_THAT(config->receive_to_disk_threshold_mb, Eq(50)); } @@ -105,7 +104,7 @@ TEST_F(ConfigTests, ErrorReadSettings) { std::vector<std::string>fields {"PerformanceDbServer", "ListenPort", "DataServer", "ListenPort", "WriteToDisk", "WriteToDb", "DataCache", "Use", "SizeGB", "ReservedShare", "DatabaseServer", "Tag", "AuthorizationServer", "AuthorizationInterval", "PerformanceDbName", "LogLevel", - "NThreads", "DiscoveryServer", "AdvertiseIP", "ReceiveToDiskThresholdMB"}; + "NThreads", "DiscoveryServer", "AdvertiseURI", "ReceiveToDiskThresholdMB"}; for (const auto& field : fields) { auto err = asapo::SetReceiverConfig(test_config, field); ASSERT_THAT(err, Ne(nullptr)); diff --git a/receiver/unittests/test_request_handler_db_check_request.cpp b/receiver/unittests/test_request_handler_db_check_request.cpp index e40cbfbb4..4675c3fdd 100644 --- a/receiver/unittests/test_request_handler_db_check_request.cpp +++ b/receiver/unittests/test_request_handler_db_check_request.cpp @@ -75,7 +75,7 @@ class DbCheckRequestHandlerTests : public Test { std::string expected_beamtime_id = "beamtime_id"; std::string expected_default_stream = "detector"; std::string expected_stream = "stream"; - std::string expected_host_ip = "127.0.0.1"; + std::string expected_host_uri = "127.0.0.1:1234"; uint64_t expected_port = 1234; uint64_t expected_buf_id = 18446744073709551615ull; std::string expected_file_name = "2"; @@ -96,7 +96,7 @@ class DbCheckRequestHandlerTests : public Test { handler.log__ = &mock_logger; mock_request.reset(new NiceMock<MockRequest> {request_header, 1, "", nullptr}); config.database_uri = "127.0.0.1:27017"; - config.advertise_ip = expected_host_ip; + config.dataserver.advertise_uri = expected_host_uri; config.dataserver.listen_port = expected_port; SetReceiverConfig(config, "none"); expected_file_info = PrepareFileInfo(); @@ -196,7 +196,7 @@ FileInfo DbCheckRequestHandlerTests::PrepareFileInfo() { file_info.name = expected_file_name; file_info.id = expected_id; file_info.buf_id = expected_buf_id; - file_info.source = expected_host_ip + ":" + std::to_string(expected_port); + file_info.source = expected_host_uri; file_info.metadata = expected_metadata; return file_info; } diff --git a/receiver/unittests/test_request_handler_db_writer.cpp b/receiver/unittests/test_request_handler_db_writer.cpp index 4f82656c7..ec2c75ae3 100644 --- a/receiver/unittests/test_request_handler_db_writer.cpp +++ b/receiver/unittests/test_request_handler_db_writer.cpp @@ -94,7 +94,7 @@ class DbWriterHandlerTests : public Test { handler.log__ = &mock_logger; mock_request.reset(new NiceMock<MockRequest> {request_header, 1, "", &mock_db_check_handler}); config.database_uri = "127.0.0.1:27017"; - config.advertise_ip = expected_host_ip; + config.dataserver.advertise_uri = expected_host_ip+":"+std::to_string(expected_port); config.dataserver.listen_port = expected_port; SetReceiverConfig(config, "none"); diff --git a/tests/automatic/settings/receiver.json.tpl.lin.in b/tests/automatic/settings/receiver.json.tpl.lin.in index baa9b4b6c..1177861e1 100644 --- a/tests/automatic/settings/receiver.json.tpl.lin.in +++ b/tests/automatic/settings/receiver.json.tpl.lin.in @@ -1,10 +1,10 @@ { - "AdvertiseIP": "127.0.0.1", "PerformanceDbServer":"localhost:8086", "PerformanceDbName": "db_test", "DatabaseServer":"auto", "DiscoveryServer": "localhost:8400/asapo-discovery", "DataServer": { + "AdvertiseURI": "127.0.0.1:{{ env "NOMAD_PORT_recv_ds" }}", "NThreads": 2, "ListenPort": {{ env "NOMAD_PORT_recv_ds" }} }, diff --git a/tests/automatic/settings/receiver.json.tpl.win.in b/tests/automatic/settings/receiver.json.tpl.win.in index d18f3b98d..02fdd657b 100644 --- a/tests/automatic/settings/receiver.json.tpl.win.in +++ b/tests/automatic/settings/receiver.json.tpl.win.in @@ -1,5 +1,4 @@ { - "AdvertiseIP": "127.0.0.1", "PerformanceDbServer":"localhost:8086", "PerformanceDbName": "db_test", "DatabaseServer":"auto", @@ -8,6 +7,7 @@ "AuthorizationInterval": 1000, "ListenPort": {{ env "NOMAD_PORT_recv" }}, "DataServer": { + "AdvertiseURI": "127.0.0.1:{{ env "NOMAD_PORT_recv_ds" }}", "NThreads": 2, "ListenPort": {{ env "NOMAD_PORT_recv_ds" }} }, diff --git a/tests/manual/broker_debug_local/receiver.json b/tests/manual/broker_debug_local/receiver.json index 6a5d12f59..5567105bf 100644 --- a/tests/manual/broker_debug_local/receiver.json +++ b/tests/manual/broker_debug_local/receiver.json @@ -3,8 +3,8 @@ "PerformanceDbName": "db_test", "DatabaseServer":"localhost:27017", "DiscoveryServer": "localhost:8400/discovery", - "AdvertiseIP":"127.0.0.1", "DataServer": { + "AdvertiseURI":"127.0.0.1", "NThreads": 2, "ListenPort": 22000 }, diff --git a/tests/manual/broker_debug_local/receiver.json.tpl b/tests/manual/broker_debug_local/receiver.json.tpl index 1f7cbc7c1..a6c0887d9 100644 --- a/tests/manual/broker_debug_local/receiver.json.tpl +++ b/tests/manual/broker_debug_local/receiver.json.tpl @@ -1,10 +1,10 @@ { - "AdvertiseIP": "127.0.0.1", "PerformanceDbServer":"localhost:8086", "PerformanceDbName": "db_test", "DatabaseServer":"auto", "DiscoveryServer": "localhost:8400/discovery", "DataServer": { + "AdvertiseURI": "127.0.0.1", "NThreads": 2, "ListenPort": {{ env "NOMAD_PORT_recv_ds" }} }, diff --git a/tests/manual/python_tests/producer/receiver.json.tpl b/tests/manual/python_tests/producer/receiver.json.tpl index a235fec0d..6f80d44bb 100644 --- a/tests/manual/python_tests/producer/receiver.json.tpl +++ b/tests/manual/python_tests/producer/receiver.json.tpl @@ -1,10 +1,10 @@ { - "AdvertiseIP": "127.0.0.1", "PerformanceDbServer":"localhost:8086", "PerformanceDbName": "db_test", "DatabaseServer":"localhost:27017", "DiscoveryServer": "localhost:8400/discovery", "DataServer": { + "AdvertiseURI": "127.0.0.1", "NThreads": 2, "ListenPort": {{ env "NOMAD_PORT_recv_ds" }} }, diff --git a/tests/manual/python_tests/producer_wait_bug_mongo/receiver.json.tpl b/tests/manual/python_tests/producer_wait_bug_mongo/receiver.json.tpl index a235fec0d..6f80d44bb 100644 --- a/tests/manual/python_tests/producer_wait_bug_mongo/receiver.json.tpl +++ b/tests/manual/python_tests/producer_wait_bug_mongo/receiver.json.tpl @@ -1,10 +1,10 @@ { - "AdvertiseIP": "127.0.0.1", "PerformanceDbServer":"localhost:8086", "PerformanceDbName": "db_test", "DatabaseServer":"localhost:27017", "DiscoveryServer": "localhost:8400/discovery", "DataServer": { + "AdvertiseURI": "127.0.0.1", "NThreads": 2, "ListenPort": {{ env "NOMAD_PORT_recv_ds" }} }, diff --git a/tests/manual/receiver_debug_local/receiver.json b/tests/manual/receiver_debug_local/receiver.json index 6a5d12f59..5567105bf 100644 --- a/tests/manual/receiver_debug_local/receiver.json +++ b/tests/manual/receiver_debug_local/receiver.json @@ -3,8 +3,8 @@ "PerformanceDbName": "db_test", "DatabaseServer":"localhost:27017", "DiscoveryServer": "localhost:8400/discovery", - "AdvertiseIP":"127.0.0.1", "DataServer": { + "AdvertiseURI":"127.0.0.1", "NThreads": 2, "ListenPort": 22000 }, -- GitLab