Commit 959136e5 authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Merge branch 'develop' of https://gitlab.com/teraflow-h2020/controller into...

Merge branch 'develop' of https://gitlab.com/teraflow-h2020/controller into feat/dlt-component-connector
parents a173e1ab 4d33b6b1
Loading
Loading
Loading
Loading
+64 −0
Original line number Diff line number Diff line
# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: pathcompservice
spec:
  selector:
    matchLabels:
      app: pathcompservice
  template:
    metadata:
      labels:
        app: pathcompservice
    spec:
      terminationGracePeriodSeconds: 5
      containers:
      - name: server
        image: registry.gitlab.com/teraflow-h2020/controller/pathcomp:latest
        imagePullPolicy: Always
        ports:
        - containerPort: 10020
        env:
        - name: LOG_LEVEL
          value: "INFO"
        readinessProbe:
          exec:
            command: ["/bin/grpc_health_probe", "-addr=:10020"]
        livenessProbe:
          exec:
            command: ["/bin/grpc_health_probe", "-addr=:10020"]
        resources:
          requests:
            cpu: 250m
            memory: 512Mi
          limits:
            cpu: 700m
            memory: 1024Mi
---
apiVersion: v1
kind: Service
metadata:
  name: pathcompservice
spec:
  type: ClusterIP
  selector:
    app: pathcompservice
  ports:
  - name: grpc
    protocol: TCP
    port: 10020
    targetPort: 10020
+6 −1
Original line number Diff line number Diff line
src/
src/*/*

# used to prevent breaking symbolic links from source code folders
!src/*/.gitignore
!src/python/__init__.py

uml/generated

proto/acl.proto

0 → 100644
+69 −0
Original line number Diff line number Diff line
// Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";
package acl;

enum AclRuleTypeEnum {
  ACLRULETYPE_UNDEFINED = 0;
  ACLRULETYPE_IPV4      = 1;
  ACLRULETYPE_IPV6      = 2;
  ACLRULETYPE_L2        = 3;
  ACLRULETYPE_MPLS      = 4;
  ACLRULETYPE_MIXED     = 5;
}

enum AclForwardActionEnum {
  ACLFORWARDINGACTION_UNDEFINED = 0;
  ACLFORWARDINGACTION_DROP      = 1;
  ACLFORWARDINGACTION_ACCEPT    = 2;
  ACLFORWARDINGACTION_REJECT    = 3;
}

enum AclLogActionEnum {
  ACLLOGACTION_UNDEFINED = 0;
  ACLLOGACTION_NOLOG     = 1;
  ACLLOGACTION_SYSLOG    = 2;
}

message AclMatch {
  uint32 dscp             = 1;
  uint32 protocol         = 2;
  string src_address      = 3;
  string dst_address      = 4;
  uint32 src_port         = 5;
  uint32 dst_port         = 6;
  uint32 start_mpls_label = 7;
  uint32 end_mpls_label   = 8;
}

message AclAction {
  AclForwardActionEnum forward_action = 1;
  AclLogActionEnum     log_action     = 2;
}

message AclEntry {
  uint32    sequence_id = 1;
  string    description = 2;
  AclMatch  match       = 3;
  AclAction action      = 4;
}

message AclRuleSet {
  string             name        = 1;
  AclRuleTypeEnum    type        = 2;
  string             description = 3;
  string             user_id     = 4;
  repeated AclEntry  entries     = 5;
}
+28 −0
Original line number Diff line number Diff line
// Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";
package context_policy;

import "context.proto";
import "policy.proto";

// created as a separate service to prevent import-loops in context and policy
service ContextPolicyService {
  rpc ListPolicyRuleIds(context.Empty         ) returns (policy.PolicyRuleIdList) {}
  rpc ListPolicyRules  (context.Empty         ) returns (policy.PolicyRuleList  ) {}
  rpc GetPolicyRule    (policy.PolicyRuleId   ) returns (policy.PolicyRuleBasic ) {}
  rpc SetPolicyRule    (policy.PolicyRuleBasic) returns (policy.PolicyRuleId    ) {}
  rpc RemovePolicyRule (policy.PolicyRuleId   ) returns (context.Empty          ) {}
}
+131 −4
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
syntax = "proto3";
package context;

import "acl.proto";
import "kpi_sample_types.proto";

service ContextService {
@@ -82,8 +83,12 @@ enum EventTypeEnum {
  EVENTTYPE_REMOVE = 3;
}

message Event {
message Timestamp {
  double timestamp = 1;
}

message Event {
  Timestamp timestamp = 1;
  EventTypeEnum event_type = 2;
}

@@ -223,6 +228,7 @@ message Service {
  repeated Constraint service_constraints = 4;
  ServiceStatus service_status = 5;
  ServiceConfig service_config = 6;
  Timestamp timestamp = 7;
}

enum ServiceTypeEnum {
@@ -237,6 +243,7 @@ enum ServiceStatusEnum {
  SERVICESTATUS_PLANNED = 1;
  SERVICESTATUS_ACTIVE =  2;
  SERVICESTATUS_PENDING_REMOVAL = 3;
  SERVICESTATUS_SLA_VIOLATED = 4;
}

message ServiceStatus {
@@ -273,6 +280,13 @@ message Slice {
  repeated ServiceId slice_service_ids = 4;
  repeated SliceId slice_subslice_ids = 5;
  SliceStatus slice_status = 6;
  SliceOwner slice_owner = 7;
  Timestamp timestamp = 8;
}

message SliceOwner {
  Uuid owner_uuid = 1;
  string owner_string = 2;
}

enum SliceStatusEnum {
@@ -281,6 +295,7 @@ enum SliceStatusEnum {
  SLICESTATUS_INIT      = 2;
  SLICESTATUS_ACTIVE    = 3;
  SLICESTATUS_DEINIT    = 4;
  SLICESTATUS_SLA_VIOLATED = 5;
}

message SliceStatus {
@@ -305,11 +320,47 @@ message ConnectionId {
  Uuid connection_uuid = 1;
}

message ConnectionSettings_L0 {
  string lsp_symbolic_name = 1;
}

message ConnectionSettings_L2 {
  string src_mac_address = 1;
  string dst_mac_address = 2;
  uint32 ether_type = 3;
  uint32 vlan_id = 4;
  uint32 mpls_label = 5;
  uint32 mpls_traffic_class = 6;
}

message ConnectionSettings_L3 {
  string src_ip_address = 1;
  string dst_ip_address = 2;
  uint32 dscp = 3;
  uint32 protocol = 4;
  uint32 ttl = 5;
}

message ConnectionSettings_L4 {
  uint32 src_port = 1;
  uint32 dst_port = 2;
  uint32 tcp_flags = 3;
  uint32 ttl = 4;
}

message ConnectionSettings {
  ConnectionSettings_L0 l0 = 1;
  ConnectionSettings_L2 l2 = 2;
  ConnectionSettings_L3 l3 = 3;
  ConnectionSettings_L4 l4 = 4;
}

message Connection {
  ConnectionId connection_id = 1;
  ServiceId service_id = 2;
  repeated EndPointId path_hops_endpoint_ids = 3;
  repeated ServiceId sub_service_ids = 4;
  ConnectionSettings settings = 5;
}

message ConnectionIdList {
@@ -337,6 +388,7 @@ message EndPoint {
  EndPointId endpoint_id = 1;
  string endpoint_type = 2;
  repeated kpi_sample_types.KpiSampleType kpi_sample_types = 3;
  Location endpoint_location = 4;
}


@@ -347,19 +399,94 @@ enum ConfigActionEnum {
  CONFIGACTION_DELETE = 2;
}

message ConfigRule_Custom {
  string resource_key = 1;
  string resource_value = 2;
}

message ConfigRule_ACL {
  EndPointId endpoint_id = 1;
  acl.AclRuleSet rule_set = 2;
}

message ConfigRule {
  ConfigActionEnum action = 1;
  string resource_key = 2;
  string resource_value = 3;
  oneof config_rule {
    ConfigRule_Custom custom = 2;
    ConfigRule_ACL acl = 3;
  }
}


// ----- Constraint ----------------------------------------------------------------------------------------------------
message Constraint {
message Constraint_Custom {
  string constraint_type = 1;
  string constraint_value = 2;
}

message Constraint_Schedule {
  float start_timestamp = 1;
  float duration_days = 2;
}

message GPS_Position {
  float latitude = 1;
  float longitude = 2;
}

message Location {
  oneof location {
    string region = 1;
    GPS_Position gps_position = 2;
  }
}

message Constraint_EndPointLocation {
  EndPointId endpoint_id = 1;
  Location location = 2;
}

message Constraint_SLA_Latency {
  float e2e_latency_ms = 1;
}

message Constraint_SLA_Capacity {
  float capacity_gbps = 1;
}

message Constraint_SLA_Availability {
  uint32 num_disjoint_paths = 1;
  bool all_active = 2;
}

enum IsolationLevelEnum {
  NO_ISOLATION = 0;
  PHYSICAL_ISOLATION = 1;
  LOGICAL_ISOLATION = 2;
  PROCESS_ISOLATION = 3;
  PHYSICAL_MEMORY_ISOLATION = 4;
  PHYSICAL_NETWORK_ISOLATION = 5;
  VIRTUAL_RESOURCE_ISOLATION = 6;
  NETWORK_FUNCTIONS_ISOLATION = 7;
  SERVICE_ISOLATION = 8;
}

message Constraint_SLA_Isolation_level {
  IsolationLevelEnum isolation_level = 1;
}

message Constraint {
  oneof constraint {
    Constraint_Custom custom = 1;
    Constraint_Schedule schedule = 2;
    Constraint_EndPointLocation endpoint_location = 3;
    Constraint_SLA_Capacity sla_capacity = 4;
    Constraint_SLA_Latency sla_latency = 5;
    Constraint_SLA_Availability sla_availability = 6;
    Constraint_SLA_Isolation_level sla_isolation = 7;
  }
}


// ----- Miscellaneous -------------------------------------------------------------------------------------------------
message TeraFlowController {
Loading