// Copyright 2021 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 // // http://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 google.cloud.gaming.v1; import "google/api/field_behavior.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; option go_package = "cloud.google.com/go/gaming/apiv1/gamingpb;gamingpb"; option java_multiple_files = true; option java_package = "com.google.cloud.gaming.v1"; // Represents the metadata of the long-running operation. message OperationMetadata { // Output only. The time the operation was created. google.protobuf.Timestamp create_time = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The time the operation finished running. google.protobuf.Timestamp end_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Server-defined resource path for the target of the operation. string target = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Name of the verb executed by the operation. string verb = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Human-readable status of the operation, if any. string status_message = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Identifies whether the user has requested cancellation // of the operation. Operations that have successfully been cancelled // have [Operation.error][] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1, // corresponding to `Code.CANCELLED`. bool requested_cancellation = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. API version used to start the operation. string api_version = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. List of Locations that could not be reached. repeated string unreachable = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Operation status for Game Services API operations. Operation status is in // the form of key-value pairs where keys are resource IDs and the values show // the status of the operation. In case of failures, the value includes an // error code and error message. map operation_status = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; } message OperationStatus { enum ErrorCode { ERROR_CODE_UNSPECIFIED = 0; INTERNAL_ERROR = 1; PERMISSION_DENIED = 2; CLUSTER_CONNECTION = 3; } // Output only. Whether the operation is done or still in progress. bool done = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // The error code in case of failures. ErrorCode error_code = 2; // The human-readable error message. string error_message = 3; } // The label selector, used to group labels on the resources. message LabelSelector { // Resource labels for this selector. map labels = 1; } // The realm selector, used to match realm resources. message RealmSelector { // List of realms to match. repeated string realms = 1; } // The schedule of a recurring or one time event. The event's time span is // specified by start_time and end_time. If the scheduled event's timespan is // larger than the cron_spec + cron_job_duration, the event will be recurring. // If only cron_spec + cron_job_duration are specified, the event is effective // starting at the local time specified by cron_spec, and is recurring. // // ``` // start_time|-------[cron job]-------[cron job]-------[cron job]---|end_time // cron job: cron spec start time + duration // ``` message Schedule { // The start time of the event. google.protobuf.Timestamp start_time = 1; // The end time of the event. google.protobuf.Timestamp end_time = 2; // The duration for the cron job event. The duration of the event is effective // after the cron job's start time. google.protobuf.Duration cron_job_duration = 3; // The cron definition of the scheduled event. See // https://en.wikipedia.org/wiki/Cron. Cron spec specifies the local time as // defined by the realm. string cron_spec = 4; } // Encapsulates Agones fleet spec and Agones autoscaler spec sources. message SpecSource { // The game server config resource. Uses the form: // `projects/{project}/locations/{location}/gameServerDeployments/{deployment_id}/configs/{config_id}`. string game_server_config_name = 1; // The name of the Agones leet config or Agones scaling config used to derive // the Agones fleet or Agones autoscaler spec. string name = 2; } // Details about the Agones resources. message TargetDetails { // Details of the target Agones fleet. message TargetFleetDetails { // Target Agones fleet specification. message TargetFleet { // The name of the Agones fleet. string name = 1; // Encapsulates the source of the Agones fleet spec. // The Agones fleet spec source. SpecSource spec_source = 2; } // Target Agones autoscaler policy reference. message TargetFleetAutoscaler { // The name of the Agones autoscaler. string name = 1; // Encapsulates the source of the Agones fleet spec. // Details about the Agones autoscaler spec. SpecSource spec_source = 2; } // Reference to target Agones fleet. TargetFleet fleet = 1; // Reference to target Agones fleet autoscaling policy. TargetFleetAutoscaler autoscaler = 2; } // The game server cluster name. Uses the form: // `projects/{project}/locations/{location}/realms/{realm}/gameServerClusters/{cluster}`. string game_server_cluster_name = 1; // The game server deployment name. Uses the form: // `projects/{project}/locations/{location}/gameServerDeployments/{deployment_id}`. string game_server_deployment_name = 2; // Agones fleet details for game server clusters and game server deployments. repeated TargetFleetDetails fleet_details = 3; } // Encapsulates the Target state. message TargetState { // Details about Agones fleets. repeated TargetDetails details = 1; } // Details of the deployed Agones fleet. message DeployedFleetDetails { // Agones fleet specification and details. message DeployedFleet { // DeployedFleetStatus has details about the Agones fleets such as how many // are running, how many allocated, and so on. message DeployedFleetStatus { // The number of GameServer replicas in the READY state in this fleet. int64 ready_replicas = 1; // The number of GameServer replicas in the ALLOCATED state in this fleet. int64 allocated_replicas = 2; // The number of GameServer replicas in the RESERVED state in this fleet. // Reserved instances won't be deleted on scale down, but won't cause // an autoscaler to scale up. int64 reserved_replicas = 3; // The total number of current GameServer replicas in this fleet. int64 replicas = 4; } // The name of the Agones fleet. string fleet = 1; // The fleet spec retrieved from the Agones fleet. string fleet_spec = 2; // The source spec that is used to create the Agones fleet. // The GameServerConfig resource may no longer exist in the system. SpecSource spec_source = 3; // The current status of the Agones fleet. // Includes count of game servers in various states. DeployedFleetStatus status = 5; } // Details about the Agones autoscaler. message DeployedFleetAutoscaler { // The name of the Agones autoscaler. string autoscaler = 1; // The source spec that is used to create the autoscaler. // The GameServerConfig resource may no longer exist in the system. SpecSource spec_source = 4; // The autoscaler spec retrieved from Agones. string fleet_autoscaler_spec = 3; } // Information about the Agones fleet. DeployedFleet deployed_fleet = 1; // Information about the Agones autoscaler for that fleet. DeployedFleetAutoscaler deployed_autoscaler = 2; }