Newer
Older
syntax = "proto3";
package context;
service ContextService {
rpc ListContextIds (Empty ) returns ( ContextIdList ) {}
rpc ListContexts (Empty ) returns ( ContextList ) {}
rpc GetContext (ContextId ) returns ( Context ) {}
rpc SetContext (Context ) returns ( ContextId ) {}
rpc RemoveContext (ContextId ) returns ( Empty ) {}
rpc GetContextEvents (Empty ) returns (stream ContextEvent ) {}
rpc ListTopologyIds (ContextId ) returns ( TopologyIdList) {}
rpc ListTopologies (ContextId ) returns ( TopologyList ) {}
rpc GetTopology (TopologyId) returns ( Topology ) {}
rpc SetTopology (Topology ) returns ( TopologyId ) {}
rpc RemoveTopology (TopologyId) returns ( Empty ) {}
rpc GetTopologyEvents(Empty ) returns (stream TopologyEvent ) {}
rpc ListDeviceIds (Empty ) returns ( DeviceIdList ) {}
rpc ListDevices (Empty ) returns ( DeviceList ) {}
rpc GetDevice (DeviceId ) returns ( Device ) {}
rpc SetDevice (Device ) returns ( DeviceId ) {}
rpc RemoveDevice (DeviceId ) returns ( Empty ) {}
rpc GetDeviceEvents (Empty ) returns (stream DeviceEvent ) {}
rpc ListLinkIds (Empty ) returns ( LinkIdList ) {}
rpc ListLinks (Empty ) returns ( LinkList ) {}
rpc GetLink (LinkId ) returns ( Link ) {}
rpc SetLink (Link ) returns ( LinkId ) {}
rpc RemoveLink (LinkId ) returns ( Empty ) {}
rpc GetLinkEvents (Empty ) returns (stream LinkEvent ) {}
rpc ListServiceIds (ContextId ) returns ( ServiceIdList ) {}
rpc ListServices (ContextId ) returns ( ServiceList ) {}
rpc GetService (ServiceId ) returns ( Service ) {}
rpc SetService (Service ) returns ( ServiceId ) {}
rpc RemoveService (ServiceId ) returns ( Empty ) {}
rpc GetServiceEvents (Empty ) returns (stream ServiceEvent ) {}
}
// ----- Generic -------------------------------------------------------------------------------------------------------
message Empty {}
message Uuid {
string uuid = 1;
enum EventTypeEnum {
EVENTTYPE_UNDEFINED = 0;
EVENTTYPE_CREATE = 1;
EVENTTYPE_UPDATE = 2;
EVENTTYPE_REMOVE = 3;
}
message Event {
double timestamp = 1;
EventTypeEnum event_type = 2;
}
// ----- Context -------------------------------------------------------------------------------------------------------
message ContextId {
Uuid context_uuid = 1;
repeated TopologyId topology_ids = 2;
repeated ServiceId service_ids = 3;
TeraFlowController controller = 4;
message ContextIdList {
repeated ContextId context_ids = 1;
}
message ContextList {
repeated Context contexts = 1;
}
message ContextEvent {
Event event = 1;
ContextId context_id = 2;
}
// ----- Topology ------------------------------------------------------------------------------------------------------
message TopologyId {
ContextId context_id = 1;
Uuid topology_uuid = 2;
repeated DeviceId device_ids = 2;
repeated LinkId link_ids = 3;
message TopologyIdList {
repeated TopologyId topology_ids = 1;
message TopologyList {
repeated Topology topologies = 1;
message TopologyEvent {
Event event = 1;
TopologyId topology_id = 2;
}
// ----- Device --------------------------------------------------------------------------------------------------------
message DeviceId {
Uuid device_uuid = 1;
}
message Device {
DeviceId device_id = 1;
string device_type = 2;
DeviceConfig device_config = 3;
DeviceOperationalStatusEnum device_operational_status = 4;
repeated ConfigRule config_rules = 1;
}
enum DeviceDriverEnum {
DEVICEDRIVER_UNDEFINED = 0; // also used for emulated
DEVICEDRIVER_OPENCONFIG = 1;
DEVICEDRIVER_TRANSPORT_API = 2;
DEVICEDRIVER_P4 = 3;
DEVICEDRIVER_IETF_NETWORK_TOPOLOGY = 4;
DEVICEDRIVER_ONF_TR_352 = 5;
enum DeviceOperationalStatusEnum {
DEVICEOPERATIONALSTATUS_UNDEFINED = 0;
DEVICEOPERATIONALSTATUS_DISABLED = 1;
DEVICEOPERATIONALSTATUS_ENABLED = 2;
}
message DeviceIdList {
repeated DeviceId device_ids = 1;
}
message DeviceList {
repeated Device devices = 1;
}
message DeviceEvent {
Event event = 1;
DeviceId device_id = 2;
}
// ----- Link ----------------------------------------------------------------------------------------------------------
message LinkId {
Uuid link_uuid = 1;
}
message Link {
LinkId link_id = 1;
}
message LinkIdList {
repeated LinkId link_ids = 1;
}
message LinkList {
repeated Link links = 1;
}
message LinkEvent {
Event event = 1;
LinkId link_id = 2;
}
// ----- Service -------------------------------------------------------------------------------------------------------
message ServiceId {
ContextId context_id = 1;
Uuid service_uuid = 2;
}
message Service {
ServiceId service_id = 1;
repeated EndPointId service_endpoint_ids = 3;
repeated Constraint service_constraints = 4;
ServiceStatus service_status = 5;
ServiceConfig service_config = 6;
}
SERVICETYPE_UNKNOWN = 0;
SERVICETYPE_L3NM = 1;
SERVICETYPE_L2NM = 2;
SERVICETYPE_TAPI_CONNECTIVITY_SERVICE = 3;
}
enum ServiceStatusEnum {
SERVICESTATUS_UNDEFINED = 0;
SERVICESTATUS_PLANNED = 1;
SERVICESTATUS_ACTIVE = 2;
SERVICESTATUS_PENDING_REMOVAL = 3;
message ServiceStatus {
ServiceStatusEnum service_status = 1;
}
message ServiceConfig {
repeated ConfigRule config_rules = 1;
}
message ServiceIdList {
repeated ServiceId service_ids = 1;
}
message ServiceList {
repeated Service services = 1;
}
message ServiceEvent {
Event event = 1;
ServiceId service_id = 2;
}
// ----- Endpoint ------------------------------------------------------------------------------------------------------
message EndPointId {
TopologyId topology_id = 1;
DeviceId device_id = 2;
Uuid endpoint_uuid = 3;
// ----- Configuration -------------------------------------------------------------------------------------------------
CONFIGACTION_UNDEFINED = 0;
CONFIGACTION_SET = 1;
CONFIGACTION_DELETE = 2;
string resource_key = 2;
string resource_value = 3;
// ----- Constraint ----------------------------------------------------------------------------------------------------
message Constraint {
string constraint_type = 1;
string constraint_value = 2;
// ----- Connection ----------------------------------------------------------------------------------------------------
message ConnectionId {
Uuid connection_uuid = 1;
message Connection {
ConnectionId connection_id = 1;
ServiceId related_service_id = 2;
repeated EndPointId path = 3;
}
message ConnectionIdList {
repeated ConnectionId connection_ids = 1;
message ConnectionList {
repeated Connection connections = 1;
}
// ----- Miscellaneous -------------------------------------------------------------------------------------------------
ContextId context_id = 1;
string ip_address = 2;
uint32 port = 3;