# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) # Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
...@@ -27,57 +27,57 @@ spec: ...@@ -27,57 +27,57 @@ spec:
spec: spec:
terminationGracePeriodSeconds: 5 terminationGracePeriodSeconds: 5
containers: containers:
- name: connector - name: connector
image: labs.etsi.org:5050/tfs/controller/dlt-connector:latest image: labs.etsi.org:5050/tfs/controller/dlt-connector:latest
imagePullPolicy: Always imagePullPolicy: Always
ports: ports:
- containerPort: 8080 - containerPort: 8080
- containerPort: 9192 - containerPort: 9192
env: env:
- name: LOG_LEVEL - name: LOG_LEVEL
value: "INFO" value: "INFO"
## for debug purposes ## for debug purposes
#- name: DLT_GATEWAY_HOST #- name: DLT_GATEWAY_HOST
# value: "mock-blockchain.tfs-bchain.svc.cluster.local" # value: "mock-blockchain.tfs-bchain.svc.cluster.local"
#- name: DLT_GATEWAY_PORT #- name: DLT_GATEWAY_PORT
# value: "50051" # value: "50051"
readinessProbe: readinessProbe:
exec: exec:
command: ["/bin/grpc_health_probe", "-addr=:8080"] command: ["/bin/grpc_health_probe", "-addr=:8080"]
livenessProbe: livenessProbe:
exec: exec:
command: ["/bin/grpc_health_probe", "-addr=:8080"] command: ["/bin/grpc_health_probe", "-addr=:8080"]
resources: resources:
requests: requests:
cpu: 50m cpu: 50m
memory: 64Mi memory: 64Mi
limits: limits:
cpu: 500m cpu: 500m
memory: 512Mi memory: 512Mi
- name: gateway - name: gateway
image: labs.etsi.org:5050/tfs/controller/dlt-gateway:latest image: labs.etsi.org:5050/tfs/controller/dlt-gateway:latest
imagePullPolicy: Always imagePullPolicy: Always
ports: ports:
- containerPort: 50051 - containerPort: 50051
#readinessProbe: #readinessProbe:
# httpGet: # httpGet:
# path: /health # path: /health
# port: 8081 # port: 8081
# initialDelaySeconds: 5 # initialDelaySeconds: 5
# timeoutSeconds: 5 # timeoutSeconds: 5
#livenessProbe: #livenessProbe:
# httpGet: # httpGet:
# path: /health # path: /health
# port: 8081 # port: 8081
# initialDelaySeconds: 5 # initialDelaySeconds: 5
# timeoutSeconds: 5 # timeoutSeconds: 5
resources: resources:
requests: requests:
cpu: 200m cpu: 200m
memory: 512Mi memory: 512Mi
limits: limits:
cpu: 700m cpu: 700m
memory: 1024Mi memory: 1024Mi
--- ---
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
...@@ -90,11 +90,11 @@ spec: ...@@ -90,11 +90,11 @@ spec:
selector: selector:
app: dltservice app: dltservice
ports: ports:
- name: grpc - name: grpc
protocol: TCP protocol: TCP
port: 8080 port: 8080
targetPort: 8080 targetPort: 8080
- name: metrics - name: metrics
protocol: TCP protocol: TCP
port: 9192 port: 9192
targetPort: 9192 targetPort: 9192
# Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
#
# 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.
apiVersion: apps/v1
kind: Deployment
metadata:
name: e2e-orchestratorservice
spec:
selector:
matchLabels:
app: e2e-orchestratorservice
template:
metadata:
labels:
app: e2e-orchestratorservice
spec:
terminationGracePeriodSeconds: 5
containers:
- name: server
image: labs.etsi.org:5050/tfs/controller/e2e_orchestrator:latest
imagePullPolicy: Always
ports:
- containerPort: 10050
- containerPort: 9192
env:
- name: LOG_LEVEL
value: "INFO"
readinessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:10050"]
livenessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:10050"]
resources:
requests:
cpu: 250m
memory: 128Mi
limits:
cpu: 1000m
memory: 1024Mi
---
apiVersion: v1
kind: Service
metadata:
name: e2e-orchestratorservice
labels:
app: e2e-orchestratorservice
spec:
type: ClusterIP
selector:
app: e2e-orchestratorservice
ports:
- name: grpc
port: 10050
targetPort: 10050
- name: metrics
port: 9192
targetPort: 9192
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: e2e-orchestratorservice-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: e2e-orchestratorservice
minReplicas: 1
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
#behavior:
# scaleDown:
# stabilizationWindowSeconds: 30
# Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
#
# 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.
apiVersion: apps/v1
kind: Deployment
metadata:
name: forecasterservice
spec:
selector:
matchLabels:
app: forecasterservice
#replicas: 1
template:
metadata:
labels:
app: forecasterservice
spec:
terminationGracePeriodSeconds: 5
containers:
- name: server
image: labs.etsi.org:5050/tfs/controller/forecaster:latest
imagePullPolicy: Always
ports:
- containerPort: 10040
- containerPort: 9192
env:
- name: LOG_LEVEL
value: "INFO"
- name: FORECAST_TO_HISTORY_RATIO
value: "10"
startupProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:10040"]
failureThreshold: 30
periodSeconds: 1
readinessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:10040"]
livenessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:10040"]
resources:
requests:
cpu: 250m
memory: 128Mi
limits:
cpu: 1000m
memory: 1024Mi
---
apiVersion: v1
kind: Service
metadata:
name: forecasterservice
labels:
app: forecasterservice
spec:
type: ClusterIP
selector:
app: forecasterservice
ports:
- name: grpc
protocol: TCP
port: 10040
targetPort: 10040
- name: metrics
protocol: TCP
port: 9192
targetPort: 9192
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: forecasterservice-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: forecasterservice
minReplicas: 1
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
#behavior:
# scaleDown:
# stabilizationWindowSeconds: 30
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) # Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
...@@ -27,30 +27,30 @@ spec: ...@@ -27,30 +27,30 @@ spec:
spec: spec:
terminationGracePeriodSeconds: 5 terminationGracePeriodSeconds: 5
containers: containers:
- name: server - name: server
image: labs.etsi.org:5050/tfs/controller/interdomain:latest image: labs.etsi.org:5050/tfs/controller/interdomain:latest
imagePullPolicy: Always imagePullPolicy: Always
ports: ports:
- containerPort: 10010 - containerPort: 10010
- containerPort: 9192 - containerPort: 9192
env: env:
- name: LOG_LEVEL - name: LOG_LEVEL
value: "INFO" value: "INFO"
- name: TOPOLOGY_ABSTRACTOR - name: TOPOLOGY_ABSTRACTOR
value: "DISABLE" value: "DISABLE"
readinessProbe: readinessProbe:
exec: exec:
command: ["/bin/grpc_health_probe", "-addr=:10010"] command: ["/bin/grpc_health_probe", "-addr=:10010"]
livenessProbe: livenessProbe:
exec: exec:
command: ["/bin/grpc_health_probe", "-addr=:10010"] command: ["/bin/grpc_health_probe", "-addr=:10010"]
resources: resources:
requests: requests:
cpu: 250m cpu: 250m
memory: 64Mi memory: 64Mi
limits: limits:
cpu: 1000m cpu: 1000m
memory: 1024Mi memory: 1024Mi
--- ---
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
...@@ -63,11 +63,11 @@ spec: ...@@ -63,11 +63,11 @@ spec:
selector: selector:
app: interdomainservice app: interdomainservice
ports: ports:
- name: grpc - name: grpc
protocol: TCP protocol: TCP
port: 10010 port: 10010
targetPort: 10010 targetPort: 10010
- name: metrics - name: metrics
protocol: TCP protocol: TCP
port: 9192 port: 9192
targetPort: 9192 targetPort: 9192
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) # Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
...@@ -27,28 +27,28 @@ spec: ...@@ -27,28 +27,28 @@ spec:
spec: spec:
terminationGracePeriodSeconds: 5 terminationGracePeriodSeconds: 5
containers: containers:
- name: server - name: server
image: labs.etsi.org:5050/tfs/controller/l3_attackmitigator:latest image: labs.etsi.org:5050/tfs/controller/l3_attackmitigator:latest
imagePullPolicy: Always imagePullPolicy: Always
ports: ports:
- containerPort: 10002 - containerPort: 10002
- containerPort: 9192 - containerPort: 9192
env: env:
- name: LOG_LEVEL - name: LOG_LEVEL
value: "DEBUG" value: "INFO"
readinessProbe: readinessProbe:
exec: exec:
command: ["/bin/grpc_health_probe", "-addr=:10002"] command: ["/bin/grpc_health_probe", "-addr=:10002"]
livenessProbe: livenessProbe:
exec: exec:
command: ["/bin/grpc_health_probe", "-addr=:10002"] command: ["/bin/grpc_health_probe", "-addr=:10002"]
resources: resources:
requests: requests:
cpu: 250m cpu: 250m
memory: 512Mi memory: 512Mi
limits: limits:
cpu: 700m cpu: 700m
memory: 1024Mi memory: 1024Mi
--- ---
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
...@@ -61,13 +61,13 @@ spec: ...@@ -61,13 +61,13 @@ spec:
selector: selector:
app: l3-attackmitigatorservice app: l3-attackmitigatorservice
ports: ports:
- name: metrics - name: metrics
protocol: TCP protocol: TCP
port: 9192 port: 9192
targetPort: 9192 targetPort: 9192
- name: grpc - name: grpc
port: 10002 port: 10002
targetPort: 10002 targetPort: 10002
--- ---
apiVersion: autoscaling/v2 apiVersion: autoscaling/v2
...@@ -82,12 +82,12 @@ spec: ...@@ -82,12 +82,12 @@ spec:
minReplicas: 1 minReplicas: 1
maxReplicas: 10 maxReplicas: 10
metrics: metrics:
- type: Resource - type: Resource
resource: resource:
name: cpu name: cpu
target: target:
type: Utilization type: Utilization
averageUtilization: 80 averageUtilization: 80
behavior: behavior:
scaleDown: scaleDown:
stabilizationWindowSeconds: 120 stabilizationWindowSeconds: 120
...@@ -100,9 +100,9 @@ metadata: ...@@ -100,9 +100,9 @@ metadata:
labels: labels:
app: l3-attackmitigatorservice app: l3-attackmitigatorservice
#release: prometheus #release: prometheus
#release: prom # name of the release #release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing # ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name, # the servicemonitor of Prometheus itself: Without the correct name,
# Prometheus cannot identify the metrics of the Flask app as the target.) # Prometheus cannot identify the metrics of the Flask app as the target.)
spec: spec:
selector: selector:
...@@ -112,11 +112,11 @@ spec: ...@@ -112,11 +112,11 @@ spec:
app: l3-attackmitigatorservice # same as above app: l3-attackmitigatorservice # same as above
#release: prometheus # same as above #release: prometheus # same as above
endpoints: endpoints:
- port: metrics # named port in target app - port: metrics # named port in target app
scheme: http scheme: http
path: /metrics # path to scrape path: /metrics # path to scrape
interval: 5s # scrape interval interval: 5s # scrape interval
namespaceSelector: namespaceSelector:
any: false any: false
matchNames: matchNames:
- tfs # namespace where the app is running - tfs # namespace where the app is running
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) # Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
...@@ -27,36 +27,36 @@ spec: ...@@ -27,36 +27,36 @@ spec:
spec: spec:
terminationGracePeriodSeconds: 5 terminationGracePeriodSeconds: 5
containers: containers:
- name: server - name: server
image: labs.etsi.org:5050/tfs/controller/l3_centralizedattackdetector:latest image: labs.etsi.org:5050/tfs/controller/l3_centralizedattackdetector:latest
imagePullPolicy: Always imagePullPolicy: Always
ports: ports:
- containerPort: 10001 - containerPort: 10001
- containerPort: 9192 - containerPort: 9192
env: env:
- name: LOG_LEVEL - name: LOG_LEVEL
value: "DEBUG" value: "INFO"
- name: BATCH_SIZE - name: BATCH_SIZE
value: "256" value: "256"
- name: CAD_CLASSIFICATION_THRESHOLD - name: CAD_CLASSIFICATION_THRESHOLD
value: "0.5" value: "0.5"
- name: MONITORED_KPIS_TIME_INTERVAL_AGG - name: MONITORED_KPIS_TIME_INTERVAL_AGG
value: "60" value: "60"
- name: TEST_ML_MODEL - name: TEST_ML_MODEL
value: "0" value: "0"
readinessProbe: readinessProbe:
exec: exec:
command: ["/bin/grpc_health_probe", "-addr=:10001"] command: ["/bin/grpc_health_probe", "-addr=:10001"]
livenessProbe: livenessProbe:
exec: exec:
command: ["/bin/grpc_health_probe", "-addr=:10001"] command: ["/bin/grpc_health_probe", "-addr=:10001"]
resources: resources:
requests: requests:
cpu: 250m cpu: 250m
memory: 512Mi memory: 512Mi
limits: limits:
cpu: 700m cpu: 700m
memory: 1024Mi memory: 1024Mi
--- ---
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
...@@ -69,13 +69,13 @@ spec: ...@@ -69,13 +69,13 @@ spec:
selector: selector:
app: l3-centralizedattackdetectorservice app: l3-centralizedattackdetectorservice
ports: ports:
- name: metrics - name: metrics
protocol: TCP protocol: TCP
port: 9192 port: 9192
targetPort: 9192 targetPort: 9192
- name: grpc - name: grpc
port: 10001 port: 10001
targetPort: 10001 targetPort: 10001
--- ---
apiVersion: autoscaling/v2 apiVersion: autoscaling/v2
...@@ -90,12 +90,12 @@ spec: ...@@ -90,12 +90,12 @@ spec:
minReplicas: 1 minReplicas: 1
maxReplicas: 10 maxReplicas: 10
metrics: metrics:
- type: Resource - type: Resource
resource: resource:
name: cpu name: cpu
target: target:
type: Utilization type: Utilization
averageUtilization: 80 averageUtilization: 80
behavior: behavior:
scaleDown: scaleDown:
stabilizationWindowSeconds: 120 stabilizationWindowSeconds: 120
...@@ -107,9 +107,9 @@ metadata: ...@@ -107,9 +107,9 @@ metadata:
labels: labels:
app: l3-centralizedattackdetectorservice app: l3-centralizedattackdetectorservice
#release: prometheus #release: prometheus
#release: prom # name of the release #release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing # ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name, # the servicemonitor of Prometheus itself: Without the correct name,
# Prometheus cannot identify the metrics of the Flask app as the target.) # Prometheus cannot identify the metrics of the Flask app as the target.)
spec: spec:
selector: selector:
...@@ -119,11 +119,11 @@ spec: ...@@ -119,11 +119,11 @@ spec:
app: l3-centralizedattackdetectorservice # same as above app: l3-centralizedattackdetectorservice # same as above
#release: prometheus # same as above #release: prometheus # same as above
endpoints: endpoints:
- port: metrics # named port in target app - port: metrics # named port in target app
scheme: http scheme: http
path: /metrics # path to scrape path: /metrics # path to scrape
interval: 5s # scrape interval interval: 5s # scrape interval
namespaceSelector: namespaceSelector:
any: false any: false
matchNames: matchNames:
- tfs # namespace where the app is running - tfs # namespace where the app is running
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) # Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
...@@ -27,27 +27,27 @@ spec: ...@@ -27,27 +27,27 @@ spec:
spec: spec:
terminationGracePeriodSeconds: 5 terminationGracePeriodSeconds: 5
containers: containers:
- name: server - name: server
image: labs.etsi.org:5050/tfs/controller/l3_distributedattackdetector:latest image: labs.etsi.org:5050/tfs/controller/l3_distributedattackdetector:latest
imagePullPolicy: Always imagePullPolicy: Always
ports: ports:
- containerPort: 10000 - containerPort: 10000
env: env:
- name: LOG_LEVEL - name: LOG_LEVEL
value: "DEBUG" value: "INFO"
readinessProbe: readinessProbe:
exec: exec:
command: ["/bin/grpc_health_probe", "-addr=:10000"] command: ["/bin/grpc_health_probe", "-addr=:10000"]
livenessProbe: livenessProbe:
exec: exec:
command: ["/bin/grpc_health_probe", "-addr=:10000"] command: ["/bin/grpc_health_probe", "-addr=:10000"]
resources: resources:
requests: requests:
cpu: 250m cpu: 250m
memory: 512Mi memory: 512Mi
limits: limits:
cpu: 700m cpu: 700m
memory: 1024Mi memory: 1024Mi
--- ---
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
...@@ -58,6 +58,6 @@ spec: ...@@ -58,6 +58,6 @@ spec:
selector: selector:
app: l3-distributedattackdetectorservice app: l3-distributedattackdetectorservice
ports: ports:
- name: grpc - name: grpc
port: 10000 port: 10000
targetPort: 10000 targetPort: 10000
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) # Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
...@@ -28,28 +28,28 @@ spec: ...@@ -28,28 +28,28 @@ spec:
spec: spec:
terminationGracePeriodSeconds: 5 terminationGracePeriodSeconds: 5
containers: containers:
- name: server - name: server
image: labs.etsi.org:5050/tfs/controller/load_generator:latest image: labs.etsi.org:5050/tfs/controller/load_generator:latest
imagePullPolicy: Always imagePullPolicy: Always
ports: ports:
- containerPort: 50052 - containerPort: 50052
- containerPort: 9192 - containerPort: 9192
env: env:
- name: LOG_LEVEL - name: LOG_LEVEL
value: "INFO" value: "INFO"
readinessProbe: readinessProbe:
exec: exec:
command: ["/bin/grpc_health_probe", "-addr=:50052"] command: ["/bin/grpc_health_probe", "-addr=:50052"]
livenessProbe: livenessProbe:
exec: exec:
command: ["/bin/grpc_health_probe", "-addr=:50052"] command: ["/bin/grpc_health_probe", "-addr=:50052"]
resources: resources:
requests: requests:
cpu: 256m cpu: 256m
memory: 64Mi memory: 64Mi
limits: limits:
cpu: 512m cpu: 512m
memory: 128Mi memory: 128Mi
--- ---
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
...@@ -62,11 +62,11 @@ spec: ...@@ -62,11 +62,11 @@ spec:
selector: selector:
app: load-generatorservice app: load-generatorservice
ports: ports:
- name: grpc - name: grpc
protocol: TCP protocol: TCP
port: 50052 port: 50052
targetPort: 50052 targetPort: 50052
- name: metrics - name: metrics
protocol: TCP protocol: TCP
port: 9192 port: 9192
targetPort: 9192 targetPort: 9192
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) # Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
...@@ -27,27 +27,27 @@ spec: ...@@ -27,27 +27,27 @@ spec:
spec: spec:
terminationGracePeriodSeconds: 5 terminationGracePeriodSeconds: 5
containers: containers:
- name: server - name: server
image: labs.etsi.org:5050/tfs/controller/mock_blockchain:latest image: labs.etsi.org:5050/tfs/controller/mock_blockchain:latest
imagePullPolicy: Always imagePullPolicy: Always
ports: ports:
- containerPort: 50051 - containerPort: 50051
env: env:
- name: LOG_LEVEL - name: LOG_LEVEL
value: "INFO" value: "INFO"
readinessProbe: readinessProbe:
exec: exec:
command: ["/bin/grpc_health_probe", "-addr=:50051"] command: ["/bin/grpc_health_probe", "-addr=:50051"]
livenessProbe: livenessProbe:
exec: exec:
command: ["/bin/grpc_health_probe", "-addr=:50051"] command: ["/bin/grpc_health_probe", "-addr=:50051"]
resources: resources:
requests: requests:
cpu: 100m cpu: 100m
memory: 512Mi memory: 512Mi
limits: limits:
cpu: 700m cpu: 700m
memory: 1024Mi memory: 1024Mi
--- ---
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
...@@ -58,7 +58,7 @@ spec: ...@@ -58,7 +58,7 @@ spec:
selector: selector:
app: mock-blockchain app: mock-blockchain
ports: ports:
- name: grpc - name: grpc
protocol: TCP protocol: TCP
port: 50051 port: 50051
targetPort: 50051 targetPort: 50051
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) # Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
...@@ -28,31 +28,31 @@ spec: ...@@ -28,31 +28,31 @@ spec:
spec: spec:
terminationGracePeriodSeconds: 5 terminationGracePeriodSeconds: 5
containers: containers:
- name: server - name: server
image: labs.etsi.org:5050/tfs/controller/monitoring:latest image: labs.etsi.org:5050/tfs/controller/monitoring:latest
imagePullPolicy: Always imagePullPolicy: Always
ports: ports:
- containerPort: 7070 - containerPort: 7070
- containerPort: 9192 - containerPort: 9192
env: env:
- name: LOG_LEVEL - name: LOG_LEVEL
value: "INFO" value: "INFO"
envFrom: envFrom:
- secretRef: - secretRef:
name: qdb-data name: qdb-data
readinessProbe: readinessProbe:
exec: exec:
command: ["/bin/grpc_health_probe", "-addr=:7070"] command: ["/bin/grpc_health_probe", "-addr=:7070"]
livenessProbe: livenessProbe:
exec: exec:
command: ["/bin/grpc_health_probe", "-addr=:7070"] command: ["/bin/grpc_health_probe", "-addr=:7070"]
resources: resources:
requests: requests:
cpu: 250m cpu: 250m
memory: 256Mi memory: 256Mi
limits: limits:
cpu: 1000m cpu: 1000m
memory: 1024Mi memory: 1024Mi
--- ---
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
...@@ -65,11 +65,11 @@ spec: ...@@ -65,11 +65,11 @@ spec:
selector: selector:
app: monitoringservice app: monitoringservice
ports: ports:
- name: grpc - name: grpc
protocol: TCP protocol: TCP
port: 7070 port: 7070
targetPort: 7070 targetPort: 7070
- name: metrics - name: metrics
protocol: TCP protocol: TCP
port: 9192 port: 9192
targetPort: 9192 targetPort: 9192
# Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
#
# 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.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nbiservice
spec:
selector:
matchLabels:
app: nbiservice
replicas: 1
template:
metadata:
labels:
app: nbiservice
spec:
terminationGracePeriodSeconds: 5
containers:
- name: server
image: labs.etsi.org:5050/tfs/controller/nbi:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
- containerPort: 9090
- containerPort: 9192
env:
- name: LOG_LEVEL
value: "INFO"
readinessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:9090"]
livenessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:9090"]
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 500m
memory: 512Mi
---
apiVersion: v1
kind: Service
metadata:
name: nbiservice
labels:
app: nbiservice
spec:
type: ClusterIP
selector:
app: nbiservice
ports:
- name: http
protocol: TCP
port: 8080
targetPort: 8080
- name: grpc
protocol: TCP
port: 9090
targetPort: 9090
- name: metrics
protocol: TCP
port: 9192
targetPort: 9192
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) # Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
...@@ -20,26 +20,40 @@ metadata: ...@@ -20,26 +20,40 @@ metadata:
nginx.ingress.kubernetes.io/rewrite-target: /$2 nginx.ingress.kubernetes.io/rewrite-target: /$2
spec: spec:
rules: rules:
- http: - http:
paths: paths:
- path: /webui(/|$)(.*) - path: /webui(/|$)(.*)
pathType: Prefix pathType: Prefix
backend: backend:
service: service:
name: webuiservice name: webuiservice
port: port:
number: 8004 number: 8004
- path: /grafana(/|$)(.*) - path: /grafana(/|$)(.*)
pathType: Prefix pathType: Prefix
backend: backend:
service: service:
name: webuiservice name: webuiservice
port: port:
number: 3000 number: 3000
- path: /()(restconf/.*) - path: /()(restconf/.*)
pathType: Prefix pathType: Prefix
backend: backend:
service: service:
name: computeservice name: nbiservice
port: port:
number: 8080 number: 8080
- path: /()(tfs-api/.*)
pathType: Prefix
backend:
service:
name: nbiservice
port:
number: 8080
- path: /()(bmw/.*)
pathType: Prefix
backend:
service:
name: nbiservice
port:
number: 8080
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) # Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
...@@ -27,33 +27,33 @@ spec: ...@@ -27,33 +27,33 @@ spec:
spec: spec:
terminationGracePeriodSeconds: 5 terminationGracePeriodSeconds: 5
containers: containers:
- name: server - name: server
image: labs.etsi.org:5050/tfs/controller/opticalattackdetector:latest image: labs.etsi.org:5050/tfs/controller/opticalattackdetector:latest
imagePullPolicy: Always imagePullPolicy: Always
ports: ports:
- containerPort: 10006 - containerPort: 10006
- containerPort: 9192 - containerPort: 9192
env: env:
- name: LOG_LEVEL - name: LOG_LEVEL
value: "INFO" value: "INFO"
- name: REDIS_PASSWORD - name: REDIS_PASSWORD
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: redis-secrets name: redis-secrets
key: REDIS_PASSWORD key: REDIS_PASSWORD
readinessProbe: readinessProbe:
exec: exec:
command: ["/bin/grpc_health_probe", "-addr=:10006"] command: ["/bin/grpc_health_probe", "-addr=:10006"]
livenessProbe: livenessProbe:
exec: exec:
command: ["/bin/grpc_health_probe", "-addr=:10006"] command: ["/bin/grpc_health_probe", "-addr=:10006"]
resources: resources:
requests: requests:
cpu: 250m cpu: 250m
memory: 128Mi memory: 128Mi
limits: limits:
cpu: 1000m cpu: 1000m
memory: 1024Mi memory: 1024Mi
--- ---
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
...@@ -66,12 +66,12 @@ spec: ...@@ -66,12 +66,12 @@ spec:
selector: selector:
app: opticalattackdetectorservice app: opticalattackdetectorservice
ports: ports:
- name: grpc - name: grpc
port: 10006 port: 10006
targetPort: 10006 targetPort: 10006
- name: metrics - name: metrics
port: 9192 port: 9192
targetPort: 9192 targetPort: 9192
--- ---
apiVersion: autoscaling/v2 apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler kind: HorizontalPodAutoscaler
...@@ -85,12 +85,12 @@ spec: ...@@ -85,12 +85,12 @@ spec:
minReplicas: 1 minReplicas: 1
maxReplicas: 20 maxReplicas: 20
metrics: metrics:
- type: Resource - type: Resource
resource: resource:
name: cpu name: cpu
target: target:
type: Utilization type: Utilization
averageUtilization: 80 averageUtilization: 80
#behavior: #behavior:
# scaleDown: # scaleDown:
# stabilizationWindowSeconds: 30 # stabilizationWindowSeconds: 30
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) # Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
...@@ -28,33 +28,33 @@ spec: ...@@ -28,33 +28,33 @@ spec:
spec: spec:
terminationGracePeriodSeconds: 5 terminationGracePeriodSeconds: 5
containers: containers:
- name: server - name: server
image: labs.etsi.org:5050/tfs/controller/opticalattackmanager:latest image: labs.etsi.org:5050/tfs/controller/opticalattackmanager:latest
imagePullPolicy: Always imagePullPolicy: Always
ports: ports:
- containerPort: 10005 - containerPort: 10005
- containerPort: 9192 - containerPort: 9192
env: env:
- name: LOG_LEVEL - name: LOG_LEVEL
value: "INFO" value: "INFO"
- name: MONITORING_INTERVAL - name: MONITORING_INTERVAL
value: "30" value: "30"
- name: OPTICALATTACKMANAGERSERVICE_LOOP_MIN_WORKERS - name: OPTICALATTACKMANAGERSERVICE_LOOP_MIN_WORKERS
value: "2" # remember to align this with the resource limits value: "2" # remember to align this with the resource limits
- name: OPTICALATTACKMANAGERSERVICE_LOOP_MAX_WORKERS - name: OPTICALATTACKMANAGERSERVICE_LOOP_MAX_WORKERS
value: "10" # remember to align this with the resource limits value: "10" # remember to align this with the resource limits
- name: REDIS_PASSWORD - name: REDIS_PASSWORD
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: redis-secrets name: redis-secrets
key: REDIS_PASSWORD key: REDIS_PASSWORD
resources: resources:
requests: requests:
cpu: 250m cpu: 250m
memory: 128Mi memory: 128Mi
limits: limits:
cpu: 10000m cpu: 10000m
memory: 10240Mi memory: 10240Mi
--- ---
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
...@@ -67,9 +67,9 @@ spec: ...@@ -67,9 +67,9 @@ spec:
selector: selector:
app: opticalattackmanagerservice app: opticalattackmanagerservice
ports: ports:
- name: grpc - name: grpc
port: 10005 port: 10005
targetPort: 10005 targetPort: 10005
- name: metrics - name: metrics
port: 9192 port: 9192
targetPort: 9192 targetPort: 9192
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) # Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
...@@ -27,28 +27,28 @@ spec: ...@@ -27,28 +27,28 @@ spec:
spec: spec:
terminationGracePeriodSeconds: 5 terminationGracePeriodSeconds: 5
containers: containers:
- name: server - name: server
image: labs.etsi.org:5050/tfs/controller/opticalattackmitigator:latest image: labs.etsi.org:5050/tfs/controller/opticalattackmitigator:latest
imagePullPolicy: Always imagePullPolicy: Always
ports: ports:
- containerPort: 10007 - containerPort: 10007
- containerPort: 9192 - containerPort: 9192
env: env:
- name: LOG_LEVEL - name: LOG_LEVEL
value: "INFO" value: "INFO"
readinessProbe: readinessProbe:
exec: exec:
command: ["/bin/grpc_health_probe", "-addr=:10007"] command: ["/bin/grpc_health_probe", "-addr=:10007"]
livenessProbe: livenessProbe:
exec: exec:
command: ["/bin/grpc_health_probe", "-addr=:10007"] command: ["/bin/grpc_health_probe", "-addr=:10007"]
resources: resources:
requests: requests:
cpu: 250m cpu: 250m
memory: 128Mi memory: 128Mi
limits: limits:
cpu: 1000m cpu: 1000m
memory: 1024Mi memory: 1024Mi
--- ---
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
...@@ -61,12 +61,12 @@ spec: ...@@ -61,12 +61,12 @@ spec:
selector: selector:
app: opticalattackmitigatorservice app: opticalattackmitigatorservice
ports: ports:
- name: grpc - name: grpc
port: 10007 port: 10007
targetPort: 10007 targetPort: 10007
- name: metrics - name: metrics
port: 9192 port: 9192
targetPort: 9192 targetPort: 9192
--- ---
apiVersion: autoscaling/v2 apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler kind: HorizontalPodAutoscaler
...@@ -80,12 +80,12 @@ spec: ...@@ -80,12 +80,12 @@ spec:
minReplicas: 1 minReplicas: 1
maxReplicas: 20 maxReplicas: 20
metrics: metrics:
- type: Resource - type: Resource
resource: resource:
name: cpu name: cpu
target: target:
type: Utilization type: Utilization
averageUtilization: 80 averageUtilization: 80
#behavior: #behavior:
# scaleDown: # scaleDown:
# stabilizationWindowSeconds: 30 # stabilizationWindowSeconds: 30
# Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
#
# 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.
apiVersion: apps/v1
kind: Deployment
metadata:
name: opticalcontrollerservice
spec:
selector:
matchLabels:
app: opticalcontrollerservice
replicas: 1
template:
metadata:
labels:
app: opticalcontrollerservice
spec:
terminationGracePeriodSeconds: 5
containers:
- name: server
image: localhost:32000/tfs/opticalcontroller:dev
imagePullPolicy: Never
ports:
- containerPort: 10060
- containerPort: 9192
env:
- name: LOG_LEVEL
value: "INFO"
#readinessProbe:
# exec:
# command: ["/bin/grpc_health_probe", "-addr=:10060"]
#livenessProbe:
# exec:
# command: ["/bin/grpc_health_probe", "-addr=:10060"]
resources:
requests:
cpu: 500m
memory: 128Mi
limits:
cpu: 1000m
memory: 1024Mi
---
apiVersion: v1
kind: Service
metadata:
name: opticalcontrollerservice
labels:
app: opticalcontrollerservice
spec:
type: ClusterIP
selector:
app: opticalcontrollerservice
ports:
- name: grpc
protocol: TCP
port: 10060
targetPort: 10060
- name: metrics
protocol: TCP
port: 9192
targetPort: 9192
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) # Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
...@@ -28,52 +28,54 @@ spec: ...@@ -28,52 +28,54 @@ spec:
spec: spec:
terminationGracePeriodSeconds: 5 terminationGracePeriodSeconds: 5
containers: containers:
- name: frontend - name: frontend
image: labs.etsi.org:5050/tfs/controller/pathcomp-frontend:latest image: labs.etsi.org:5050/tfs/controller/pathcomp-frontend:latest
imagePullPolicy: Always imagePullPolicy: Always
ports: ports:
- containerPort: 10020 - containerPort: 10020
- containerPort: 9192 - containerPort: 9192
env: env:
- name: LOG_LEVEL - name: LOG_LEVEL
value: "INFO" value: "INFO"
readinessProbe: - name: ENABLE_FORECASTER
exec: value: "NO"
command: ["/bin/grpc_health_probe", "-addr=:10020"] readinessProbe:
livenessProbe: exec:
exec: command: ["/bin/grpc_health_probe", "-addr=:10020"]
command: ["/bin/grpc_health_probe", "-addr=:10020"] livenessProbe:
resources: exec:
requests: command: ["/bin/grpc_health_probe", "-addr=:10020"]
cpu: 250m resources:
memory: 128Mi requests:
limits: cpu: 250m
cpu: 1000m memory: 128Mi
memory: 1024Mi limits:
- name: backend cpu: 1000m
image: labs.etsi.org:5050/tfs/controller/pathcomp-backend:latest memory: 1024Mi
imagePullPolicy: Always - name: backend
ports: image: labs.etsi.org:5050/tfs/controller/pathcomp-backend:latest
- containerPort: 8081 imagePullPolicy: Always
#readinessProbe: ports:
# httpGet: - containerPort: 8081
# path: /health #readinessProbe:
# port: 8081 # httpGet:
# initialDelaySeconds: 5 # path: /health
# timeoutSeconds: 5 # port: 8081
#livenessProbe: # initialDelaySeconds: 5
# httpGet: # timeoutSeconds: 5
# path: /health #livenessProbe:
# port: 8081 # httpGet:
# initialDelaySeconds: 5 # path: /health
# timeoutSeconds: 5 # port: 8081
resources: # initialDelaySeconds: 5
requests: # timeoutSeconds: 5
cpu: 250m resources:
memory: 256Mi requests:
limits: cpu: 250m
cpu: 1000m memory: 256Mi
memory: 1024Mi limits:
cpu: 1000m
memory: 1024Mi
--- ---
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
...@@ -86,18 +88,18 @@ spec: ...@@ -86,18 +88,18 @@ spec:
selector: selector:
app: pathcompservice app: pathcompservice
ports: ports:
- name: grpc - name: grpc
protocol: TCP protocol: TCP
port: 10020 port: 10020
targetPort: 10020 targetPort: 10020
- name: http - name: http
protocol: TCP protocol: TCP
port: 8081 port: 8081
targetPort: 8081 targetPort: 8081
- name: metrics - name: metrics
protocol: TCP protocol: TCP
port: 9192 port: 9192
targetPort: 9192 targetPort: 9192
--- ---
apiVersion: autoscaling/v2 apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler kind: HorizontalPodAutoscaler
...@@ -111,12 +113,12 @@ spec: ...@@ -111,12 +113,12 @@ spec:
minReplicas: 1 minReplicas: 1
maxReplicas: 20 maxReplicas: 20
metrics: metrics:
- type: Resource - type: Resource
resource: resource:
name: cpu name: cpu
target: target:
type: Utilization type: Utilization
averageUtilization: 80 averageUtilization: 80
#behavior: #behavior:
# scaleDown: # scaleDown:
# stabilizationWindowSeconds: 30 # stabilizationWindowSeconds: 30
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) # Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
...@@ -108,22 +108,22 @@ spec: ...@@ -108,22 +108,22 @@ spec:
limits: limits:
cpu: 2000m cpu: 2000m
memory: 2048Mi memory: 2048Mi
--- #---
apiVersion: autoscaling/v2 #apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler #kind: HorizontalPodAutoscaler
metadata: #metadata:
name: policyservice-hpa # name: policyservice-hpa
spec: #spec:
scaleTargetRef: # scaleTargetRef:
apiVersion: apps/v1 # apiVersion: apps/v1
kind: Deployment # kind: Deployment
name: policyservice # name: policyservice
minReplicas: 1 # minReplicas: 1
maxReplicas: 10 # maxReplicas: 10
metrics: # metrics:
- type: Resource # - type: Resource
resource: # resource:
name: cpu # name: cpu
target: # target:
type: Utilization # type: Utilization
averageUtilization: 80 # averageUtilization: 80
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) # Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
...@@ -60,18 +60,18 @@ spec: ...@@ -60,18 +60,18 @@ spec:
spec: spec:
#serviceAccountName: prometheus #serviceAccountName: prometheus
containers: containers:
- name: prometheus - name: prometheus
image: prom/prometheus:v2.28.1 image: prom/prometheus:v2.28.1
ports: ports:
- containerPort: 9090 - containerPort: 9090
volumeMounts: volumeMounts:
- name: prometheus-config-volume - name: prometheus-config-volume
mountPath: /etc/prometheus/prometheus.yml mountPath: /etc/prometheus/prometheus.yml
subPath: prometheus.yml subPath: prometheus.yml
volumes: volumes:
- name: prometheus-config-volume - name: prometheus-config-volume
configMap: configMap:
name: prometheus-config name: prometheus-config
restartPolicy: Always restartPolicy: Always
--- ---
apiVersion: v1 apiVersion: v1
...@@ -85,8 +85,9 @@ spec: ...@@ -85,8 +85,9 @@ spec:
selector: selector:
app: prometheus app: prometheus
ports: ports:
- name: http - name: http
protocol: TCP protocol: TCP
port: 9090 port: 9090
targetPort: 9090 targetPort: 9090
--- ---
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) # Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
......