//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; }