diff --git a/proto/aquila/aquila.action.proto b/proto/aquila/aquila.action.proto index 1651cc1..64fe996 100644 --- a/proto/aquila/aquila.action.proto +++ b/proto/aquila/aquila.action.proto @@ -54,6 +54,10 @@ message ActionTransferRequest { ActionEvent event = 2; // Result of execution that was triggered by a execution request ActionExecutionResponse result = 3; + // Updated Module Definitions at runtime + shared.ModuleDefinitions module_definitions = 4; + // Response to a Module Data Query + shared.ModuleDataConnection module_data = 5; } } @@ -63,6 +67,8 @@ message ActionTransferResponse { ActionExecutionRequest execution = 1; // ModuleConfigurations that have been configured by the user shared.ModuleConfigurations module_configurations = 2; + // Request to query a specific module data + shared.ModuleDataQuery module_data_query = 3; } } diff --git a/proto/aquila/aquila.module.proto b/proto/aquila/aquila.module.proto index 42fe5ef..2024791 100644 --- a/proto/aquila/aquila.module.proto +++ b/proto/aquila/aquila.module.proto @@ -5,6 +5,17 @@ option ruby_package = "Tucana::Aquila"; package aquila; import "shared.module.proto"; +import "shared.errors.proto"; + +message ModuleDataLogon {} + +message ModuleDataRequest { + oneof data { + ModuleDataLogon logon = 1; + shared.ModuleDataConnection connection = 2; + } +} + // Request for updating a list of modules including data types, flow types and runtime function definitions message ModuleUpdateRequest { @@ -12,13 +23,23 @@ message ModuleUpdateRequest { repeated shared.Module modules = 1; } +// Request for updating a list of module definitions +message ModuleDefinitionUpdateRequest { + // List of modules + repeated shared.ModuleDefinition module_definition = 1; +} + + // Response of updating modules including data types, flow types and runtime function definitions message ModuleUpdateResponse { // True if was successful, false if not bool success = 1; + optional shared.ServiceError error = 2; } -//This service will be implemented as a server by Aquila and as a client by Taurus. +//This service will be implemented as a server by Sagittarius and as a client by Aquila. service ModuleService { rpc Update(ModuleUpdateRequest) returns (ModuleUpdateResponse) {} + rpc UpdateModuleDefinition(ModuleUpdateRequest) returns (ModuleUpdateResponse) {} + rpc Query(stream ModuleDataRequest) returns (stream shared.ModuleDataQuery) {} } diff --git a/proto/sagittarius/sagittarius.module.proto b/proto/sagittarius/sagittarius.module.proto index 4bc32a7..cd0afc8 100644 --- a/proto/sagittarius/sagittarius.module.proto +++ b/proto/sagittarius/sagittarius.module.proto @@ -7,6 +7,15 @@ package sagittarius; import "shared.errors.proto"; import "shared.module.proto"; +message ModuleDataLogon {} + +message ModuleDataRequest { + oneof data { + ModuleDataLogon logon = 1; + shared.ModuleDataConnection connection = 2; + } +} + // Request for updating a list of modules including data types, flow types and runtime function definitions message ModuleUpdateRequest { // List of modules @@ -16,6 +25,13 @@ message ModuleUpdateRequest { repeated string available_defintition_soruces = 2; } +// Request for updating a list of module definitions +message ModuleDefinitionUpdateRequest { + // List of modules + repeated shared.ModuleDefinition module_definition = 1; +} + + // Response of updating modules including data types, flow types and runtime function definitions message ModuleUpdateResponse { // True if was successful, false if not @@ -26,4 +42,6 @@ message ModuleUpdateResponse { //This service will be implemented as a server by Sagittarius and as a client by Aquila. service ModuleService { rpc Update(ModuleUpdateRequest) returns (ModuleUpdateResponse) {} + rpc UpdateModuleDefinition(ModuleUpdateRequest) returns (ModuleUpdateResponse) {} + rpc Query(stream ModuleDataRequest) returns (stream shared.ModuleDataQuery) {} } diff --git a/proto/shared/shared.module.proto b/proto/shared/shared.module.proto index 7d48047..94b7dab 100644 --- a/proto/shared/shared.module.proto +++ b/proto/shared/shared.module.proto @@ -34,12 +34,75 @@ message Module { } message ModuleDefinition { - // A list of flow type identifier to which the value appies - repeated string flow_type_identifier = 1; - oneof value { - // Endpoint URL - Endpoint endpoint = 2; + // List of identifier of module data for this module + repeated string module_data_identifier = 1; + // List of endpoints for this module + repeated Endpoint endpoint = 2; +} + +message ModuleDefinitions { + repeated ModuleDefinition module_definitions = 1; +} + +message ModuleDataConnection { + int64 count = 1; + repeated ModuleData nodes = 2; + PageInfo pageInfo = 3; +} + +message ModuleData { + string identifier = 1; + repeated shared.Value data = 2; +} + +message PageInfo { + string end_cursor = 1; + bool has_next_page = 2; + bool has_prev_page = 3; + string start_cursor = 4; +} + +message ModuleDataQuery { + string identifier = 1; + repeated ModuleDataFilter filter = 2; + repeated ModuleDataSort sort = 3; + optional string cursor = 4; +} + +message ModuleDataSort { + enum ModuleDataSortDirection { + UNKNOWN = 0; + ASC = 1; + DESC = 2; } + + repeated string path = 1; + ModuleDataSortDirection direction = 2; +} + +message ModuleDataFilter { + message Operation { + oneof operation { + bool exists = 1; + + NumberValue gt = 2; + NumberValue gte = 3; + NumberValue lt = 4; + NumberValue lte = 5; + + string eq = 6; + string neq = 7; + string contains = 8; + string starts_with = 9; + string ends_with = 10; + + ListValue in = 11; + ListValue not_in = 12; + } + } + + repeated string path = 1; + Operation operation = 2; } message Endpoint { @@ -47,6 +110,8 @@ message Endpoint { int64 port = 2; string endpoint = 3; string protocol = 4; + // A list of flow type identifier to which the endpoint applies + repeated string flow_type_identifier = 5; } //send by sagittarius to inform a module of the real config set by the user