Skip to content
# 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
...@@ -38,7 +38,7 @@ spec: ...@@ -38,7 +38,7 @@ spec:
- name: LOG_LEVEL - name: LOG_LEVEL
value: "INFO" value: "INFO"
- name: ENABLE_FORECASTER - name: ENABLE_FORECASTER
value: "YES" value: "NO"
readinessProbe: readinessProbe:
exec: exec:
command: ["/bin/grpc_health_probe", "-addr=:10020"] command: ["/bin/grpc_health_probe", "-addr=:10020"]
......
...@@ -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
...@@ -90,3 +90,4 @@ spec: ...@@ -90,3 +90,4 @@ spec:
port: 9090 port: 9090
targetPort: 9090 targetPort: 9090
--- ---
...@@ -104,22 +104,22 @@ spec: ...@@ -104,22 +104,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: ztpservice-hpa # name: ztpservice-hpa
spec: #spec:
scaleTargetRef: # scaleTargetRef:
apiVersion: apps/v1 # apiVersion: apps/v1
kind: Deployment # kind: Deployment
name: ztpservice # name: ztpservice
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
...@@ -20,11 +20,17 @@ ...@@ -20,11 +20,17 @@
export TFS_REGISTRY_IMAGES="http://localhost:32000/tfs/" export TFS_REGISTRY_IMAGES="http://localhost:32000/tfs/"
# Set the list of components, separated by spaces, you want to build images for, and deploy. # 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 # Uncomment to activate Monitoring
#export TFS_COMPONENTS="${TFS_COMPONENTS} 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 # Uncomment to activate ZTP
#export TFS_COMPONENTS="${TFS_COMPONENTS} 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 { ...@@ -74,6 +74,17 @@ service ContextService {
rpc SetConnection (Connection ) returns ( ConnectionId ) {} rpc SetConnection (Connection ) returns ( ConnectionId ) {}
rpc RemoveConnection (ConnectionId ) returns ( Empty ) {} rpc RemoveConnection (ConnectionId ) returns ( Empty ) {}
rpc GetConnectionEvents(Empty ) returns (stream ConnectionEvent ) {} 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 ------------------------------------------------------------------------------------------------------- // ----- Generic -------------------------------------------------------------------------------------------------------
...@@ -203,6 +214,7 @@ enum DeviceDriverEnum { ...@@ -203,6 +214,7 @@ enum DeviceDriverEnum {
DEVICEDRIVER_GNMI_OPENCONFIG = 8; DEVICEDRIVER_GNMI_OPENCONFIG = 8;
DEVICEDRIVER_FLEXSCALE = 9; DEVICEDRIVER_FLEXSCALE = 9;
DEVICEDRIVER_IETF_ACTN = 10; DEVICEDRIVER_IETF_ACTN = 10;
DEVICEDRIVER_OC = 11;
} }
enum DeviceOperationalStatusEnum { enum DeviceOperationalStatusEnum {
...@@ -288,6 +300,7 @@ enum ServiceTypeEnum { ...@@ -288,6 +300,7 @@ enum ServiceTypeEnum {
SERVICETYPE_TAPI_CONNECTIVITY_SERVICE = 3; SERVICETYPE_TAPI_CONNECTIVITY_SERVICE = 3;
SERVICETYPE_TE = 4; SERVICETYPE_TE = 4;
SERVICETYPE_E2E = 5; SERVICETYPE_E2E = 5;
SERVICETYPE_OPTICAL_CONNECTIVITY = 6;
} }
enum ServiceStatusEnum { enum ServiceStatusEnum {
...@@ -612,3 +625,59 @@ message AuthenticationResult { ...@@ -612,3 +625,59 @@ message AuthenticationResult {
ContextId context_id = 1; ContextId context_id = 1;
bool authenticated = 2; 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 ) {}
}