//Example of topology syntax = "proto3"; package context; service ContextService { rpc GetTopology (Empty) returns (Topology) {} } message Empty { } message Context { ContextId contextId= 1; Topology topo = 2; TeraFlowController ctl = 3; } message ContextId { Uuid contextUuid = 1; } message Topology { TopologyId topoId = 2; repeated Device device = 3; repeated Link link = 4; } message Link { repeated EndPointId endpointList = 1; } message TopologyId { ContextId contextId = 1; Uuid topoId = 2; } 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 { TopologyId topoId = 1; DeviceId dev_id = 2; Uuid port_id = 3; } message DeviceId { Uuid device_id = 1; } message Uuid { string uuid = 1; } enum DeviceOperationalStatus { DISABLED = 0; ENABLED = 1; } message TeraFlowController { ContextId ctl_id = 1; string ipaddress = 2; } message AuthenticationResult { ContextId ctl_id = 1; bool authenticated = 2; }