google_guest_agent/snapshot_service/snapshot_service.proto (75 lines of code) (raw):

// Copyright 2019 Google LLC // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // https://www.apache.org/licenses/LICENSE-2.0 // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. syntax = "proto3"; package cloud.vmm; option go_package = "/cloud_vmm"; enum OperationType { NOT_SET = 0; PRE_SNAPSHOT = 1; POST_SNAPSHOT = 2; } enum SupportedFeatures { NONE = 0; SNAPSHOTS = 1; } message SnapshotRequest { // The operation id of the snapshot. int32 operation_id = 1; // A list of comma separated target/lun values, e.g "1/2,3/4". string disk_list = 2; // The operation type. OperationType type = 3; } message ServerInfo { repeated SupportedFeatures supported_features = 1; } enum AgentErrorCode { NO_ERROR = 0; // The snapshot config was improper in some way. INVALID_CONFIG = 1; // The pre or post snapshot script was not found on disk. SCRIPT_NOT_FOUND = 2; // The pre or post snapshot script timed out. SCRIPT_TIMED_OUT = 3; // The pre or post snapshot script returned an error, but the "continue on // error" flag was not set. UNHANDLED_SCRIPT_ERROR = 4; } message SnapshotResponse { // The operation id of the snapshot. int32 operation_id = 1; // The return code of the scripts run by the guest. If this is non-zero, then // agent_return_code should be UNHANDLED_SCRIPT_ERROR. int32 scripts_return_code = 2; // The agent return code. AgentErrorCode agent_return_code = 3; // The operation type. OperationType type = 4; } message GuestReady { bool request_server_info = 1; } message GuestMessage { oneof msg { SnapshotRequest snapshot_request = 1; ServerInfo server_info = 2; } } message ServerAck {} // Service to handle pre and post snapshot requests from vanadium. service SnapshotService { // The client is expected to first send a "GuestReady" message, indicating // they are available and establishing the connection that vanadium writes // requests to the agent on. rpc CreateConnection(GuestReady) returns (stream GuestMessage) {} // Handles the agent's responses to the above requests. rpc HandleResponsesFromGuest(SnapshotResponse) returns (ServerAck) {} }