From 2efbda3a4f8bb9ac0afb3831fe0dba1af36b6a13 Mon Sep 17 00:00:00 2001 From: Fotis Soldatos <fsoldatos@ubitech.eu> Date: Thu, 21 Jul 2022 14:58:19 +0300 Subject: [PATCH] feat(policy): add monitoring related domain models --- .../monitoring/model/AlarmDescriptor.java | 65 +++++++++++++++++ .../monitoring/model/AlarmResponse.java | 49 +++++++++++++ .../teraflow/policy/monitoring/model/Kpi.java | 8 +-- .../monitoring/model/KpiDescriptor.java | 15 +++- .../monitoring/model/KpiValueRange.java | 41 +++++++++++ .../monitoring/model/SubsDescriptor.java | 70 +++++++++++++++++++ src/policy/target/kubernetes/kubernetes.yml | 16 ++--- 7 files changed, 249 insertions(+), 15 deletions(-) create mode 100644 src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmDescriptor.java create mode 100644 src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmResponse.java create mode 100644 src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiValueRange.java create mode 100644 src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsDescriptor.java diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmDescriptor.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmDescriptor.java new file mode 100644 index 000000000..ac216ee7c --- /dev/null +++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmDescriptor.java @@ -0,0 +1,65 @@ +/* +* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +* +* 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. +*/ + +package eu.teraflow.policy.monitoring.model; + +public class AlarmDescriptor { + private final String alarmDescription; + private final String name; + private final String kpiId; + private final KpiValueRange kpiValueRange; + private final String timestamp; + + public AlarmDescriptor( + String alarmDescription, + String name, + String kpiId, + KpiValueRange kpiValueRange, + String timestamp) { + this.alarmDescription = alarmDescription; + this.name = name; + this.kpiId = kpiId; + this.kpiValueRange = kpiValueRange; + this.timestamp = timestamp; + } + + public String getAlarmDescription() { + return alarmDescription; + } + + public String getName() { + return name; + } + + public String getKpiId() { + return kpiId; + } + + public KpiValueRange getKpiValueRange() { + return kpiValueRange; + } + + public String getTimestamp() { + return timestamp; + } + + @Override + public String toString() { + return String.format( + "%s:{alarmDescription:\"%s\", name:\"%s\", kpiId:\"%s\", %s, timestamp:\"%s\"}", + getClass().getSimpleName(), alarmDescription, name, kpiId, kpiValueRange, timestamp); + } +} diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmResponse.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmResponse.java new file mode 100644 index 000000000..4730c18d0 --- /dev/null +++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmResponse.java @@ -0,0 +1,49 @@ +/* +* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +* +* 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. +*/ + +package eu.teraflow.policy.monitoring.model; + +public class AlarmResponse { + + private final String alarmId; + private final String text; + private final KpiValue<?> kpiValue; + + public AlarmResponse(String alarmId, String text, KpiValue<?> kpiValue) { + this.alarmId = alarmId; + this.text = text; + this.kpiValue = kpiValue; + } + + public String getAlarmId() { + return alarmId; + } + + public String getText() { + return text; + } + + public KpiValue getKpiValue() { + return kpiValue; + } + + @Override + public String toString() { + return String.format( + "%s:{alarmId:\"%s\", text:\"%s\", %s}", + getClass().getSimpleName(), alarmId, text, kpiValue); + } +} diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/Kpi.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/Kpi.java index 4d84c29d4..c04224029 100644 --- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/Kpi.java +++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/Kpi.java @@ -20,9 +20,9 @@ public class Kpi { private final String kpiId; private final String timestamp; - private final String kpiValue; + private final KpiValue<?> kpiValue; - public Kpi(String kpiId, String timestamp, String kpiValue) { + public Kpi(String kpiId, String timestamp, KpiValue<?> kpiValue) { this.kpiId = kpiId; this.timestamp = timestamp; this.kpiValue = kpiValue; @@ -36,14 +36,14 @@ public class Kpi { return timestamp; } - public String getKpiValue() { + public KpiValue getKpiValue() { return kpiValue; } @Override public String toString() { return String.format( - "%s:{kpiId:\"%s\", timeStamp:\"%s\", kpiValue:\"%s\"}", + "%s:{kpiId:\"%s\", timeStamp:\"%s\", %s}", getClass().getSimpleName(), kpiId, timestamp, kpiValue); } } diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiDescriptor.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiDescriptor.java index 85e09ce2e..107c10335 100644 --- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiDescriptor.java +++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiDescriptor.java @@ -18,6 +18,7 @@ package eu.teraflow.policy.monitoring.model; import eu.teraflow.policy.context.model.EndPointId; import eu.teraflow.policy.context.model.ServiceId; +import eu.teraflow.policy.context.model.SliceId; import eu.teraflow.policy.kpi_sample_types.model.KpiSampleType; public class KpiDescriptor { @@ -27,18 +28,21 @@ public class KpiDescriptor { private final String deviceId; private final EndPointId endPointId; private final ServiceId serviceId; + private final SliceId sliceId; public KpiDescriptor( String kpiDescription, KpiSampleType kpiSampleType, String deviceId, EndPointId endPointId, - ServiceId serviceId) { + ServiceId serviceId, + SliceId sliceId) { this.kpiDescription = kpiDescription; this.kpiSampleType = kpiSampleType; this.deviceId = deviceId; this.endPointId = endPointId; this.serviceId = serviceId; + this.sliceId = sliceId; } public String getKpiDescription() { @@ -61,15 +65,20 @@ public class KpiDescriptor { return serviceId; } + public SliceId getSliceId() { + return sliceId; + } + @Override public String toString() { return String.format( - "%s:{kpiDescription:\"%s\", kpiSampleType:\"%s\", deviceId:\"%s\", %s, %s}", + "%s:{kpiDescription:\"%s\", kpiSampleType:\"%s\", deviceId:\"%s\", %s, %s, %s}", getClass().getSimpleName(), kpiDescription, kpiSampleType.toString(), deviceId, endPointId, - serviceId); + serviceId, + sliceId); } } diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiValueRange.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiValueRange.java new file mode 100644 index 000000000..baa7c32c4 --- /dev/null +++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiValueRange.java @@ -0,0 +1,41 @@ +/* +* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +* +* 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. +*/ + +package eu.teraflow.policy.monitoring.model; + +public class KpiValueRange { + + private final KpiValue<?> kpiMinValue; + private final KpiValue<?> kpiMaxValue; + + public KpiValueRange(KpiValue<?> kpiMinValue, KpiValue<?> kpiMaxValue) { + this.kpiMinValue = kpiMinValue; + this.kpiMaxValue = kpiMaxValue; + } + + public KpiValue getKpiMinValue() { + return kpiMinValue; + } + + public KpiValue getKpiMaxValue() { + return kpiMaxValue; + } + + @Override + public String toString() { + return String.format("%s:{%s, %s}", getClass().getSimpleName(), kpiMinValue, kpiMaxValue); + } +} diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsDescriptor.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsDescriptor.java new file mode 100644 index 000000000..ced38b3f9 --- /dev/null +++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsDescriptor.java @@ -0,0 +1,70 @@ +/* +* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +* +* 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. +*/ + +package eu.teraflow.policy.monitoring.model; + +public class SubsDescriptor { + private final String kpiId; + private final float samplingDurationS; + private final float samplingIntervalS; + private final String startDate; + private final String endDate; + + public SubsDescriptor( + String kpiId, + float samplingDurationS, + float samplingIntervalS, + String startDate, + String endDate) { + this.kpiId = kpiId; + this.samplingDurationS = samplingDurationS; + this.samplingIntervalS = samplingIntervalS; + this.startDate = startDate; + this.endDate = endDate; + } + + public String getKpiId() { + return kpiId; + } + + public float getSamplingDurationS() { + return samplingDurationS; + } + + public float getSamplingIntervalS() { + return samplingIntervalS; + } + + public String getStartDate() { + return startDate; + } + + public String getEndDate() { + return endDate; + } + + @Override + public String toString() { + return String.format( + "%s:{kpiId:\"%s\", samplingDurationS:\"%f\", samplingIntervalS:\"%f\", startDate:\"%s\", endDate:\"%s\"}", + getClass().getSimpleName(), + kpiId, + samplingDurationS, + samplingIntervalS, + startDate, + endDate); + } +} diff --git a/src/policy/target/kubernetes/kubernetes.yml b/src/policy/target/kubernetes/kubernetes.yml index 97929a863..248fb6143 100644 --- a/src/policy/target/kubernetes/kubernetes.yml +++ b/src/policy/target/kubernetes/kubernetes.yml @@ -3,8 +3,8 @@ apiVersion: v1 kind: Service metadata: annotations: - app.quarkus.io/commit-id: cfe69c57feb1d488c2dda620021e3c62d67fc3d3 - app.quarkus.io/build-timestamp: 2022-07-14 - 07:52:22 +0000 + app.quarkus.io/commit-id: 4244298f2625d05dce3c62d8431b03f799506e78 + app.quarkus.io/build-timestamp: 2022-07-21 - 11:54:42 +0000 labels: app.kubernetes.io/name: policyservice app: policyservice @@ -25,8 +25,8 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - app.quarkus.io/commit-id: cfe69c57feb1d488c2dda620021e3c62d67fc3d3 - app.quarkus.io/build-timestamp: 2022-07-14 - 07:52:22 +0000 + app.quarkus.io/commit-id: 4244298f2625d05dce3c62d8431b03f799506e78 + app.quarkus.io/build-timestamp: 2022-07-21 - 11:54:42 +0000 labels: app: policyservice app.kubernetes.io/name: policyservice @@ -39,8 +39,8 @@ spec: template: metadata: annotations: - app.quarkus.io/commit-id: cfe69c57feb1d488c2dda620021e3c62d67fc3d3 - app.quarkus.io/build-timestamp: 2022-07-14 - 07:52:22 +0000 + app.quarkus.io/commit-id: 4244298f2625d05dce3c62d8431b03f799506e78 + app.quarkus.io/build-timestamp: 2022-07-21 - 11:54:42 +0000 labels: app: policyservice app.kubernetes.io/name: policyservice @@ -53,10 +53,10 @@ spec: fieldPath: metadata.namespace - name: MONITORING_SERVICE_HOST value: monitoringservice - - name: SERVICE_SERVICE_HOST - value: serviceservice - name: CONTEXT_SERVICE_HOST value: contextservice + - name: SERVICE_SERVICE_HOST + value: serviceservice image: registry.gitlab.com/teraflow-h2020/controller/policy:0.1.0 imagePullPolicy: Always livenessProbe: -- GitLab