syntax = "proto3"; import "google/protobuf/struct.proto"; import "google/protobuf/timestamp.proto"; option java_multiple_files = true; package org.onap.ccsdk.cds.controllerblueprints.command.api; message ExecutionInput { string requestId = 1; // Optional Id used to correlate multiple requests so that it can identify previous request information. string correlationId = 2; // Optional Blueprint Information used to identify CBA content information in shared file structure environment. Identifiers identifiers = 3; // Actual Command to Execute in Scripting Environment string command = 4; int32 timeOut = 5; // Extra Dynamic Properties for Command processing in JSON format google.protobuf.Struct properties = 6; // Request Time Stamp google.protobuf.Timestamp timestamp = 7; string subRequestId = 8; string originatorId = 9; } // If a new version of blueprint (new UUID in DB) needs to be uploaded, then pass in the raw bytes data // properties should specify 'file_format' as either 'gzip' or 'zip' // TODO: archiveTYPE: should be enum {"CBA_ZIP", "CBA_GZIP"} message UploadBlueprintInput { Identifiers identifiers = 1; string requestId = 2; string subRequestId = 3; string originatorId = 4; string correlationId = 5; int32 timeOut = 6; string archiveType = 7; google.protobuf.Timestamp timestamp = 8; bytes binData = 9; } message UploadBlueprintOutput { string requestId = 1; string subRequestId = 2; ResponseStatus status = 3; google.protobuf.Timestamp timestamp = 4; string payload = 5; } message PrepareEnvInput { Identifiers identifiers = 1; string requestId = 2; // Optional Id used to correlate multiple requests so that it can identify previous request information. string correlationId = 3; repeated Packages packages = 4; int32 timeOut = 5; google.protobuf.Struct properties = 6; google.protobuf.Timestamp timestamp = 7; string subRequestId = 8; string originatorId = 9; } message Identifiers { string blueprintName = 1; string blueprintVersion = 2; string blueprintUUID = 3; } // TODO: need to rething whether we want to include subrequest/correlationID/etc to be consistent // or drop requestId as it would be returned back to the context where these values are already known. // and we may just be concerned with the response/status message ExecutionOutput { string requestId = 1; repeated string response = 2; ResponseStatus status = 3; google.protobuf.Timestamp timestamp = 4; string payload = 5; } enum ResponseStatus { SUCCESS = 0; FAILURE = 1; } message Packages { PackageType type = 1; repeated string package = 2; } enum PackageType { pip = 0; ansible_galaxy = 1; utilities = 2; } service CommandExecutorService { // rpc to upload the CBA rpc uploadBlueprint (UploadBlueprintInput) returns (UploadBlueprintOutput); // prepare Python environment rpc prepareEnv (PrepareEnvInput) returns (ExecutionOutput); // execute the actual command. rpc executeCommand (ExecutionInput) returns (ExecutionOutput); }