diff --git a/README.md b/README.md index cb60a89..8ef19fb 100644 --- a/README.md +++ b/README.md @@ -56,18 +56,21 @@ services that Sagittarius must implement as a server. . ├── aquila │ ├── action - Action service (emits events, and handles executions) +│ ├── execution - Service for updating completed executions +│ ├── install_action - Service for listing, installing, and uninstalling actions │ ├── module - Module service for Taurus to send over datatypes, functions and flow types │ ├── runtime_status - Service for runtime status (handles information about Draco and Taurus) -│ ├── runtime_usage - Service for runtime usage (handles execution time of a flow) -│ └── execution - Service for updating completed executions +│ └── runtime_usage - Service for runtime usage (handles execution time of a flow) ├── sagittarius │ ├── flow - Flow service (handles flow updates) +│ ├── install_action - Service for listing, installing, and uninstalling actions │ ├── module - Module service to receive datatypes, functions and flow types from aquila │ ├── ping - Ping service (performs life checks) │ ├── runtime_status - Service for runtime status (handles information about Draco and Taurus) │ ├── runtime_usage - Service for runtime usage (handles execution time of a flow) │ └── test_execution - Service and Types for the test execution └── shared + ├── action - Defines information about an installable action ├── data_type - Defines types for data types ├── errors - Defines error object ├── execution_result - Defines execution result of a flow @@ -82,3 +85,4 @@ services that Sagittarius must implement as a server. ├── struct - Defines json representations └── translation - Contains translations with country codes and translated messages ``` + diff --git a/proto/aquila/aquila.install_action.proto b/proto/aquila/aquila.install_action.proto new file mode 100644 index 0000000..7d5f174 --- /dev/null +++ b/proto/aquila/aquila.install_action.proto @@ -0,0 +1,65 @@ +syntax = "proto3"; + +option ruby_package = "Tucana::Aquila"; + +package aquila; + +import "shared.action.proto"; + +message UninstallActionCommand { + string action_identifier = 1; +} + +message InstallActionCommand { + string action_identifier = 1; +} + +message UninstallActionResult { + enum Result { + UNKNOWN = 0; + UNINSTALLED = 1; + FAILED = 2; + } + + Result result = 1; +} + +message InstallActionResult { + enum Result { + UNKNOWN = 0; + ALREADY_INSTALLED = 1; + INSTALLED = 2; + FAILED = 3; + } + + Result result = 1; +} + +message ListInstallableActionsCommand {} + +message ListInstallableActionsResult { + repeated shared.InstallableAction actions = 1; +} + +message Logon {} + +message ActionInstallServiceRequest { + oneof data { + Logon logon = 1; + ListInstallableActionsResult list_installable_actions_result = 2; + InstallActionResult install_action_result = 3; + UninstallActionResult uninstall_action_result = 4; + } +} + +message ActionInstallServiceResponse { + oneof data { + InstallActionCommand install_action = 1; + UninstallActionCommand uninstall_action = 2; + ListInstallableActionsCommand list_installable_actions = 3; + } +} + +service ActionInstallService { + rpc Install (stream ActionInstallServiceRequest) returns (stream ActionInstallServiceResponse); +} diff --git a/proto/sagittarius/sagittarius.install_action.proto b/proto/sagittarius/sagittarius.install_action.proto new file mode 100644 index 0000000..cae42c1 --- /dev/null +++ b/proto/sagittarius/sagittarius.install_action.proto @@ -0,0 +1,68 @@ +syntax = "proto3"; + +option ruby_package = "Tucana::Sagittarius"; + +package sagittarius; + +import "shared.action.proto"; + +message UninstallActionCommand { + string action_identifier = 1; +} + +message InstallActionCommand { + string action_identifier = 1; +} + +message UninstallActionResult { + enum Result { + UNKNOWN = 0; + UNINSTALLED = 1; + FAILED = 2; + } + + Result result = 1; +} + +message InstallActionResult { + enum Result { + UNKNOWN = 0; + ALREADY_INSTALLED = 1; + INSTALLED = 2; + FAILED = 3; + } + + Result result = 1; +} + +message ListInstallableActionsCommand {} + +message ListInstallableActionsResult { + repeated shared.InstallableAction actions = 1; +} + +message ActionInstallLogon { + // does this runtime has the capability to install Actions + bool can_install_actions = 1; +} + +message ActionInstallServiceRequest { + oneof data { + ActionInstallLogon logon = 1; + ListInstallableActionsResult list_installable_actions_result = 2; + InstallActionResult install_action_result = 3; + UninstallActionResult uninstall_action_result = 4; + } +} + +message ActionInstallServiceResponse { + oneof data { + InstallActionCommand install_action = 1; + UninstallActionCommand uninstall_action = 2; + ListInstallableActionsCommand list_installable_actions = 3; + } +} + +service ActionInstallService { + rpc Install (stream ActionInstallServiceRequest) returns (stream ActionInstallServiceResponse); +} diff --git a/proto/shared/shared.action.proto b/proto/shared/shared.action.proto new file mode 100644 index 0000000..bf32df3 --- /dev/null +++ b/proto/shared/shared.action.proto @@ -0,0 +1,14 @@ +syntax = "proto3"; + +option ruby_package = "Tucana::Shared"; + +package shared; + +import "shared.translation.proto"; + +message InstallableAction { + string action_identifier = 1; + repeated shared.Translation name = 2; + repeated shared.Translation description = 3; + string display_icon = 4; +}