Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • tfs/controller
1 result
Show changes
Showing
with 857 additions and 615 deletions
......@@ -28,29 +28,29 @@ spec:
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
- 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
......@@ -63,15 +63,15 @@ spec:
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
- name: http
protocol: TCP
port: 8080
targetPort: 8080
- name: grpc
protocol: TCP
port: 9090
targetPort: 9090
- name: metrics
protocol: TCP
port: 9192
targetPort: 9192
......@@ -20,40 +20,40 @@ metadata:
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
rules:
- http:
paths:
- path: /webui(/|$)(.*)
pathType: Prefix
backend:
service:
name: webuiservice
port:
number: 8004
- path: /grafana(/|$)(.*)
pathType: Prefix
backend:
service:
name: webuiservice
port:
number: 3000
- path: /()(restconf/.*)
pathType: Prefix
backend:
service:
name: nbiservice
port:
number: 8080
- path: /()(debug-api/.*)
pathType: Prefix
backend:
service:
name: nbiservice
port:
number: 8080
- path: /()(bmw/.*)
pathType: Prefix
backend:
service:
name: nbiservice
port:
number: 8080
- http:
paths:
- path: /webui(/|$)(.*)
pathType: Prefix
backend:
service:
name: webuiservice
port:
number: 8004
- path: /grafana(/|$)(.*)
pathType: Prefix
backend:
service:
name: webuiservice
port:
number: 3000
- path: /()(restconf/.*)
pathType: Prefix
backend:
service:
name: nbiservice
port:
number: 8080
- path: /()(debug-api/.*)
pathType: Prefix
backend:
service:
name: nbiservice
port:
number: 8080
- path: /()(bmw/.*)
pathType: Prefix
backend:
service:
name: nbiservice
port:
number: 8080
......@@ -27,33 +27,33 @@ spec:
spec:
terminationGracePeriodSeconds: 5
containers:
- name: server
image: labs.etsi.org:5050/tfs/controller/opticalattackdetector:latest
imagePullPolicy: Always
ports:
- containerPort: 10006
- containerPort: 9192
env:
- name: LOG_LEVEL
value: "INFO"
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: redis-secrets
key: REDIS_PASSWORD
readinessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:10006"]
livenessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:10006"]
resources:
requests:
cpu: 250m
memory: 128Mi
limits:
cpu: 1000m
memory: 1024Mi
- name: server
image: labs.etsi.org:5050/tfs/controller/opticalattackdetector:latest
imagePullPolicy: Always
ports:
- containerPort: 10006
- containerPort: 9192
env:
- name: LOG_LEVEL
value: "INFO"
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: redis-secrets
key: REDIS_PASSWORD
readinessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:10006"]
livenessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:10006"]
resources:
requests:
cpu: 250m
memory: 128Mi
limits:
cpu: 1000m
memory: 1024Mi
---
apiVersion: v1
kind: Service
......@@ -66,12 +66,12 @@ spec:
selector:
app: opticalattackdetectorservice
ports:
- name: grpc
port: 10006
targetPort: 10006
- name: metrics
port: 9192
targetPort: 9192
- name: grpc
port: 10006
targetPort: 10006
- name: metrics
port: 9192
targetPort: 9192
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
......@@ -85,12 +85,12 @@ spec:
minReplicas: 1
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
#behavior:
# scaleDown:
# stabilizationWindowSeconds: 30
......@@ -28,33 +28,33 @@ spec:
spec:
terminationGracePeriodSeconds: 5
containers:
- name: server
image: labs.etsi.org:5050/tfs/controller/opticalattackmanager:latest
imagePullPolicy: Always
ports:
- containerPort: 10005
- containerPort: 9192
env:
- name: LOG_LEVEL
value: "INFO"
- name: MONITORING_INTERVAL
value: "30"
- name: OPTICALATTACKMANAGERSERVICE_LOOP_MIN_WORKERS
value: "2" # remember to align this with the resource limits
- name: OPTICALATTACKMANAGERSERVICE_LOOP_MAX_WORKERS
value: "10" # remember to align this with the resource limits
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: redis-secrets
key: REDIS_PASSWORD
resources:
requests:
cpu: 250m
memory: 128Mi
limits:
cpu: 10000m
memory: 10240Mi
- name: server
image: labs.etsi.org:5050/tfs/controller/opticalattackmanager:latest
imagePullPolicy: Always
ports:
- containerPort: 10005
- containerPort: 9192
env:
- name: LOG_LEVEL
value: "INFO"
- name: MONITORING_INTERVAL
value: "30"
- name: OPTICALATTACKMANAGERSERVICE_LOOP_MIN_WORKERS
value: "2" # remember to align this with the resource limits
- name: OPTICALATTACKMANAGERSERVICE_LOOP_MAX_WORKERS
value: "10" # remember to align this with the resource limits
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: redis-secrets
key: REDIS_PASSWORD
resources:
requests:
cpu: 250m
memory: 128Mi
limits:
cpu: 10000m
memory: 10240Mi
---
apiVersion: v1
kind: Service
......@@ -67,9 +67,9 @@ spec:
selector:
app: opticalattackmanagerservice
ports:
- name: grpc
port: 10005
targetPort: 10005
- name: metrics
port: 9192
targetPort: 9192
- name: grpc
port: 10005
targetPort: 10005
- name: metrics
port: 9192
targetPort: 9192
......@@ -27,28 +27,28 @@ spec:
spec:
terminationGracePeriodSeconds: 5
containers:
- name: server
image: labs.etsi.org:5050/tfs/controller/opticalattackmitigator:latest
imagePullPolicy: Always
ports:
- containerPort: 10007
- containerPort: 9192
env:
- name: LOG_LEVEL
value: "INFO"
readinessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:10007"]
livenessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:10007"]
resources:
requests:
cpu: 250m
memory: 128Mi
limits:
cpu: 1000m
memory: 1024Mi
- name: server
image: labs.etsi.org:5050/tfs/controller/opticalattackmitigator:latest
imagePullPolicy: Always
ports:
- containerPort: 10007
- containerPort: 9192
env:
- name: LOG_LEVEL
value: "INFO"
readinessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:10007"]
livenessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:10007"]
resources:
requests:
cpu: 250m
memory: 128Mi
limits:
cpu: 1000m
memory: 1024Mi
---
apiVersion: v1
kind: Service
......@@ -61,12 +61,12 @@ spec:
selector:
app: opticalattackmitigatorservice
ports:
- name: grpc
port: 10007
targetPort: 10007
- name: metrics
port: 9192
targetPort: 9192
- name: grpc
port: 10007
targetPort: 10007
- name: metrics
port: 9192
targetPort: 9192
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
......@@ -80,12 +80,12 @@ spec:
minReplicas: 1
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
- 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/)
#
# 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
......@@ -28,54 +28,54 @@ spec:
spec:
terminationGracePeriodSeconds: 5
containers:
- name: frontend
image: labs.etsi.org:5050/tfs/controller/pathcomp-frontend:latest
imagePullPolicy: Always
ports:
- containerPort: 10020
- containerPort: 9192
env:
- name: LOG_LEVEL
value: "INFO"
- name: ENABLE_FORECASTER
value: "YES"
readinessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:10020"]
livenessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:10020"]
resources:
requests:
cpu: 250m
memory: 128Mi
limits:
cpu: 1000m
memory: 1024Mi
- name: backend
image: labs.etsi.org:5050/tfs/controller/pathcomp-backend:latest
imagePullPolicy: Always
ports:
- containerPort: 8081
#readinessProbe:
# httpGet:
# path: /health
# port: 8081
# initialDelaySeconds: 5
# timeoutSeconds: 5
#livenessProbe:
# httpGet:
# path: /health
# port: 8081
# initialDelaySeconds: 5
# timeoutSeconds: 5
resources:
requests:
cpu: 250m
memory: 256Mi
limits:
cpu: 1000m
memory: 1024Mi
- name: frontend
image: labs.etsi.org:5050/tfs/controller/pathcomp-frontend:latest
imagePullPolicy: Always
ports:
- containerPort: 10020
- containerPort: 9192
env:
- name: LOG_LEVEL
value: "INFO"
- name: ENABLE_FORECASTER
value: "NO"
readinessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:10020"]
livenessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:10020"]
resources:
requests:
cpu: 250m
memory: 128Mi
limits:
cpu: 1000m
memory: 1024Mi
- name: backend
image: labs.etsi.org:5050/tfs/controller/pathcomp-backend:latest
imagePullPolicy: Always
ports:
- containerPort: 8081
#readinessProbe:
# httpGet:
# path: /health
# port: 8081
# initialDelaySeconds: 5
# timeoutSeconds: 5
#livenessProbe:
# httpGet:
# path: /health
# port: 8081
# initialDelaySeconds: 5
# timeoutSeconds: 5
resources:
requests:
cpu: 250m
memory: 256Mi
limits:
cpu: 1000m
memory: 1024Mi
---
apiVersion: v1
kind: Service
......@@ -88,18 +88,18 @@ spec:
selector:
app: pathcompservice
ports:
- name: grpc
protocol: TCP
port: 10020
targetPort: 10020
- name: http
protocol: TCP
port: 8081
targetPort: 8081
- name: metrics
protocol: TCP
port: 9192
targetPort: 9192
- name: grpc
protocol: TCP
port: 10020
targetPort: 10020
- name: http
protocol: TCP
port: 8081
targetPort: 8081
- name: metrics
protocol: TCP
port: 9192
targetPort: 9192
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
......@@ -113,12 +113,12 @@ spec:
minReplicas: 1
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
#behavior:
# scaleDown:
# stabilizationWindowSeconds: 30
......@@ -108,22 +108,22 @@ spec:
limits:
cpu: 2000m
memory: 2048Mi
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: policyservice-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: policyservice
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
#---
#apiVersion: autoscaling/v2
#kind: HorizontalPodAutoscaler
#metadata:
# name: policyservice-hpa
#spec:
# scaleTargetRef:
# apiVersion: apps/v1
# kind: Deployment
# name: policyservice
# minReplicas: 1
# maxReplicas: 10
# metrics:
# - type: Resource
# resource:
# name: cpu
# target:
# type: Utilization
# averageUtilization: 80
......@@ -60,18 +60,18 @@ spec:
spec:
#serviceAccountName: prometheus
containers:
- name: prometheus
image: prom/prometheus:v2.28.1
ports:
- containerPort: 9090
volumeMounts:
- name: prometheus-config-volume
mountPath: /etc/prometheus/prometheus.yml
subPath: prometheus.yml
- name: prometheus
image: prom/prometheus:v2.28.1
ports:
- containerPort: 9090
volumeMounts:
- name: prometheus-config-volume
mountPath: /etc/prometheus/prometheus.yml
subPath: prometheus.yml
volumes:
- name: prometheus-config-volume
configMap:
name: prometheus-config
- name: prometheus-config-volume
configMap:
name: prometheus-config
restartPolicy: Always
---
apiVersion: v1
......@@ -85,8 +85,9 @@ spec:
selector:
app: prometheus
ports:
- name: http
protocol: TCP
port: 9090
targetPort: 9090
- name: http
protocol: TCP
port: 9090
targetPort: 9090
---
......@@ -20,9 +20,9 @@ metadata:
labels:
app: contextservice
#release: prometheus
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
# Prometheus cannot identify the metrics of the Flask app as the target.)
spec:
selector:
......@@ -32,14 +32,14 @@ spec:
app: contextservice # same as above
#release: prometheus # same as above
endpoints:
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
namespaceSelector:
any: false
matchNames:
- tfs # namespace where the app is running
- tfs # namespace where the app is running
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
......@@ -49,9 +49,9 @@ metadata:
labels:
app: deviceservice
#release: prometheus
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
# Prometheus cannot identify the metrics of the Flask app as the target.)
spec:
selector:
......@@ -61,14 +61,14 @@ spec:
app: deviceservice # same as above
#release: prometheus # same as above
endpoints:
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
namespaceSelector:
any: false
matchNames:
- tfs # namespace where the app is running
- tfs # namespace where the app is running
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
......@@ -78,9 +78,9 @@ metadata:
labels:
app: serviceservice
#release: prometheus
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
# Prometheus cannot identify the metrics of the Flask app as the target.)
spec:
selector:
......@@ -90,14 +90,14 @@ spec:
app: serviceservice # same as above
#release: prometheus # same as above
endpoints:
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
namespaceSelector:
any: false
matchNames:
- tfs # namespace where the app is running
- tfs # namespace where the app is running
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
......@@ -107,9 +107,9 @@ metadata:
labels:
app: sliceservice
#release: prometheus
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
# Prometheus cannot identify the metrics of the Flask app as the target.)
spec:
selector:
......@@ -119,14 +119,14 @@ spec:
app: sliceservice # same as above
#release: prometheus # same as above
endpoints:
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
namespaceSelector:
any: false
matchNames:
- tfs # namespace where the app is running
- tfs # namespace where the app is running
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
......@@ -136,9 +136,9 @@ metadata:
labels:
app: pathcompservice
#release: prometheus
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
# Prometheus cannot identify the metrics of the Flask app as the target.)
spec:
selector:
......@@ -148,14 +148,14 @@ spec:
app: pathcompservice # same as above
#release: prometheus # same as above
endpoints:
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
namespaceSelector:
any: false
matchNames:
- tfs # namespace where the app is running
- tfs # namespace where the app is running
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
......@@ -165,9 +165,9 @@ metadata:
labels:
app: monitoringservice
#release: prometheus
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
# Prometheus cannot identify the metrics of the Flask app as the target.)
spec:
selector:
......@@ -177,14 +177,14 @@ spec:
app: monitoringservice # same as above
#release: prometheus # same as above
endpoints:
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
namespaceSelector:
any: false
matchNames:
- tfs # namespace where the app is running
- tfs # namespace where the app is running
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
......@@ -194,9 +194,9 @@ metadata:
labels:
app: dltservice
#release: prometheus
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
# Prometheus cannot identify the metrics of the Flask app as the target.)
spec:
selector:
......@@ -206,14 +206,14 @@ spec:
app: dltservice # same as above
#release: prometheus # same as above
endpoints:
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
namespaceSelector:
any: false
matchNames:
- tfs # namespace where the app is running
- tfs # namespace where the app is running
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
......@@ -223,9 +223,9 @@ metadata:
labels:
app: interdomainservice
#release: prometheus
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
# Prometheus cannot identify the metrics of the Flask app as the target.)
spec:
selector:
......@@ -235,14 +235,14 @@ spec:
app: interdomainservice # same as above
#release: prometheus # same as above
endpoints:
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
namespaceSelector:
any: false
matchNames:
- tfs # namespace where the app is running
- tfs # namespace where the app is running
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
......@@ -252,9 +252,9 @@ metadata:
labels:
app: policyservice
#release: prometheus
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
# Prometheus cannot identify the metrics of the Flask app as the target.)
spec:
selector:
......@@ -264,14 +264,14 @@ spec:
app: policyservice # same as above
#release: prometheus # same as above
endpoints:
- port: metrics # named port in target app
scheme: http
path: /q/metrics # path to scrape
interval: 5s # scrape interval
- port: metrics # named port in target app
scheme: http
path: /q/metrics # path to scrape
interval: 5s # scrape interval
namespaceSelector:
any: false
matchNames:
- tfs # namespace where the app is running
- tfs # namespace where the app is running
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
......@@ -281,9 +281,9 @@ metadata:
labels:
app: ztpservice
#release: prometheus
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
# Prometheus cannot identify the metrics of the Flask app as the target.)
spec:
selector:
......@@ -293,14 +293,14 @@ spec:
app: ztpservice # same as above
#release: prometheus # same as above
endpoints:
- port: metrics # named port in target app
scheme: http
path: /q/metrics # path to scrape
interval: 5s # scrape interval
- port: metrics # named port in target app
scheme: http
path: /q/metrics # path to scrape
interval: 5s # scrape interval
namespaceSelector:
any: false
matchNames:
- tfs # namespace where the app is running
- tfs # namespace where the app is running
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
......@@ -310,9 +310,9 @@ metadata:
labels:
app: nbiservice
#release: prometheus
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
# Prometheus cannot identify the metrics of the Flask app as the target.)
spec:
selector:
......@@ -322,14 +322,14 @@ spec:
app: nbiservice # same as above
#release: prometheus # same as above
endpoints:
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
namespaceSelector:
any: false
matchNames:
- tfs # namespace where the app is running
- tfs # namespace where the app is running
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
......@@ -339,9 +339,9 @@ metadata:
labels:
app: load-generatorservice
#release: prometheus
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
# Prometheus cannot identify the metrics of the Flask app as the target.)
spec:
selector:
......@@ -351,14 +351,14 @@ spec:
app: load-generatorservice # same as above
#release: prometheus # same as above
endpoints:
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
namespaceSelector:
any: false
matchNames:
- tfs # namespace where the app is running
- tfs # namespace where the app is running
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
......@@ -368,9 +368,9 @@ metadata:
labels:
app: dbscanservingservice
#release: prometheus
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
# Prometheus cannot identify the metrics of the Flask app as the target.)
spec:
selector:
......@@ -380,14 +380,14 @@ spec:
app: dbscanservingservice # same as above
#release: prometheus # same as above
endpoints:
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
namespaceSelector:
any: false
matchNames:
- tfs # namespace where the app is running
- tfs # namespace where the app is running
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
......@@ -397,9 +397,9 @@ metadata:
labels:
app: opticalattackmitigatorservice
#release: prometheus
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
# Prometheus cannot identify the metrics of the Flask app as the target.)
spec:
selector:
......@@ -409,14 +409,14 @@ spec:
app: opticalattackmitigatorservice # same as above
#release: prometheus # same as above
endpoints:
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
namespaceSelector:
any: false
matchNames:
- tfs # namespace where the app is running
- tfs # namespace where the app is running
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
......@@ -426,9 +426,9 @@ metadata:
labels:
app: opticalattackdetectorservice
#release: prometheus
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
# Prometheus cannot identify the metrics of the Flask app as the target.)
spec:
selector:
......@@ -438,14 +438,14 @@ spec:
app: opticalattackdetectorservice # same as above
#release: prometheus # same as above
endpoints:
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
namespaceSelector:
any: false
matchNames:
- tfs # namespace where the app is running
- tfs # namespace where the app is running
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
......@@ -455,9 +455,9 @@ metadata:
labels:
app: opticalattackmanagerservice
#release: prometheus
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
# Prometheus cannot identify the metrics of the Flask app as the target.)
spec:
selector:
......@@ -467,11 +467,11 @@ spec:
app: opticalattackmanagerservice # same as above
#release: prometheus # same as above
endpoints:
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
- port: metrics # named port in target app
scheme: http
path: /metrics # path to scrape
interval: 5s # scrape interval
namespaceSelector:
any: false
matchNames:
- tfs # namespace where the app is running
- tfs # namespace where the app is running
......@@ -28,28 +28,28 @@ spec:
spec:
terminationGracePeriodSeconds: 5
containers:
- name: server
image: labs.etsi.org:5050/tfs/controller/service:latest
imagePullPolicy: Always
ports:
- containerPort: 3030
- containerPort: 9192
env:
- name: LOG_LEVEL
value: "INFO"
readinessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:3030"]
livenessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:3030"]
resources:
requests:
cpu: 250m
memory: 128Mi
limits:
cpu: 1000m
memory: 1024Mi
- name: server
image: labs.etsi.org:5050/tfs/controller/service:latest
imagePullPolicy: Always
ports:
- containerPort: 3030
- containerPort: 9192
env:
- name: LOG_LEVEL
value: "INFO"
readinessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:3030"]
livenessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:3030"]
resources:
requests:
cpu: 250m
memory: 128Mi
limits:
cpu: 1000m
memory: 1024Mi
---
apiVersion: v1
kind: Service
......@@ -62,14 +62,14 @@ spec:
selector:
app: serviceservice
ports:
- name: grpc
protocol: TCP
port: 3030
targetPort: 3030
- name: metrics
protocol: TCP
port: 9192
targetPort: 9192
- name: grpc
protocol: TCP
port: 3030
targetPort: 3030
- name: metrics
protocol: TCP
port: 9192
targetPort: 9192
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
......@@ -83,12 +83,12 @@ spec:
minReplicas: 1
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
#behavior:
# scaleDown:
# stabilizationWindowSeconds: 30
......@@ -28,33 +28,33 @@ spec:
spec:
terminationGracePeriodSeconds: 5
containers:
- name: server
image: labs.etsi.org:5050/tfs/controller/slice:latest
imagePullPolicy: Always
ports:
- containerPort: 4040
- containerPort: 9192
env:
- name: LOG_LEVEL
value: "INFO"
- name: SLICE_GROUPING
value: "DISABLE"
envFrom:
- secretRef:
name: qdb-data
readinessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:4040"]
livenessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:4040"]
resources:
requests:
cpu: 250m
memory: 128Mi
limits:
cpu: 1000m
memory: 1024Mi
- name: server
image: labs.etsi.org:5050/tfs/controller/slice:latest
imagePullPolicy: Always
ports:
- containerPort: 4040
- containerPort: 9192
env:
- name: LOG_LEVEL
value: "INFO"
- name: SLICE_GROUPING
value: "DISABLE"
envFrom:
- secretRef:
name: qdb-data
readinessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:4040"]
livenessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:4040"]
resources:
requests:
cpu: 250m
memory: 128Mi
limits:
cpu: 1000m
memory: 1024Mi
---
apiVersion: v1
kind: Service
......@@ -67,14 +67,14 @@ spec:
selector:
app: sliceservice
ports:
- name: grpc
protocol: TCP
port: 4040
targetPort: 4040
- name: metrics
protocol: TCP
port: 9192
targetPort: 9192
- name: grpc
protocol: TCP
port: 4040
targetPort: 4040
- name: metrics
protocol: TCP
port: 9192
targetPort: 9192
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
......@@ -88,12 +88,12 @@ spec:
minReplicas: 1
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
#behavior:
# scaleDown:
# stabilizationWindowSeconds: 30
......@@ -30,37 +30,37 @@ spec:
terminationGracePeriodSeconds: 5
shareProcessNamespace: true
containers:
- name: server
image: labs.etsi.org:5050/tfs/controller/te:latest
imagePullPolicy: Always
ports:
- containerPort: 10030
env:
- name: ERLANG_LOGGER_LEVEL
value: "debug"
- name: ERLANG_COOKIE
value: "tfte-unsafe-cookie"
- name: ERLANG_NODE_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: ERLANG_NODE_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
readinessProbe:
exec:
command: ["/tfte/bin/tfte", "status"]
livenessProbe:
exec:
command: ["/tfte/bin/tfte", "status"]
resources:
requests:
cpu: 250m
memory: 512Mi
limits:
cpu: 700m
memory: 1024Mi
- name: server
image: labs.etsi.org:5050/tfs/controller/te:latest
imagePullPolicy: Always
ports:
- containerPort: 10030
env:
- name: ERLANG_LOGGER_LEVEL
value: "debug"
- name: ERLANG_COOKIE
value: "tfte-unsafe-cookie"
- name: ERLANG_NODE_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: ERLANG_NODE_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
readinessProbe:
exec:
command: ["/tfte/bin/tfte", "status"]
livenessProbe:
exec:
command: ["/tfte/bin/tfte", "status"]
resources:
requests:
cpu: 250m
memory: 512Mi
limits:
cpu: 700m
memory: 1024Mi
---
apiVersion: v1
kind: Service
......@@ -71,11 +71,11 @@ spec:
selector:
app: teservice
ports:
- name: grpc
protocol: TCP
port: 10030
targetPort: 10030
- name: pcep
protocol: TCP
port: 4189
targetPort: 4189
- name: grpc
protocol: TCP
port: 10030
targetPort: 10030
- name: pcep
protocol: TCP
port: 4189
targetPort: 4189
......@@ -32,73 +32,73 @@ spec:
supplementalGroups:
- 0
containers:
- name: server
image: labs.etsi.org:5050/tfs/controller/webui:latest
imagePullPolicy: Always
ports:
- containerPort: 8004
env:
- name: LOG_LEVEL
value: "INFO"
- name: WEBUISERVICE_SERVICE_BASEURL_HTTP
value: "/webui/"
readinessProbe:
httpGet:
path: /healthz/ready
port: 8004
initialDelaySeconds: 5
timeoutSeconds: 1
livenessProbe:
httpGet:
path: /healthz/live
port: 8004
initialDelaySeconds: 5
timeoutSeconds: 1
resources:
requests:
cpu: 50m
memory: 128Mi
limits:
cpu: 1000m
memory: 1024Mi
- name: grafana
image: grafana/grafana:8.5.22
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3000
name: http-grafana
protocol: TCP
env:
- name: GF_SERVER_ROOT_URL
value: "http://0.0.0.0:3000/grafana/"
- name: GF_SERVER_SERVE_FROM_SUB_PATH
value: "true"
readinessProbe:
failureThreshold: 60
httpGet:
#path: /robots.txt
path: /login
port: 3000
scheme: HTTP
initialDelaySeconds: 1
periodSeconds: 1
successThreshold: 1
timeoutSeconds: 2
livenessProbe:
failureThreshold: 60
initialDelaySeconds: 1
periodSeconds: 1
successThreshold: 1
tcpSocket:
port: 3000
timeoutSeconds: 1
resources:
requests:
cpu: 250m
memory: 512Mi
limits:
cpu: 500m
memory: 1024Mi
- name: server
image: labs.etsi.org:5050/tfs/controller/webui:latest
imagePullPolicy: Always
ports:
- containerPort: 8004
env:
- name: LOG_LEVEL
value: "INFO"
- name: WEBUISERVICE_SERVICE_BASEURL_HTTP
value: "/webui/"
readinessProbe:
httpGet:
path: /healthz/ready
port: 8004
initialDelaySeconds: 5
timeoutSeconds: 1
livenessProbe:
httpGet:
path: /healthz/live
port: 8004
initialDelaySeconds: 5
timeoutSeconds: 1
resources:
requests:
cpu: 50m
memory: 128Mi
limits:
cpu: 1000m
memory: 1024Mi
- name: grafana
image: grafana/grafana:8.5.22
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3000
name: http-grafana
protocol: TCP
env:
- name: GF_SERVER_ROOT_URL
value: "http://0.0.0.0:3000/grafana/"
- name: GF_SERVER_SERVE_FROM_SUB_PATH
value: "true"
readinessProbe:
failureThreshold: 60
httpGet:
#path: /robots.txt
path: /login
port: 3000
scheme: HTTP
initialDelaySeconds: 1
periodSeconds: 1
successThreshold: 1
timeoutSeconds: 2
livenessProbe:
failureThreshold: 60
initialDelaySeconds: 1
periodSeconds: 1
successThreshold: 1
tcpSocket:
port: 3000
timeoutSeconds: 1
resources:
requests:
cpu: 250m
memory: 512Mi
limits:
cpu: 500m
memory: 1024Mi
---
apiVersion: v1
kind: Service
......@@ -111,9 +111,9 @@ spec:
selector:
app: webuiservice
ports:
- name: webui
port: 8004
targetPort: 8004
- name: grafana
port: 3000
targetPort: 3000
- name: webui
port: 8004
targetPort: 8004
- name: grafana
port: 3000
targetPort: 3000
......@@ -104,22 +104,22 @@ spec:
limits:
cpu: 2000m
memory: 2048Mi
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: ztpservice-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: ztpservice
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
#---
#apiVersion: autoscaling/v2
#kind: HorizontalPodAutoscaler
#metadata:
# name: ztpservice-hpa
#spec:
# scaleTargetRef:
# apiVersion: apps/v1
# kind: Deployment
# name: ztpservice
# minReplicas: 1
# maxReplicas: 10
# metrics:
# - type: Resource
# resource:
# name: cpu
# target:
# type: Utilization
# averageUtilization: 80
......@@ -20,11 +20,17 @@
export TFS_REGISTRY_IMAGES="http://localhost:32000/tfs/"
# Set the list of components, separated by spaces, you want to build images for, and deploy.
export TFS_COMPONENTS="context device pathcomp service slice nbi webui load_generator"
export TFS_COMPONENTS="context device pathcomp opticalcontroller service slice nbi webui "
# Uncomment to activate Monitoring
#export TFS_COMPONENTS="${TFS_COMPONENTS} monitoring"
# Uncomment to activate BGP-LS Speaker
#export TFS_COMPONENTS="${TFS_COMPONENTS} bgpls_speaker"
# Uncomment to activate Optical Controller
#export TFS_COMPONENTS="${TFS_COMPONENTS} opticalcontroller"
# Uncomment to activate ZTP
#export TFS_COMPONENTS="${TFS_COMPONENTS} ztp"
......
src/tests/ofc24/
\ No newline at end of file
// Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (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.
syntax = "proto3";
package bgpls;
import "context.proto";
service BgplsService {
rpc ListDiscoveredDevices (context.Empty ) returns (DiscoveredDeviceList) {}
rpc ListDiscoveredLinks (context.Empty ) returns (DiscoveredLinkList ) {}
rpc AddBgplsSpeaker (BgplsSpeaker ) returns (BgplsSpeakerId ) {}
rpc ListBgplsSpeakers (context.Empty ) returns (BgplsSpeakerList ) {}
rpc DisconnectFromSpeaker (BgplsSpeaker ) returns (context.Empty ) {}
rpc GetSpeakerInfoFromId (BgplsSpeakerId ) returns (BgplsSpeaker ) {}
rpc NotifyAddNodeToContext(NodeDescriptors) returns (context.Empty ) {}
}
message DiscoveredDevice {
string nodeName = 1;
string ip = 2;
string igpID = 3;
string learntFrom = 4;
}
message DiscoveredDeviceList {
repeated DiscoveredDevice discovereddevices = 1;
}
message DiscoveredLinkList{
repeated DiscoveredLink discoveredlinks = 1;
}
message DiscoveredLink{
NodeDescriptors local = 1;
NodeDescriptors remote = 2;
string learntFrom = 3;
string local_ipv4 = 4;
string remote_ipv4 = 5;
}
message NodeDescriptors{
string asNumber = 1;
string igp_id = 2;
string nodeName = 3;
}
message BgplsSpeaker{
string address = 1;
string port = 2;
string asNumber = 3;
}
message BgplsSpeakerId{
uint32 id = 1;
}
message BgplsSpeakerList{
repeated BgplsSpeakerId speakers = 1;
}
......@@ -74,6 +74,17 @@ service ContextService {
rpc SetConnection (Connection ) returns ( ConnectionId ) {}
rpc RemoveConnection (ConnectionId ) returns ( Empty ) {}
rpc GetConnectionEvents(Empty ) returns (stream ConnectionEvent ) {}
// ------------------------------ Experimental -----------------------------
rpc GetOpticalConfig (Empty ) returns (OpticalConfigList ) {}
rpc SetOpticalConfig (OpticalConfig ) returns (OpticalConfigId ) {}
rpc SelectOpticalConfig(OpticalConfigId) returns (OpticalConfig ) {}
rpc DeleteOpticalConfig(OpticalConfigId) returns (Empty ) {}
rpc SetOpticalLink (OpticalLink ) returns (Empty ) {}
rpc GetOpticalLink (OpticalLinkId ) returns (OpticalLink ) {}
rpc GetFiber (FiberId ) returns (Fiber ) {}
}
// ----- Generic -------------------------------------------------------------------------------------------------------
......@@ -203,6 +214,7 @@ enum DeviceDriverEnum {
DEVICEDRIVER_GNMI_OPENCONFIG = 8;
DEVICEDRIVER_FLEXSCALE = 9;
DEVICEDRIVER_IETF_ACTN = 10;
DEVICEDRIVER_OC = 11;
}
enum DeviceOperationalStatusEnum {
......@@ -288,6 +300,7 @@ enum ServiceTypeEnum {
SERVICETYPE_TAPI_CONNECTIVITY_SERVICE = 3;
SERVICETYPE_TE = 4;
SERVICETYPE_E2E = 5;
SERVICETYPE_OPTICAL_CONNECTIVITY = 6;
}
enum ServiceStatusEnum {
......@@ -612,3 +625,59 @@ message AuthenticationResult {
ContextId context_id = 1;
bool authenticated = 2;
}
// ---------------- Experimental ------------------------
message OpticalConfigId {
string opticalconfig_uuid = 1;
}
message OpticalConfig {
OpticalConfigId opticalconfig_id = 1;
string config = 2;
}
message OpticalConfigList {
repeated OpticalConfig opticalconfigs = 1;
}
message OpticalConfigEvent {
Event event = 1;
OpticalConfigId opticalconfig_id = 2;
}
// ---- Optical Link ----
message OpticalLinkId {
Uuid optical_link_uuid = 1;
}
message FiberId {
Uuid fiber_uuid = 1;
}
message Fiber {
string ID = 10;
string src_port = 1;
string dst_port = 2;
string local_peer_port = 3;
string remote_peer_port = 4;
repeated int32 c_slots = 5;
repeated int32 l_slots = 6;
repeated int32 s_slots = 7;
float length = 8;
bool used = 9;
FiberId fiber_uuid = 11;
}
message OpticalLinkDetails {
float length = 1;
string source = 2;
string target = 3;
repeated Fiber fibers = 4;
}
message OpticalLink {
string name = 1;
OpticalLinkDetails details = 2;
OpticalLinkId optical_link_uuid = 3;
}
// Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (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.
syntax = "proto3";
package openconfig_device;
import "context.proto";
service OpenConfigService {
rpc AddOpenConfigDevice (context.OpticalConfig) returns (context.OpticalConfigId) {}
rpc ConfigureOpticalDevice(context.OpticalConfig) returns (context.Empty ) {}
}