//Example of topology
syntax = "proto3";
package context;


service ContextService {
  rpc GetTopology (Empty) returns (Topology) {}
  
}

message Empty {

}

message Context {
  Topology topo = 1;
  TeraFlowController ctl = 2;
}

message Topology {
  repeated Device device = 1;
  repeated Link link = 2; 
}

message Link {
  repeated EndPointId endpointList = 1;
}



message Constraint {
  string constraint_type = 1;
  string constraint_value = 2;
}

message Device {
  DeviceId device_id = 1;
  string device_type = 2;
  DeviceConfig device_config = 3;
  DeviceOperationalStatus devOperationalStatus = 4;
  repeated EndPoint endpointList = 5;  
}

message DeviceConfig {
  string device_config = 1;
}

message EndPoint {
  EndPointId port_id = 1;
  string port_type = 2;
}

message EndPointId {
  Uuid port_id = 1;
  DeviceId dev_id = 2;
}

message DeviceId {
  Uuid device_id = 1;
}

message Uuid {
  string uuid = 1;
}

enum DeviceOperationalStatus {
  DISABLED = 0;
  ENABLED = 1;
}

message TeraFlowController {
  context.Uuid ctl_id = 1;
  string ipaddress = 2;
}

message AuthenticationResult {
  context.Uuid ctl_id = 1;
  bool authenticated = 2;
}


