From 7668bd09339ac190db98893f9c2cb37eb70c318f Mon Sep 17 00:00:00 2001 From: Lluis Gifre Date: Mon, 4 Jul 2022 17:41:54 +0200 Subject: [PATCH] DLT component: - Defined new dlt.proto file --- proto/dlt.proto | 95 ++++++++++++++++++++++++++++--------------------- 1 file changed, 54 insertions(+), 41 deletions(-) diff --git a/proto/dlt.proto b/proto/dlt.proto index 29a0db198..0d5d4fe27 100644 --- a/proto/dlt.proto +++ b/proto/dlt.proto @@ -12,72 +12,85 @@ // See the License for the specific language governing permissions and // limitations under the License. -//Example of topology syntax = "proto3"; package dlt; import "context.proto"; service DltService { - rpc RecordToDlt ( DltRecord ) returns ( RecordStatus ) {} - rpc GetFromDlt ( DltRecordId ) returns ( DltRecord ) {} - rpc SubscribeToDlt ( DltRecordSubscription ) returns ( stream DltRecord ) {} - rpc GetDltStatus ( context.Empty ) returns ( DltStatus ) {} + rpc RecordToDlt (DltRecord ) returns ( DltRecordStatus ) {} + rpc GetFromDlt (DltRecordId ) returns ( DltRecord ) {} + rpc SubscribeToDlt(DltRecordSubscription ) returns (stream DltRecordEvent ) {} + rpc GetDltStatus (context.TeraFlowController) returns ( DltPeerStatus ) {} // NEC is checkig if it is possible + rpc GetDltPeers (context.Empty ) returns ( DltPeerStatusList) {} // NEC is checkig if it is possible } -message DltRecordSubscription { - DltRecordType type = 1; - DltRecordOperation operation = 2; +enum DltRecordTypeEnum { + DLTRECORDTYPE_UNDEFINED = 0; + DLTRECORDTYPE_CONTEXT = 1; + DLTRECORDTYPE_TOPOLOGY = 2; + DLTRECORDTYPE_DEVICE = 3; + DLTRECORDTYPE_LINK = 4; + DLTRECORDTYPE_SERVICE = 5; + DLTRECORDTYPE_SLICE = 6; } -enum DltRecordType { - UNKNOWN = 0; - SERVICE = 1; - DEVICE = 2; - SLICE = 3; +enum DltRecordOperationEnum { + DLTRECORDOPERATION_UNDEFINED = 0; + DLTRECORDOPERATION_ADD = 1; + DLTRECORDOPERATION_UPDATE = 2; + DLTRECORDOPERATION_DELETE = 3; } -enum DltRecordOperation { - ADD = 0; - UPDATE = 1; - DELETE = 2; +enum DltRecordStatusEnum { + DLTRECORDSTATUS_UNDEFINED = 0; + DLTRECORDSTATUS_SUCCEEDED = 1; + DLTRECORDSTATUS_FAILED = 2; } -message DltRecord { - DltRecordId id = 1; - DltRecordType type = 2; - DltRecordOperation operation = 3; - string json = 4; +enum DltStatusEnum { + DLTSTATUS_UNDEFINED = 0; + DLTSTATUS_NOTAVAILABLE = 1; + DLTSTATUS_INITIALIZED = 2; + DLTSTATUS_AVAILABLE = 3; + DLTSTATUS_DEINIT = 4; } message DltRecordId { - context.Uuid id = 1; + context.Uuid domain_uuid = 1; // unique identifier of domain owning the record + DltRecordTypeEnum type = 2; // type of record + context.Uuid record_uuid = 3; // unique identifier of the record within the domain context_uuid/topology_uuid } -message RecordStatus { - DltRecordId id = 1; - DltRecordStatusEnum status = 2; +message DltRecord { + DltRecordId record_id = 1; // record identifier + DltRecordOperation operation = 2; // operation to be performed over the record + string data_json = 3; // record content: JSON-encoded record content } -enum DltRecordStatusEnum { - REQUESTED = 0; - STORED = 1; - DISABLED = 2; +message DltRecordSubscription { + // retrieved events should match both conditions + // TODO: consider adding a more sophisticated filtering + repeated DltRecordType type = 1; // only receive subscriptions of the selected types, empty=all + repeated DltRecordOperation operation = 2; // only receive subscriptions of the selected operations, empty=all } - -message DltStatus { - context.TeraFlowController ctl = 1; - DltStatusEnum status = 2; +message DltRecordEvent { + context.Event event = 1; // common event data (timestamp & event_type) + DltRecordId record_id = 2; // record identifier associated with this event } -enum DltStatusEnum { - NOT_AVAILABLE = 0; - INITIALIZED = 1; - AVAILABLE = 2; - DEINIT = 3; +message DltRecordStatus { + DltRecordId record_id = 1; // identifier of the associated record + DltRecordStatusEnum status = 2; // status of the record + string error_message = 3; // error message in case of failure, empty otherwise } +message DltPeerStatus { + context.TeraFlowController controller = 1; // Identifier of the TeraFlow controller instance + DltStatusEnum status = 2; // Status of the TeraFlow controller instance +} - - +message DltPeerStatusList { + repeated DltPeerStatus peers = 1; // List of peers and their status +} -- GitLab