summaryrefslogtreecommitdiff
path: root/third_party/googleapis/google/cloud/gaming/v1
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/googleapis/google/cloud/gaming/v1')
-rw-r--r--third_party/googleapis/google/cloud/gaming/v1/BUILD.bazel396
-rw-r--r--third_party/googleapis/google/cloud/gaming/v1/common.proto238
-rw-r--r--third_party/googleapis/google/cloud/gaming/v1/game_server_clusters.proto371
-rw-r--r--third_party/googleapis/google/cloud/gaming/v1/game_server_clusters_service.proto111
-rw-r--r--third_party/googleapis/google/cloud/gaming/v1/game_server_configs.proto172
-rw-r--r--third_party/googleapis/google/cloud/gaming/v1/game_server_configs_service.proto77
-rw-r--r--third_party/googleapis/google/cloud/gaming/v1/game_server_deployments.proto286
-rw-r--r--third_party/googleapis/google/cloud/gaming/v1/game_server_deployments_service.proto132
-rw-r--r--third_party/googleapis/google/cloud/gaming/v1/gameservices_v1.yaml129
-rw-r--r--third_party/googleapis/google/cloud/gaming/v1/gaming_grpc_service_config.json59
-rw-r--r--third_party/googleapis/google/cloud/gaming/v1/realms.proto181
-rw-r--r--third_party/googleapis/google/cloud/gaming/v1/realms_service.proto95
12 files changed, 2247 insertions, 0 deletions
diff --git a/third_party/googleapis/google/cloud/gaming/v1/BUILD.bazel b/third_party/googleapis/google/cloud/gaming/v1/BUILD.bazel
new file mode 100644
index 0000000..6d60d49
--- /dev/null
+++ b/third_party/googleapis/google/cloud/gaming/v1/BUILD.bazel
@@ -0,0 +1,396 @@
+# This file was automatically generated by BuildFileGenerator
+# https://github.com/googleapis/gapic-generator/tree/master/rules_gapic/bazel
+
+# Most of the manual changes to this file will be overwritten.
+# It's **only** allowed to change the following rule attribute values:
+# - names of *_gapic_assembly_* rules
+# - certain parameters of *_gapic_library rules, including but not limited to:
+# * extra_protoc_parameters
+# * extra_protoc_file_parameters
+# The complete list of preserved parameters can be found in the source code.
+
+# This is an API workspace, having public visibility by default makes perfect sense.
+package(default_visibility = ["//visibility:public"])
+
+##############################################################################
+# Common
+##############################################################################
+load("@rules_proto//proto:defs.bzl", "proto_library")
+load("@com_google_googleapis_imports//:imports.bzl", "proto_library_with_info")
+
+proto_library(
+ name = "gaming_proto",
+ srcs = [
+ "common.proto",
+ "game_server_clusters.proto",
+ "game_server_clusters_service.proto",
+ "game_server_configs.proto",
+ "game_server_configs_service.proto",
+ "game_server_deployments.proto",
+ "game_server_deployments_service.proto",
+ "realms.proto",
+ "realms_service.proto",
+ ],
+ deps = [
+ "//google/api:annotations_proto",
+ "//google/api:client_proto",
+ "//google/api:field_behavior_proto",
+ "//google/api:resource_proto",
+ "//google/longrunning:operations_proto",
+ "@com_google_protobuf//:duration_proto",
+ "@com_google_protobuf//:field_mask_proto",
+ "@com_google_protobuf//:timestamp_proto",
+ ],
+)
+
+proto_library_with_info(
+ name = "gaming_proto_with_info",
+ deps = [
+ ":gaming_proto",
+ "//google/cloud:common_resources_proto",
+ ],
+)
+
+##############################################################################
+# Java
+##############################################################################
+load(
+ "@com_google_googleapis_imports//:imports.bzl",
+ "java_gapic_assembly_gradle_pkg",
+ "java_gapic_library",
+ "java_gapic_test",
+ "java_grpc_library",
+ "java_proto_library",
+)
+
+java_proto_library(
+ name = "gaming_java_proto",
+ deps = [":gaming_proto"],
+)
+
+java_grpc_library(
+ name = "gaming_java_grpc",
+ srcs = [":gaming_proto"],
+ deps = [":gaming_java_proto"],
+)
+
+java_gapic_library(
+ name = "gaming_java_gapic",
+ srcs = [":gaming_proto_with_info"],
+ grpc_service_config = "gaming_grpc_service_config.json",
+ test_deps = [
+ ":gaming_java_grpc",
+ ],
+ transport = "grpc+rest",
+ deps = [
+ ":gaming_java_proto",
+ ],
+)
+
+java_gapic_test(
+ name = "gaming_java_gapic_test_suite",
+ test_classes = [
+ "com.google.cloud.gaming.v1.GameServerClustersServiceClientHttpJsonTest",
+ "com.google.cloud.gaming.v1.GameServerClustersServiceClientTest",
+ "com.google.cloud.gaming.v1.GameServerConfigsServiceClientHttpJsonTest",
+ "com.google.cloud.gaming.v1.GameServerConfigsServiceClientTest",
+ "com.google.cloud.gaming.v1.GameServerDeploymentsServiceClientHttpJsonTest",
+ "com.google.cloud.gaming.v1.GameServerDeploymentsServiceClientTest",
+ "com.google.cloud.gaming.v1.RealmsServiceClientHttpJsonTest",
+ "com.google.cloud.gaming.v1.RealmsServiceClientTest",
+ ],
+ runtime_deps = [":gaming_java_gapic_test"],
+)
+
+# Open Source Packages
+java_gapic_assembly_gradle_pkg(
+ name = "google-cloud-gaming-v1-java",
+ include_samples = True,
+ transport = "grpc+rest",
+ deps = [
+ ":gaming_java_gapic",
+ ":gaming_java_grpc",
+ ":gaming_java_proto",
+ ":gaming_proto",
+ ],
+)
+
+##############################################################################
+# Go
+##############################################################################
+load(
+ "@com_google_googleapis_imports//:imports.bzl",
+ "go_gapic_assembly_pkg",
+ "go_gapic_library",
+ "go_proto_library",
+ "go_test",
+)
+
+go_proto_library(
+ name = "gaming_go_proto",
+ compilers = ["@io_bazel_rules_go//proto:go_grpc"],
+ importpath = "google.golang.org/genproto/googleapis/cloud/gaming/v1",
+ protos = [":gaming_proto"],
+ deps = [
+ "//google/api:annotations_go_proto",
+ "//google/longrunning:longrunning_go_proto",
+ ],
+)
+
+go_gapic_library(
+ name = "gaming_go_gapic",
+ srcs = [":gaming_proto_with_info"],
+ grpc_service_config = "gaming_grpc_service_config.json",
+ importpath = "cloud.google.com/go/gaming/apiv1;gaming",
+ service_yaml = "gameservices_v1.yaml",
+ transport = "grpc+rest",
+ deps = [
+ ":gaming_go_proto",
+ "//google/longrunning:longrunning_go_proto",
+ "@com_google_cloud_go//longrunning:go_default_library",
+ "@com_google_cloud_go//longrunning/autogen:go_default_library",
+ "@io_bazel_rules_go//proto/wkt:duration_go_proto",
+ ],
+)
+
+go_test(
+ name = "gaming_go_gapic_test",
+ srcs = [":gaming_go_gapic_srcjar_test"],
+ embed = [":gaming_go_gapic"],
+ importpath = "cloud.google.com/go/gaming/apiv1",
+)
+
+# Open Source Packages
+go_gapic_assembly_pkg(
+ name = "gapi-cloud-gaming-v1-go",
+ deps = [
+ ":gaming_go_gapic",
+ ":gaming_go_gapic_srcjar-test.srcjar",
+ ":gaming_go_proto",
+ ],
+)
+
+##############################################################################
+# Python
+##############################################################################
+load(
+ "@com_google_googleapis_imports//:imports.bzl",
+ "py_gapic_assembly_pkg",
+ "py_gapic_library",
+ "py_test",
+)
+
+py_gapic_library(
+ name = "gaming_py_gapic",
+ srcs = [":gaming_proto"],
+ grpc_service_config = "gaming_grpc_service_config.json",
+ opt_args = [
+ "warehouse-package-name=google-cloud-game-servers",
+ ],
+ transport = "grpc",
+)
+
+py_test(
+ name = "gaming_py_gapic_test",
+ srcs = [
+ "gaming_py_gapic_pytest.py",
+ "gaming_py_gapic_test.py",
+ ],
+ legacy_create_init = False,
+ deps = [":gaming_py_gapic"],
+)
+
+# Open Source Packages
+py_gapic_assembly_pkg(
+ name = "gaming-v1-py",
+ deps = [
+ ":gaming_py_gapic",
+ ],
+)
+
+##############################################################################
+# PHP
+##############################################################################
+load(
+ "@com_google_googleapis_imports//:imports.bzl",
+ "php_gapic_assembly_pkg",
+ "php_gapic_library",
+ "php_grpc_library",
+ "php_proto_library",
+)
+
+php_proto_library(
+ name = "gaming_php_proto",
+ deps = [":gaming_proto"],
+)
+
+php_grpc_library(
+ name = "gaming_php_grpc",
+ srcs = [":gaming_proto"],
+ deps = [":gaming_php_proto"],
+)
+
+php_gapic_library(
+ name = "gaming_php_gapic",
+ srcs = [":gaming_proto_with_info"],
+ grpc_service_config = "gaming_grpc_service_config.json",
+ service_yaml = "gameservices_v1.yaml",
+ deps = [
+ ":gaming_php_grpc",
+ ":gaming_php_proto",
+ ],
+)
+
+# Open Source Packages
+php_gapic_assembly_pkg(
+ name = "google-cloud-gaming-v1-php",
+ deps = [
+ ":gaming_php_gapic",
+ ":gaming_php_grpc",
+ ":gaming_php_proto",
+ ],
+)
+
+##############################################################################
+# Node.js
+##############################################################################
+load(
+ "@com_google_googleapis_imports//:imports.bzl",
+ "nodejs_gapic_assembly_pkg",
+ "nodejs_gapic_library",
+)
+
+nodejs_gapic_library(
+ name = "gaming_nodejs_gapic",
+ package_name = "@google-cloud/game-servers",
+ src = ":gaming_proto_with_info",
+ extra_protoc_parameters = ["metadata"],
+ grpc_service_config = "gaming_grpc_service_config.json",
+ package = "google.cloud.gaming.v1",
+ service_yaml = "gameservices_v1.yaml",
+ deps = [],
+)
+
+nodejs_gapic_assembly_pkg(
+ name = "gaming-v1-nodejs",
+ deps = [
+ ":gaming_nodejs_gapic",
+ ":gaming_proto",
+ ],
+)
+
+##############################################################################
+# Ruby
+##############################################################################
+load(
+ "@com_google_googleapis_imports//:imports.bzl",
+ "ruby_cloud_gapic_library",
+ "ruby_gapic_assembly_pkg",
+ "ruby_grpc_library",
+ "ruby_proto_library",
+)
+
+ruby_proto_library(
+ name = "gaming_ruby_proto",
+ deps = [":gaming_proto"],
+)
+
+ruby_grpc_library(
+ name = "gaming_ruby_grpc",
+ srcs = [":gaming_proto"],
+ deps = [":gaming_ruby_proto"],
+)
+
+ruby_cloud_gapic_library(
+ name = "gaming_ruby_gapic",
+ srcs = [":gaming_proto_with_info"],
+ extra_protoc_parameters = [
+ "ruby-cloud-gem-name=google-cloud-gaming-v1",
+ "ruby-cloud-env-prefix=GAMING",
+ "ruby-cloud-product-url=https://cloud.google.com/game-servers",
+ "ruby-cloud-api-id=gameservices.googleapis.com",
+ "ruby-cloud-api-shortname=gameservices",
+ ],
+ grpc_service_config = "gaming_grpc_service_config.json",
+ ruby_cloud_description = "With Game Servers, studios and publishers can deploy and manage their game server infrastructure hosted on multiple Agones clusters around the world through a single interface.",
+ ruby_cloud_title = "Cloud Gaming V1",
+ deps = [
+ ":gaming_ruby_grpc",
+ ":gaming_ruby_proto",
+ ],
+)
+
+# Open Source Packages
+ruby_gapic_assembly_pkg(
+ name = "google-cloud-gaming-v1-ruby",
+ deps = [
+ ":gaming_ruby_gapic",
+ ":gaming_ruby_grpc",
+ ":gaming_ruby_proto",
+ ],
+)
+
+##############################################################################
+# C#
+##############################################################################
+load(
+ "@com_google_googleapis_imports//:imports.bzl",
+ "csharp_gapic_assembly_pkg",
+ "csharp_gapic_library",
+ "csharp_grpc_library",
+ "csharp_proto_library",
+)
+
+csharp_proto_library(
+ name = "gaming_csharp_proto",
+ deps = [":gaming_proto"],
+)
+
+csharp_grpc_library(
+ name = "gaming_csharp_grpc",
+ srcs = [":gaming_proto"],
+ deps = [":gaming_csharp_proto"],
+)
+
+csharp_gapic_library(
+ name = "gaming_csharp_gapic",
+ srcs = [":gaming_proto_with_info"],
+ common_resources_config = "@gax_dotnet//:Google.Api.Gax/ResourceNames/CommonResourcesConfig.json",
+ grpc_service_config = "gaming_grpc_service_config.json",
+ service_yaml = "gameservices_v1.yaml",
+ deps = [
+ ":gaming_csharp_grpc",
+ ":gaming_csharp_proto",
+ ],
+)
+
+# Open Source Packages
+csharp_gapic_assembly_pkg(
+ name = "google-cloud-gaming-v1-csharp",
+ deps = [
+ ":gaming_csharp_gapic",
+ ":gaming_csharp_grpc",
+ ":gaming_csharp_proto",
+ ],
+)
+
+##############################################################################
+# C++
+##############################################################################
+load(
+ "@com_google_googleapis_imports//:imports.bzl",
+ "cc_grpc_library",
+ "cc_proto_library",
+)
+
+cc_proto_library(
+ name = "gaming_cc_proto",
+ deps = [":gaming_proto"],
+)
+
+cc_grpc_library(
+ name = "gaming_cc_grpc",
+ srcs = [":gaming_proto"],
+ grpc_only = True,
+ deps = [":gaming_cc_proto"],
+)
diff --git a/third_party/googleapis/google/cloud/gaming/v1/common.proto b/third_party/googleapis/google/cloud/gaming/v1/common.proto
new file mode 100644
index 0000000..8430426
--- /dev/null
+++ b/third_party/googleapis/google/cloud/gaming/v1/common.proto
@@ -0,0 +1,238 @@
+// 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 = "google.golang.org/genproto/googleapis/cloud/gaming/v1;gaming";
+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<string, OperationStatus> 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<string, string> 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;
+}
diff --git a/third_party/googleapis/google/cloud/gaming/v1/game_server_clusters.proto b/third_party/googleapis/google/cloud/gaming/v1/game_server_clusters.proto
new file mode 100644
index 0000000..02fbc0f
--- /dev/null
+++ b/third_party/googleapis/google/cloud/gaming/v1/game_server_clusters.proto
@@ -0,0 +1,371 @@
+// 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/api/resource.proto";
+import "google/cloud/gaming/v1/common.proto";
+import "google/protobuf/field_mask.proto";
+import "google/protobuf/timestamp.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/cloud/gaming/v1;gaming";
+option java_multiple_files = true;
+option java_package = "com.google.cloud.gaming.v1";
+
+// A view for GameServerCluster objects.
+enum GameServerClusterView {
+ // The default / unset value.
+ // The API will default to the BASIC view.
+ GAME_SERVER_CLUSTER_VIEW_UNSPECIFIED = 0;
+
+ // Include basic information of a GameServerCluster resource and omit
+ // `cluster_state`. This is the default value (for ListGameServerClusters,
+ // GetGameServerCluster and PreviewCreateGameServerCluster).
+ BASIC = 1;
+
+ // Include everything.
+ FULL = 2;
+}
+
+// Request message for GameServerClustersService.ListGameServerClusters.
+message ListGameServerClustersRequest {
+ // Required. The parent resource name, in the following form:
+ // "projects/{project}/locations/{location}/realms/{realm}".
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ child_type: "gameservices.googleapis.com/GameServerCluster"
+ }
+ ];
+
+ // Optional. The maximum number of items to return. If unspecified, the server
+ // will pick an appropriate default. The server may return fewer items than
+ // requested. A caller should only rely on response's
+ // [next_page_token][google.cloud.gaming.v1.ListGameServerClustersResponse.next_page_token] to
+ // determine if there are more GameServerClusters left to be queried.
+ int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The next_page_token value returned from a previous List request, if any.
+ string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The filter to apply to list results.
+ string filter = 4 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Specifies the ordering of results following syntax at
+ // https://cloud.google.com/apis/design/design_patterns#sorting_order.
+ string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. View for the returned GameServerCluster objects. When `FULL` is
+ // specified, the `cluster_state` field is also returned in the
+ // GameServerCluster object, which includes the state of the referenced
+ // Kubernetes cluster such as versions and provider info. The default/unset
+ // value is GAME_SERVER_CLUSTER_VIEW_UNSPECIFIED, same as BASIC, which does
+ // not return the `cluster_state` field.
+ GameServerClusterView view = 6 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Response message for GameServerClustersService.ListGameServerClusters.
+message ListGameServerClustersResponse {
+ // The list of game server clusters.
+ repeated GameServerCluster game_server_clusters = 1;
+
+ // Token to retrieve the next page of results, or empty if there are no more
+ // results in the list.
+ string next_page_token = 2;
+
+ // List of locations that could not be reached.
+ repeated string unreachable = 4;
+}
+
+// Request message for GameServerClustersService.GetGameServerCluster.
+message GetGameServerClusterRequest {
+ // Required. The name of the game server cluster to retrieve, in the following form:
+ // `projects/{project}/locations/{location}/realms/{realm-id}/gameServerClusters/{cluster}`.
+ string name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "gameservices.googleapis.com/GameServerCluster"
+ }
+ ];
+
+ // Optional. View for the returned GameServerCluster objects. When `FULL` is
+ // specified, the `cluster_state` field is also returned in the
+ // GameServerCluster object, which includes the state of the referenced
+ // Kubernetes cluster such as versions and provider info. The default/unset
+ // value is GAME_SERVER_CLUSTER_VIEW_UNSPECIFIED, same as BASIC, which does
+ // not return the `cluster_state` field.
+ GameServerClusterView view = 6 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Request message for GameServerClustersService.CreateGameServerCluster.
+message CreateGameServerClusterRequest {
+ // Required. The parent resource name, in the following form:
+ // `projects/{project}/locations/{location}/realms/{realm-id}`.
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ child_type: "gameservices.googleapis.com/GameServerCluster"
+ }
+ ];
+
+ // Required. The ID of the game server cluster resource to be created.
+ string game_server_cluster_id = 2 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. The game server cluster resource to be created.
+ GameServerCluster game_server_cluster = 3 [(google.api.field_behavior) = REQUIRED];
+}
+
+// Request message for GameServerClustersService.PreviewCreateGameServerCluster.
+message PreviewCreateGameServerClusterRequest {
+ // Required. The parent resource name, in the following form:
+ // `projects/{project}/locations/{location}/realms/{realm}`.
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ child_type: "gameservices.googleapis.com/GameServerCluster"
+ }
+ ];
+
+ // Required. The ID of the game server cluster resource to be created.
+ string game_server_cluster_id = 2 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. The game server cluster resource to be created.
+ GameServerCluster game_server_cluster = 3 [(google.api.field_behavior) = REQUIRED];
+
+ // Optional. The target timestamp to compute the preview.
+ google.protobuf.Timestamp preview_time = 4 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. This field is deprecated, preview will always return
+ // KubernetesClusterState.
+ GameServerClusterView view = 6 [
+ deprecated = true,
+ (google.api.field_behavior) = OPTIONAL
+ ];
+}
+
+// Response message for
+// GameServerClustersService.PreviewCreateGameServerCluster.
+message PreviewCreateGameServerClusterResponse {
+ // The ETag of the game server cluster.
+ string etag = 2;
+
+ // The target state.
+ TargetState target_state = 3;
+
+ // Output only. The state of the Kubernetes cluster in preview, this will be available if
+ // 'view' is set to `FULL` in the relevant List/Get/Preview request.
+ KubernetesClusterState cluster_state = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
+}
+
+// Request message for GameServerClustersService.DeleteGameServerCluster.
+message DeleteGameServerClusterRequest {
+ // Required. The name of the game server cluster to delete, in the following form:
+ // `projects/{project}/locations/{location}/gameServerClusters/{cluster}`.
+ string name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "gameservices.googleapis.com/GameServerCluster"
+ }
+ ];
+}
+
+// Request message for GameServerClustersService.PreviewDeleteGameServerCluster.
+message PreviewDeleteGameServerClusterRequest {
+ // Required. The name of the game server cluster to delete, in the following form:
+ // `projects/{project}/locations/{location}/gameServerClusters/{cluster}`.
+ string name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "gameservices.googleapis.com/GameServerCluster"
+ }
+ ];
+
+ // Optional. The target timestamp to compute the preview.
+ google.protobuf.Timestamp preview_time = 2 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Response message for
+// GameServerClustersService.PreviewDeleteGameServerCluster.
+message PreviewDeleteGameServerClusterResponse {
+ // The ETag of the game server cluster.
+ string etag = 2;
+
+ // The target state.
+ TargetState target_state = 3;
+}
+
+// Request message for GameServerClustersService.UpdateGameServerCluster.
+message UpdateGameServerClusterRequest {
+ // Required. The game server cluster to be updated.
+ // Only fields specified in update_mask are updated.
+ GameServerCluster game_server_cluster = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. Mask of fields to update. At least one path must be supplied in
+ // this field. For the `FieldMask` definition, see
+ // https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask
+ google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED];
+}
+
+// Request message for GameServerClustersService.UpdateGameServerCluster.
+message PreviewUpdateGameServerClusterRequest {
+ // Required. The game server cluster to be updated.
+ // Only fields specified in update_mask are updated.
+ GameServerCluster game_server_cluster = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. Mask of fields to update. At least one path must be supplied in
+ // this field. For the `FieldMask` definition, see
+ // https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask
+ google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED];
+
+ // Optional. The target timestamp to compute the preview.
+ google.protobuf.Timestamp preview_time = 3 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Response message for GameServerClustersService.PreviewUpdateGameServerCluster
+message PreviewUpdateGameServerClusterResponse {
+ // The ETag of the game server cluster.
+ string etag = 2;
+
+ // The target state.
+ TargetState target_state = 3;
+}
+
+// The game server cluster connection information.
+message GameServerClusterConnectionInfo {
+ // The location of the Kubernetes cluster.
+ oneof cluster_reference {
+ // Reference to the GKE cluster where the game servers are installed.
+ GkeClusterReference gke_cluster_reference = 7;
+ }
+
+ // Namespace designated on the game server cluster where the Agones game
+ // server instances will be created. Existence of the namespace will be
+ // validated during creation.
+ string namespace = 5;
+}
+
+// A reference to a GKE cluster.
+message GkeClusterReference {
+ // The full or partial name of a GKE cluster, using one of the following
+ // forms:
+ // * `projects/{project}/locations/{location}/clusters/{cluster}`
+ // * `locations/{location}/clusters/{cluster}`
+ // * `{cluster}`
+ // If project and location are not specified, the project and location of the
+ // GameServerCluster resource are used to generate the full name of the
+ // GKE cluster.
+ string cluster = 1;
+}
+
+// A game server cluster resource.
+message GameServerCluster {
+ option (google.api.resource) = {
+ type: "gameservices.googleapis.com/GameServerCluster"
+ pattern: "projects/{project}/locations/{location}/realms/{realm}/gameServerClusters/{cluster}"
+ };
+
+ // Required. The resource name of the game server cluster, in the following form:
+ // `projects/{project}/locations/{location}/realms/{realm}/gameServerClusters/{cluster}`.
+ // For example,
+ // `projects/my-project/locations/{location}/realms/zanzibar/gameServerClusters/my-onprem-cluster`.
+ string name = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // Output only. The creation time.
+ google.protobuf.Timestamp create_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The last-modified time.
+ google.protobuf.Timestamp update_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // The labels associated with this game server cluster. Each label is a
+ // key-value pair.
+ map<string, string> labels = 4;
+
+ // The game server cluster connection information. This information is used to
+ // manage game server clusters.
+ GameServerClusterConnectionInfo connection_info = 5;
+
+ // ETag of the resource.
+ string etag = 6;
+
+ // Human readable description of the cluster.
+ string description = 7;
+
+ // Output only. The state of the Kubernetes cluster, this will be available if
+ // 'view' is set to `FULL` in the relevant List/Get/Preview request.
+ KubernetesClusterState cluster_state = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
+}
+
+// The state of the Kubernetes cluster.
+message KubernetesClusterState {
+ // The state of the installed versions of Agones/Kubernetes. See also
+ // https://cloud.google.com/game-servers/docs/versions-and-upgrades.
+ enum InstallationState {
+ // The default value. This value is used if the state is omitted.
+ INSTALLATION_STATE_UNSPECIFIED = 0;
+
+ // The combination of Agones and Kubernetes versions is supported by Google
+ // Cloud Game Servers.
+ AGONES_KUBERNETES_VERSION_SUPPORTED = 1;
+
+ // The installed version of Agones is not supported by Google Cloud Game
+ // Servers.
+ AGONES_VERSION_UNSUPPORTED = 2;
+
+ // The installed version of Agones is supported by Google Cloud Game
+ // Servers, but the installed version of Kubernetes is not recommended or
+ // supported by the version of Agones.
+ AGONES_KUBERNETES_VERSION_UNSUPPORTED = 3;
+
+ // The installed version of Agones is not recognized because the Agones
+ // controller's image name does not have a version string reported as
+ // {major}.{minor}(.{patch}).
+ AGONES_VERSION_UNRECOGNIZED = 4;
+
+ // The server version of Kubernetes cluster is not recognized because the
+ // API server didn't return parsable version info on path/version.
+ KUBERNETES_VERSION_UNRECOGNIZED = 5;
+
+ // Failed to read or verify the version of Agones or Kubernetes. See
+ // version_installed_error_message for details.
+ VERSION_VERIFICATION_FAILED = 6;
+
+ // Agones is not installed.
+ AGONES_NOT_INSTALLED = 7;
+ }
+
+ // Output only. The version of Agones currently installed in the registered Kubernetes
+ // cluster.
+ string agones_version_installed = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The version of Kubernetes that is currently used in the registered
+ // Kubernetes cluster (as detected by the Cloud Game Servers service).
+ string kubernetes_version_installed = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The state for the installed versions of Agones/Kubernetes.
+ InstallationState installation_state = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The detailed error message for the installed versions of Agones/Kubernetes.
+ string version_installed_error_message = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The cloud provider type reported by the first node's providerID in the list
+ // of nodes on the Kubernetes endpoint. On Kubernetes platforms that support
+ // zero-node clusters (like GKE-on-GCP), the provider type will be empty.
+ string provider = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The version of Agones that is targeted to be installed in the cluster.
+ string agones_version_targeted = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
+}
diff --git a/third_party/googleapis/google/cloud/gaming/v1/game_server_clusters_service.proto b/third_party/googleapis/google/cloud/gaming/v1/game_server_clusters_service.proto
new file mode 100644
index 0000000..db7a0f2
--- /dev/null
+++ b/third_party/googleapis/google/cloud/gaming/v1/game_server_clusters_service.proto
@@ -0,0 +1,111 @@
+// 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/annotations.proto";
+import "google/api/client.proto";
+import "google/cloud/gaming/v1/game_server_clusters.proto";
+import "google/longrunning/operations.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/cloud/gaming/v1;gaming";
+option java_multiple_files = true;
+option java_package = "com.google.cloud.gaming.v1";
+
+// The game server cluster maps to Kubernetes clusters running Agones and is
+// used to manage fleets within clusters.
+service GameServerClustersService {
+ option (google.api.default_host) = "gameservices.googleapis.com";
+ option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
+
+ // Lists game server clusters in a given project and location.
+ rpc ListGameServerClusters(ListGameServerClustersRequest) returns (ListGameServerClustersResponse) {
+ option (google.api.http) = {
+ get: "/v1/{parent=projects/*/locations/*/realms/*}/gameServerClusters"
+ };
+ option (google.api.method_signature) = "parent";
+ }
+
+ // Gets details of a single game server cluster.
+ rpc GetGameServerCluster(GetGameServerClusterRequest) returns (GameServerCluster) {
+ option (google.api.http) = {
+ get: "/v1/{name=projects/*/locations/*/realms/*/gameServerClusters/*}"
+ };
+ option (google.api.method_signature) = "name";
+ }
+
+ // Creates a new game server cluster in a given project and location.
+ rpc CreateGameServerCluster(CreateGameServerClusterRequest) returns (google.longrunning.Operation) {
+ option (google.api.http) = {
+ post: "/v1/{parent=projects/*/locations/*/realms/*}/gameServerClusters"
+ body: "game_server_cluster"
+ };
+ option (google.api.method_signature) = "parent,game_server_cluster,game_server_cluster_id";
+ option (google.longrunning.operation_info) = {
+ response_type: "GameServerCluster"
+ metadata_type: "OperationMetadata"
+ };
+ }
+
+ // Previews creation of a new game server cluster in a given project and
+ // location.
+ rpc PreviewCreateGameServerCluster(PreviewCreateGameServerClusterRequest) returns (PreviewCreateGameServerClusterResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=projects/*/locations/*/realms/*}/gameServerClusters:previewCreate"
+ body: "game_server_cluster"
+ };
+ }
+
+ // Deletes a single game server cluster.
+ rpc DeleteGameServerCluster(DeleteGameServerClusterRequest) returns (google.longrunning.Operation) {
+ option (google.api.http) = {
+ delete: "/v1/{name=projects/*/locations/*/realms/*/gameServerClusters/*}"
+ };
+ option (google.api.method_signature) = "name";
+ option (google.longrunning.operation_info) = {
+ response_type: "google.protobuf.Empty"
+ metadata_type: "OperationMetadata"
+ };
+ }
+
+ // Previews deletion of a single game server cluster.
+ rpc PreviewDeleteGameServerCluster(PreviewDeleteGameServerClusterRequest) returns (PreviewDeleteGameServerClusterResponse) {
+ option (google.api.http) = {
+ delete: "/v1/{name=projects/*/locations/*/realms/*/gameServerClusters/*}:previewDelete"
+ };
+ }
+
+ // Patches a single game server cluster.
+ rpc UpdateGameServerCluster(UpdateGameServerClusterRequest) returns (google.longrunning.Operation) {
+ option (google.api.http) = {
+ patch: "/v1/{game_server_cluster.name=projects/*/locations/*/realms/*/gameServerClusters/*}"
+ body: "game_server_cluster"
+ };
+ option (google.api.method_signature) = "game_server_cluster,update_mask";
+ option (google.longrunning.operation_info) = {
+ response_type: "GameServerCluster"
+ metadata_type: "OperationMetadata"
+ };
+ }
+
+ // Previews updating a GameServerCluster.
+ rpc PreviewUpdateGameServerCluster(PreviewUpdateGameServerClusterRequest) returns (PreviewUpdateGameServerClusterResponse) {
+ option (google.api.http) = {
+ patch: "/v1/{game_server_cluster.name=projects/*/locations/*/realms/*/gameServerClusters/*}:previewUpdate"
+ body: "game_server_cluster"
+ };
+ }
+}
diff --git a/third_party/googleapis/google/cloud/gaming/v1/game_server_configs.proto b/third_party/googleapis/google/cloud/gaming/v1/game_server_configs.proto
new file mode 100644
index 0000000..c984865
--- /dev/null
+++ b/third_party/googleapis/google/cloud/gaming/v1/game_server_configs.proto
@@ -0,0 +1,172 @@
+// 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/api/resource.proto";
+import "google/cloud/gaming/v1/common.proto";
+import "google/protobuf/timestamp.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/cloud/gaming/v1;gaming";
+option java_multiple_files = true;
+option java_package = "com.google.cloud.gaming.v1";
+
+// Request message for GameServerConfigsService.ListGameServerConfigs.
+message ListGameServerConfigsRequest {
+ // Required. The parent resource name, in the following form:
+ // `projects/{project}/locations/{location}/gameServerDeployments/{deployment}/configs/*`.
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ child_type: "gameservices.googleapis.com/GameServerConfig"
+ }
+ ];
+
+ // Optional. The maximum number of items to return. If unspecified, server
+ // will pick an appropriate default. Server may return fewer items than
+ // requested. A caller should only rely on response's
+ // [next_page_token][google.cloud.gaming.v1.ListGameServerConfigsResponse.next_page_token] to
+ // determine if there are more GameServerConfigs left to be queried.
+ int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The next_page_token value returned from a previous list request, if any.
+ string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The filter to apply to list results.
+ string filter = 4 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Specifies the ordering of results following syntax at
+ // https://cloud.google.com/apis/design/design_patterns#sorting_order.
+ string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Response message for GameServerConfigsService.ListGameServerConfigs.
+message ListGameServerConfigsResponse {
+ // The list of game server configs.
+ repeated GameServerConfig game_server_configs = 1;
+
+ // Token to retrieve the next page of results, or empty if there are no more
+ // results in the list.
+ string next_page_token = 2;
+
+ // List of locations that could not be reached.
+ repeated string unreachable = 4;
+}
+
+// Request message for GameServerConfigsService.GetGameServerConfig.
+message GetGameServerConfigRequest {
+ // Required. The name of the game server config to retrieve, in the following form:
+ // `projects/{project}/locations/{location}/gameServerDeployments/{deployment}/configs/{config}`.
+ string name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "gameservices.googleapis.com/GameServerConfig"
+ }
+ ];
+}
+
+// Request message for GameServerConfigsService.CreateGameServerConfig.
+message CreateGameServerConfigRequest {
+ // Required. The parent resource name, in the following form:
+ // `projects/{project}/locations/{location}/gameServerDeployments/{deployment}/`.
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ child_type: "gameservices.googleapis.com/GameServerConfig"
+ }
+ ];
+
+ // Required. The ID of the game server config resource to be created.
+ string config_id = 2 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. The game server config resource to be created.
+ GameServerConfig game_server_config = 3 [(google.api.field_behavior) = REQUIRED];
+}
+
+// Request message for GameServerConfigsService.DeleteGameServerConfig.
+message DeleteGameServerConfigRequest {
+ // Required. The name of the game server config to delete, in the following form:
+ // `projects/{project}/locations/{location}/gameServerDeployments/{deployment}/configs/{config}`.
+ string name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "gameservices.googleapis.com/GameServerConfig"
+ }
+ ];
+}
+
+// Autoscaling config for an Agones fleet.
+message ScalingConfig {
+ // Required. The name of the Scaling Config
+ string name = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. Agones fleet autoscaler spec. Example spec:
+ // https://agones.dev/site/docs/reference/fleetautoscaler/
+ string fleet_autoscaler_spec = 2 [(google.api.field_behavior) = REQUIRED];
+
+ // Labels used to identify the game server clusters to which this Agones
+ // scaling config applies. A game server cluster is subject to this Agones
+ // scaling config if its labels match any of the selector entries.
+ repeated LabelSelector selectors = 4;
+
+ // The schedules to which this Scaling Config applies.
+ repeated Schedule schedules = 5;
+}
+
+// Fleet configs for Agones.
+message FleetConfig {
+ // Agones fleet spec. Example spec:
+ // `https://agones.dev/site/docs/reference/fleet/`.
+ string fleet_spec = 1;
+
+ // The name of the FleetConfig.
+ string name = 2;
+}
+
+// A game server config resource.
+message GameServerConfig {
+ option (google.api.resource) = {
+ type: "gameservices.googleapis.com/GameServerConfig"
+ pattern: "projects/{project}/locations/{location}/gameServerDeployments/{deployment}/configs/{config}"
+ };
+
+ // The resource name of the game server config, in the following form:
+ // `projects/{project}/locations/{location}/gameServerDeployments/{deployment}/configs/{config}`.
+ // For example,
+ // `projects/my-project/locations/global/gameServerDeployments/my-game/configs/my-config`.
+ string name = 1;
+
+ // Output only. The creation time.
+ google.protobuf.Timestamp create_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The last-modified time.
+ google.protobuf.Timestamp update_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // The labels associated with this game server config. Each label is a
+ // key-value pair.
+ map<string, string> labels = 4;
+
+ // FleetConfig contains a list of Agones fleet specs. Only one FleetConfig
+ // is allowed.
+ repeated FleetConfig fleet_configs = 5;
+
+ // The autoscaling settings.
+ repeated ScalingConfig scaling_configs = 6;
+
+ // The description of the game server config.
+ string description = 7;
+}
diff --git a/third_party/googleapis/google/cloud/gaming/v1/game_server_configs_service.proto b/third_party/googleapis/google/cloud/gaming/v1/game_server_configs_service.proto
new file mode 100644
index 0000000..c151d60
--- /dev/null
+++ b/third_party/googleapis/google/cloud/gaming/v1/game_server_configs_service.proto
@@ -0,0 +1,77 @@
+// 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/annotations.proto";
+import "google/api/client.proto";
+import "google/cloud/gaming/v1/game_server_configs.proto";
+import "google/longrunning/operations.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/cloud/gaming/v1;gaming";
+option java_multiple_files = true;
+option java_package = "com.google.cloud.gaming.v1";
+
+// The game server config configures the game servers in an Agones fleet.
+service GameServerConfigsService {
+ option (google.api.default_host) = "gameservices.googleapis.com";
+ option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
+
+ // Lists game server configs in a given project, location, and game server
+ // deployment.
+ rpc ListGameServerConfigs(ListGameServerConfigsRequest) returns (ListGameServerConfigsResponse) {
+ option (google.api.http) = {
+ get: "/v1/{parent=projects/*/locations/*/gameServerDeployments/*}/configs"
+ };
+ option (google.api.method_signature) = "parent";
+ }
+
+ // Gets details of a single game server config.
+ rpc GetGameServerConfig(GetGameServerConfigRequest) returns (GameServerConfig) {
+ option (google.api.http) = {
+ get: "/v1/{name=projects/*/locations/*/gameServerDeployments/*/configs/*}"
+ };
+ option (google.api.method_signature) = "name";
+ }
+
+ // Creates a new game server config in a given project, location, and game
+ // server deployment. Game server configs are immutable, and are not applied
+ // until referenced in the game server deployment rollout resource.
+ rpc CreateGameServerConfig(CreateGameServerConfigRequest) returns (google.longrunning.Operation) {
+ option (google.api.http) = {
+ post: "/v1/{parent=projects/*/locations/*/gameServerDeployments/*}/configs"
+ body: "game_server_config"
+ };
+ option (google.api.method_signature) = "parent,game_server_config";
+ option (google.longrunning.operation_info) = {
+ response_type: "GameServerConfig"
+ metadata_type: "OperationMetadata"
+ };
+ }
+
+ // Deletes a single game server config. The deletion will fail if the game
+ // server config is referenced in a game server deployment rollout.
+ rpc DeleteGameServerConfig(DeleteGameServerConfigRequest) returns (google.longrunning.Operation) {
+ option (google.api.http) = {
+ delete: "/v1/{name=projects/*/locations/*/gameServerDeployments/*/configs/*}"
+ };
+ option (google.api.method_signature) = "name";
+ option (google.longrunning.operation_info) = {
+ response_type: "google.protobuf.Empty"
+ metadata_type: "OperationMetadata"
+ };
+ }
+}
diff --git a/third_party/googleapis/google/cloud/gaming/v1/game_server_deployments.proto b/third_party/googleapis/google/cloud/gaming/v1/game_server_deployments.proto
new file mode 100644
index 0000000..3c01717
--- /dev/null
+++ b/third_party/googleapis/google/cloud/gaming/v1/game_server_deployments.proto
@@ -0,0 +1,286 @@
+// 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/api/resource.proto";
+import "google/cloud/gaming/v1/common.proto";
+import "google/protobuf/field_mask.proto";
+import "google/protobuf/timestamp.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/cloud/gaming/v1;gaming";
+option java_multiple_files = true;
+option java_package = "com.google.cloud.gaming.v1";
+
+// Request message for GameServerDeploymentsService.ListGameServerDeployments.
+message ListGameServerDeploymentsRequest {
+ // Required. The parent resource name, in the following form:
+ // `projects/{project}/locations/{location}`.
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ child_type: "gameservices.googleapis.com/GameServerDeployment"
+ }
+ ];
+
+ // Optional. The maximum number of items to return. If unspecified, the server
+ // will pick an appropriate default. The server may return fewer items than
+ // requested. A caller should only rely on response's
+ // [next_page_token][google.cloud.gaming.v1.ListGameServerDeploymentsResponse.next_page_token] to
+ // determine if there are more GameServerDeployments left to be queried.
+ int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The next_page_token value returned from a previous List request,
+ // if any.
+ string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The filter to apply to list results.
+ string filter = 4 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Specifies the ordering of results following syntax at
+ // https://cloud.google.com/apis/design/design_patterns#sorting_order.
+ string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Response message for GameServerDeploymentsService.ListGameServerDeployments.
+message ListGameServerDeploymentsResponse {
+ // The list of game server deployments.
+ repeated GameServerDeployment game_server_deployments = 1;
+
+ // Token to retrieve the next page of results, or empty if there are no more
+ // results in the list.
+ string next_page_token = 2;
+
+ // List of locations that could not be reached.
+ repeated string unreachable = 4;
+}
+
+// Request message for GameServerDeploymentsService.GetGameServerDeployment.
+message GetGameServerDeploymentRequest {
+ // Required. The name of the game server delpoyment to retrieve, in the following form:
+ // `projects/{project}/locations/{location}/gameServerDeployments/{deployment}`.
+ string name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "gameservices.googleapis.com/GameServerDeployment"
+ }
+ ];
+}
+
+// Request message for
+// GameServerDeploymentsService.GetGameServerDeploymentRollout.
+message GetGameServerDeploymentRolloutRequest {
+ // Required. The name of the game server delpoyment to retrieve, in the following form:
+ // `projects/{project}/locations/{location}/gameServerDeployments/{deployment}/rollout`.
+ string name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "gameservices.googleapis.com/GameServerDeployment"
+ }
+ ];
+}
+
+// Request message for GameServerDeploymentsService.CreateGameServerDeployment.
+message CreateGameServerDeploymentRequest {
+ // Required. The parent resource name, in the following form:
+ // `projects/{project}/locations/{location}`.
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ child_type: "gameservices.googleapis.com/GameServerDeployment"
+ }
+ ];
+
+ // Required. The ID of the game server delpoyment resource to be created.
+ string deployment_id = 2 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. The game server delpoyment resource to be created.
+ GameServerDeployment game_server_deployment = 3 [(google.api.field_behavior) = REQUIRED];
+}
+
+// Request message for GameServerDeploymentsService.DeleteGameServerDeployment.
+message DeleteGameServerDeploymentRequest {
+ // Required. The name of the game server delpoyment to delete, in the following form:
+ // `projects/{project}/locations/{location}/gameServerDeployments/{deployment}`.
+ string name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "gameservices.googleapis.com/GameServerDeployment"
+ }
+ ];
+}
+
+// Request message for GameServerDeploymentsService.UpdateGameServerDeployment.
+// Only allows updates for labels.
+message UpdateGameServerDeploymentRequest {
+ // Required. The game server delpoyment to be updated.
+ // Only fields specified in update_mask are updated.
+ GameServerDeployment game_server_deployment = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. Mask of fields to update. At least one path must be supplied in
+ // this field. For the `FieldMask` definition, see
+ // https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask
+ google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED];
+}
+
+// Request message for
+// GameServerDeploymentsService.UpdateGameServerRolloutDeployment.
+message UpdateGameServerDeploymentRolloutRequest {
+ // Required. The game server delpoyment rollout to be updated.
+ // Only fields specified in update_mask are updated.
+ GameServerDeploymentRollout rollout = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. Mask of fields to update. At least one path must be supplied in
+ // this field. For the `FieldMask` definition, see
+ // https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask
+ google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED];
+}
+
+// Request message for GameServerDeploymentsService.FetchDeploymentState.
+message FetchDeploymentStateRequest {
+ // Required. The name of the game server delpoyment, in the following form:
+ // `projects/{project}/locations/{location}/gameServerDeployments/{deployment}`.
+ string name = 1 [(google.api.field_behavior) = REQUIRED];
+}
+
+// Response message for GameServerDeploymentsService.FetchDeploymentState.
+message FetchDeploymentStateResponse {
+ // The game server cluster changes made by the game server deployment.
+ message DeployedClusterState {
+ // The name of the cluster.
+ string cluster = 1;
+
+ // The details about the Agones fleets and autoscalers created in the
+ // game server cluster.
+ repeated DeployedFleetDetails fleet_details = 2;
+ }
+
+ // The state of the game server deployment in each game server cluster.
+ repeated DeployedClusterState cluster_state = 1;
+
+ // List of locations that could not be reached.
+ repeated string unavailable = 2;
+}
+
+// A game server deployment resource.
+message GameServerDeployment {
+ option (google.api.resource) = {
+ type: "gameservices.googleapis.com/GameServerDeployment"
+ pattern: "projects/{project}/locations/{location}/gameServerDeployments/{deployment}"
+ };
+
+ // The resource name of the game server deployment, in the following form:
+ // `projects/{project}/locations/{location}/gameServerDeployments/{deployment}`.
+ // For example,
+ // `projects/my-project/locations/global/gameServerDeployments/my-deployment`.
+ string name = 1;
+
+ // Output only. The creation time.
+ google.protobuf.Timestamp create_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The last-modified time.
+ google.protobuf.Timestamp update_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // The labels associated with this game server deployment. Each label is a
+ // key-value pair.
+ map<string, string> labels = 4;
+
+ // ETag of the resource.
+ string etag = 7;
+
+ // Human readable description of the game server delpoyment.
+ string description = 8;
+}
+
+// A game server config override.
+message GameServerConfigOverride {
+ // Selector chooses the game server config targets.
+ oneof selector {
+ // Selector for choosing applicable realms.
+ RealmSelector realms_selector = 1;
+ }
+
+ // Selects the game server config and how it should be applied.
+ oneof change {
+ // The game server config for this override.
+ string config_version = 100;
+ }
+}
+
+// The game server deployment rollout which represents the desired rollout
+// state.
+message GameServerDeploymentRollout {
+ option (google.api.resource) = {
+ type: "gameservices.googleapis.com/GameServerDeploymentRollout"
+ pattern: "projects/{project}/locations/{location}/gameServerDeployments/{deployment}/rollout"
+ };
+
+ // The resource name of the game server deployment rollout, in the following
+ // form:
+ // `projects/{project}/locations/{location}/gameServerDeployments/{deployment}/rollout`.
+ // For example,
+ // `projects/my-project/locations/global/gameServerDeployments/my-deployment/rollout`.
+ string name = 1;
+
+ // Output only. The creation time.
+ google.protobuf.Timestamp create_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The last-modified time.
+ google.protobuf.Timestamp update_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // The default game server config is applied to all realms unless overridden
+ // in the rollout. For example,
+ // `projects/my-project/locations/global/gameServerDeployments/my-game/configs/my-config`.
+ string default_game_server_config = 4;
+
+ // Contains the game server config rollout overrides. Overrides are processed
+ // in the order they are listed. Once a match is found for a realm, the rest
+ // of the list is not processed.
+ repeated GameServerConfigOverride game_server_config_overrides = 5;
+
+ // ETag of the resource.
+ string etag = 6;
+}
+
+// Request message for PreviewGameServerDeploymentRollout.
+message PreviewGameServerDeploymentRolloutRequest {
+ // Required. The game server deployment rollout to be updated.
+ // Only fields specified in update_mask are updated.
+ GameServerDeploymentRollout rollout = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // Optional. Mask of fields to update. At least one path must be supplied in
+ // this field. For the `FieldMask` definition, see
+ // https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask
+ google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The target timestamp to compute the preview. Defaults to the immediately
+ // after the proposed rollout completes.
+ google.protobuf.Timestamp preview_time = 3 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Response message for PreviewGameServerDeploymentRollout.
+// This has details about the Agones fleet and autoscaler to be actuated.
+message PreviewGameServerDeploymentRolloutResponse {
+ // Locations that could not be reached on this request.
+ repeated string unavailable = 2;
+
+ // ETag of the game server deployment.
+ string etag = 3;
+
+ // The target state.
+ TargetState target_state = 4;
+}
diff --git a/third_party/googleapis/google/cloud/gaming/v1/game_server_deployments_service.proto b/third_party/googleapis/google/cloud/gaming/v1/game_server_deployments_service.proto
new file mode 100644
index 0000000..a82d259
--- /dev/null
+++ b/third_party/googleapis/google/cloud/gaming/v1/game_server_deployments_service.proto
@@ -0,0 +1,132 @@
+// 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/annotations.proto";
+import "google/api/client.proto";
+import "google/cloud/gaming/v1/game_server_deployments.proto";
+import "google/longrunning/operations.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/cloud/gaming/v1;gaming";
+option java_multiple_files = true;
+option java_package = "com.google.cloud.gaming.v1";
+
+// The game server deployment is used to control the deployment of Agones
+// fleets.
+service GameServerDeploymentsService {
+ option (google.api.default_host) = "gameservices.googleapis.com";
+ option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
+
+ // Lists game server deployments in a given project and location.
+ rpc ListGameServerDeployments(ListGameServerDeploymentsRequest) returns (ListGameServerDeploymentsResponse) {
+ option (google.api.http) = {
+ get: "/v1/{parent=projects/*/locations/*}/gameServerDeployments"
+ };
+ option (google.api.method_signature) = "parent";
+ }
+
+ // Gets details of a single game server deployment.
+ rpc GetGameServerDeployment(GetGameServerDeploymentRequest) returns (GameServerDeployment) {
+ option (google.api.http) = {
+ get: "/v1/{name=projects/*/locations/*/gameServerDeployments/*}"
+ };
+ option (google.api.method_signature) = "name";
+ }
+
+ // Creates a new game server deployment in a given project and location.
+ rpc CreateGameServerDeployment(CreateGameServerDeploymentRequest) returns (google.longrunning.Operation) {
+ option (google.api.http) = {
+ post: "/v1/{parent=projects/*/locations/*}/gameServerDeployments"
+ body: "game_server_deployment"
+ };
+ option (google.api.method_signature) = "parent,game_server_deployment";
+ option (google.longrunning.operation_info) = {
+ response_type: "GameServerDeployment"
+ metadata_type: "OperationMetadata"
+ };
+ }
+
+ // Deletes a single game server deployment.
+ rpc DeleteGameServerDeployment(DeleteGameServerDeploymentRequest) returns (google.longrunning.Operation) {
+ option (google.api.http) = {
+ delete: "/v1/{name=projects/*/locations/*/gameServerDeployments/*}"
+ };
+ option (google.api.method_signature) = "name";
+ option (google.longrunning.operation_info) = {
+ response_type: "google.protobuf.Empty"
+ metadata_type: "OperationMetadata"
+ };
+ }
+
+ // Patches a game server deployment.
+ rpc UpdateGameServerDeployment(UpdateGameServerDeploymentRequest) returns (google.longrunning.Operation) {
+ option (google.api.http) = {
+ patch: "/v1/{game_server_deployment.name=projects/*/locations/*/gameServerDeployments/*}"
+ body: "game_server_deployment"
+ };
+ option (google.api.method_signature) = "game_server_deployment,update_mask";
+ option (google.longrunning.operation_info) = {
+ response_type: "GameServerDeployment"
+ metadata_type: "OperationMetadata"
+ };
+ }
+
+ // Gets details a single game server deployment rollout.
+ rpc GetGameServerDeploymentRollout(GetGameServerDeploymentRolloutRequest) returns (GameServerDeploymentRollout) {
+ option (google.api.http) = {
+ get: "/v1/{name=projects/*/locations/*/gameServerDeployments/*}/rollout"
+ };
+ option (google.api.method_signature) = "name";
+ }
+
+ // Patches a single game server deployment rollout.
+ // The method will not return an error if the update does not affect any
+ // existing realms. For example - if the default_game_server_config is changed
+ // but all existing realms use the override, that is valid. Similarly, if a
+ // non existing realm is explicitly called out in game_server_config_overrides
+ // field, that will also not result in an error.
+ rpc UpdateGameServerDeploymentRollout(UpdateGameServerDeploymentRolloutRequest) returns (google.longrunning.Operation) {
+ option (google.api.http) = {
+ patch: "/v1/{rollout.name=projects/*/locations/*/gameServerDeployments/*}/rollout"
+ body: "rollout"
+ };
+ option (google.api.method_signature) = "rollout,update_mask";
+ option (google.longrunning.operation_info) = {
+ response_type: "GameServerDeployment"
+ metadata_type: "OperationMetadata"
+ };
+ }
+
+ // Previews the game server deployment rollout. This API does not mutate the
+ // rollout resource.
+ rpc PreviewGameServerDeploymentRollout(PreviewGameServerDeploymentRolloutRequest) returns (PreviewGameServerDeploymentRolloutResponse) {
+ option (google.api.http) = {
+ patch: "/v1/{rollout.name=projects/*/locations/*/gameServerDeployments/*}/rollout:preview"
+ body: "rollout"
+ };
+ }
+
+ // Retrieves information about the current state of the game server
+ // deployment. Gathers all the Agones fleets and Agones autoscalers,
+ // including fleets running an older version of the game server deployment.
+ rpc FetchDeploymentState(FetchDeploymentStateRequest) returns (FetchDeploymentStateResponse) {
+ option (google.api.http) = {
+ post: "/v1/{name=projects/*/locations/*/gameServerDeployments/*}:fetchDeploymentState"
+ body: "*"
+ };
+ }
+}
diff --git a/third_party/googleapis/google/cloud/gaming/v1/gameservices_v1.yaml b/third_party/googleapis/google/cloud/gaming/v1/gameservices_v1.yaml
new file mode 100644
index 0000000..43b3b6b
--- /dev/null
+++ b/third_party/googleapis/google/cloud/gaming/v1/gameservices_v1.yaml
@@ -0,0 +1,129 @@
+type: google.api.Service
+config_version: 3
+name: gameservices.googleapis.com
+title: Game Services API
+
+apis:
+- name: google.cloud.gaming.v1.GameServerClustersService
+- name: google.cloud.gaming.v1.GameServerConfigsService
+- name: google.cloud.gaming.v1.GameServerDeploymentsService
+- name: google.cloud.gaming.v1.RealmsService
+
+types:
+- name: google.cloud.gaming.v1.LabelSelector
+- name: google.cloud.gaming.v1.OperationMetadata
+- name: google.cloud.gaming.v1.Schedule
+
+documentation:
+ summary: Deploy and manage infrastructure for global multiplayer gaming experiences.
+ rules:
+ - selector: google.cloud.location.Locations.GetLocation
+ description: Gets information about a location.
+
+ - selector: google.cloud.location.Locations.ListLocations
+ description: Lists information about the supported locations for this service.
+
+ - selector: google.iam.v1.IAMPolicy.GetIamPolicy
+ description: |-
+ Gets the access control policy for a resource. Returns an empty policy
+ if the resource exists and does not have a policy set.
+
+ - selector: google.iam.v1.IAMPolicy.SetIamPolicy
+ description: |-
+ Sets the access control policy on the specified resource. Replaces
+ any existing policy.
+
+ Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED`
+ errors.
+
+ - selector: google.iam.v1.IAMPolicy.TestIamPermissions
+ description: |-
+ Returns permissions that a caller has on the specified resource. If the
+ resource does not exist, this will return an empty set of
+ permissions, not a `NOT_FOUND` error.
+
+ Note: This operation is designed to be used for building
+ permission-aware UIs and command-line tools, not for authorization
+ checking. This operation may "fail open" without warning.
+
+backend:
+ rules:
+ - selector: 'google.cloud.gaming.v1.GameServerClustersService.*'
+ deadline: 60.0
+ - selector: google.cloud.gaming.v1.GameServerClustersService.CreateGameServerCluster
+ deadline: 120.0
+ - selector: 'google.cloud.gaming.v1.GameServerConfigsService.*'
+ deadline: 60.0
+ - selector: 'google.cloud.gaming.v1.GameServerDeploymentsService.*'
+ deadline: 60.0
+ - selector: 'google.cloud.gaming.v1.RealmsService.*'
+ deadline: 60.0
+ - selector: google.cloud.location.Locations.GetLocation
+ deadline: 60.0
+ - selector: google.cloud.location.Locations.ListLocations
+ deadline: 60.0
+ - selector: 'google.iam.v1.IAMPolicy.*'
+ deadline: 60.0
+ - selector: 'google.longrunning.Operations.*'
+ deadline: 60.0
+ - selector: google.longrunning.Operations.GetOperation
+ deadline: 5.0
+
+http:
+ rules:
+ - selector: google.cloud.location.Locations.GetLocation
+ get: '/v1/{name=projects/*/locations/*}'
+ - selector: google.cloud.location.Locations.ListLocations
+ get: '/v1/{name=projects/*}/locations'
+ - selector: google.iam.v1.IAMPolicy.GetIamPolicy
+ get: '/v1/{resource=projects/*/locations/*/gameServerDeployments/*}:getIamPolicy'
+ - selector: google.iam.v1.IAMPolicy.SetIamPolicy
+ post: '/v1/{resource=projects/*/locations/*/gameServerDeployments/*}:setIamPolicy'
+ body: '*'
+ - selector: google.iam.v1.IAMPolicy.TestIamPermissions
+ post: '/v1/{resource=projects/*/locations/*/gameServerDeployments/*}:testIamPermissions'
+ body: '*'
+ - selector: google.longrunning.Operations.CancelOperation
+ post: '/v1/{name=projects/*/locations/*/operations/*}:cancel'
+ body: '*'
+ - selector: google.longrunning.Operations.DeleteOperation
+ delete: '/v1/{name=projects/*/locations/*/operations/*}'
+ - selector: google.longrunning.Operations.GetOperation
+ get: '/v1/{name=projects/*/locations/*/operations/*}'
+ - selector: google.longrunning.Operations.ListOperations
+ get: '/v1/{name=projects/*/locations/*}/operations'
+
+authentication:
+ rules:
+ - selector: 'google.cloud.gaming.v1.GameServerClustersService.*'
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/cloud-platform
+ - selector: 'google.cloud.gaming.v1.GameServerConfigsService.*'
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/cloud-platform
+ - selector: 'google.cloud.gaming.v1.GameServerDeploymentsService.*'
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/cloud-platform
+ - selector: 'google.cloud.gaming.v1.RealmsService.*'
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/cloud-platform
+ - selector: google.cloud.location.Locations.GetLocation
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/cloud-platform
+ - selector: google.cloud.location.Locations.ListLocations
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/cloud-platform
+ - selector: 'google.iam.v1.IAMPolicy.*'
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/cloud-platform
+ - selector: 'google.longrunning.Operations.*'
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/cloud-platform
diff --git a/third_party/googleapis/google/cloud/gaming/v1/gaming_grpc_service_config.json b/third_party/googleapis/google/cloud/gaming/v1/gaming_grpc_service_config.json
new file mode 100644
index 0000000..9a09cad
--- /dev/null
+++ b/third_party/googleapis/google/cloud/gaming/v1/gaming_grpc_service_config.json
@@ -0,0 +1,59 @@
+{
+ "methodConfig": [
+ {
+ "name": [
+ { "service": "google.cloud.gaming.v1.GameServerClustersService", "method": "ListGameServerClusters" },
+ { "service": "google.cloud.gaming.v1.GameServerClustersService", "method": "GetGameServerCluster" },
+ { "service": "google.cloud.gaming.v1.GameServerClustersService", "method": "PreviewCreateGameServerCluster" },
+ { "service": "google.cloud.gaming.v1.GameServerClustersService", "method": "PreviewDeleteGameServerCluster" },
+ { "service": "google.cloud.gaming.v1.GameServerClustersService", "method": "PreviewUpdateGameServerCluster" },
+
+ { "service": "google.cloud.gaming.v1.GameServerConfigsService", "method": "ListGameServerConfigs" },
+ { "service": "google.cloud.gaming.v1.GameServerConfigsService", "method": "GetGameServerConfig" },
+
+ { "service": "google.cloud.gaming.v1.GameServerDeploymentsService", "method": "ListGameServerDeployments" },
+ { "service": "google.cloud.gaming.v1.GameServerDeploymentsService", "method": "GetGameServerDeployment" },
+ { "service": "google.cloud.gaming.v1.GameServerDeploymentsService", "method": "GetGameServerDeploymentRollout" },
+ { "service": "google.cloud.gaming.v1.GameServerDeploymentsService", "method": "PreviewGameServerDeploymentRollout" },
+
+ { "service": "google.cloud.gaming.v1.RealmsService", "method": "ListRealms" },
+ { "service": "google.cloud.gaming.v1.RealmsService", "method": "GetRealm" },
+ { "service": "google.cloud.gaming.v1.RealmsService", "method": "PreviewRealmUpdate" },
+ { "service": "google.cloud.gaming.v1.GameServerDeploymentsService", "method": "FetchDeploymentState" }
+ ],
+ "timeout": "60s",
+ "retryPolicy": {
+ "maxAttempts": 5,
+ "initialBackoff": "1s",
+ "maxBackoff": "10s",
+ "backoffMultiplier": 1.3,
+ "retryableStatusCodes": ["UNAVAILABLE"]
+ }
+ },
+ {
+ "name": [
+ { "service": "google.cloud.gaming.v1.GameServerClustersService", "method": "DeleteGameServerCluster" },
+ { "service": "google.cloud.gaming.v1.GameServerClustersService", "method": "UpdateGameServerCluster" },
+
+ { "service": "google.cloud.gaming.v1.GameServerConfigsService", "method": "CreateGameServerConfig" },
+ { "service": "google.cloud.gaming.v1.GameServerConfigsService", "method": "DeleteGameServerConfig" },
+
+ { "service": "google.cloud.gaming.v1.GameServerDeploymentsService", "method": "CreateGameServerDeployment" },
+ { "service": "google.cloud.gaming.v1.GameServerDeploymentsService", "method": "DeleteGameServerDeployment" },
+ { "service": "google.cloud.gaming.v1.GameServerDeploymentsService", "method": "UpdateGameServerDeployment" },
+ { "service": "google.cloud.gaming.v1.GameServerDeploymentsService", "method": "UpdateGameServerDeploymentRollout" },
+
+ { "service": "google.cloud.gaming.v1.RealmsService", "method": "CreateRealm" },
+ { "service": "google.cloud.gaming.v1.RealmsService", "method": "DeleteRealm" },
+ { "service": "google.cloud.gaming.v1.RealmsService", "method": "UpdateRealm" }
+ ],
+ "timeout": "60s"
+ },
+ {
+ "name": [
+ { "service": "google.cloud.gaming.v1.GameServerClustersService", "method": "CreateGameServerCluster" }
+ ],
+ "timeout": "120s"
+ }
+ ]
+}
diff --git a/third_party/googleapis/google/cloud/gaming/v1/realms.proto b/third_party/googleapis/google/cloud/gaming/v1/realms.proto
new file mode 100644
index 0000000..007071a
--- /dev/null
+++ b/third_party/googleapis/google/cloud/gaming/v1/realms.proto
@@ -0,0 +1,181 @@
+// 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/api/resource.proto";
+import "google/cloud/gaming/v1/common.proto";
+import "google/protobuf/field_mask.proto";
+import "google/protobuf/timestamp.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/cloud/gaming/v1;gaming";
+option java_multiple_files = true;
+option java_package = "com.google.cloud.gaming.v1";
+
+// Request message for RealmsService.ListRealms.
+message ListRealmsRequest {
+ // Required. The parent resource name, in the following form:
+ // `projects/{project}/locations/{location}`.
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ child_type: "gameservices.googleapis.com/Realm"
+ }
+ ];
+
+ // Optional. The maximum number of items to return. If unspecified, server
+ // will pick an appropriate default. Server may return fewer items than
+ // requested. A caller should only rely on response's
+ // [next_page_token][google.cloud.gaming.v1.ListRealmsResponse.next_page_token] to
+ // determine if there are more realms left to be queried.
+ int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The next_page_token value returned from a previous List request,
+ // if any.
+ string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The filter to apply to list results.
+ string filter = 4 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Specifies the ordering of results following syntax at
+ // https://cloud.google.com/apis/design/design_patterns#sorting_order.
+ string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Response message for RealmsService.ListRealms.
+message ListRealmsResponse {
+ // The list of realms.
+ repeated Realm realms = 1;
+
+ // Token to retrieve the next page of results, or empty if there are no more
+ // results in the list.
+ string next_page_token = 2;
+
+ // List of locations that could not be reached.
+ repeated string unreachable = 3;
+}
+
+// Request message for RealmsService.GetRealm.
+message GetRealmRequest {
+ // Required. The name of the realm to retrieve, in the following form:
+ // `projects/{project}/locations/{location}/realms/{realm}`.
+ string name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "gameservices.googleapis.com/Realm"
+ }
+ ];
+}
+
+// Request message for RealmsService.CreateRealm.
+message CreateRealmRequest {
+ // Required. The parent resource name, in the following form:
+ // `projects/{project}/locations/{location}`.
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ child_type: "gameservices.googleapis.com/Realm"
+ }
+ ];
+
+ // Required. The ID of the realm resource to be created.
+ string realm_id = 2 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. The realm resource to be created.
+ Realm realm = 3 [(google.api.field_behavior) = REQUIRED];
+}
+
+// Request message for RealmsService.DeleteRealm.
+message DeleteRealmRequest {
+ // Required. The name of the realm to delete, in the following form:
+ // `projects/{project}/locations/{location}/realms/{realm}`.
+ string name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "gameservices.googleapis.com/Realm"
+ }
+ ];
+}
+
+// Request message for RealmsService.UpdateRealm.
+message UpdateRealmRequest {
+ // Required. The realm to be updated.
+ // Only fields specified in update_mask are updated.
+ Realm realm = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. The update mask applies to the resource. For the `FieldMask`
+ // definition, see
+ // https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask
+ google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED];
+}
+
+// Request message for RealmsService.PreviewRealmUpdate.
+message PreviewRealmUpdateRequest {
+ // Required. The realm to be updated.
+ // Only fields specified in update_mask are updated.
+ Realm realm = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. The update mask applies to the resource. For the `FieldMask`
+ // definition, see
+ // https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask
+ google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED];
+
+ // Optional. The target timestamp to compute the preview.
+ google.protobuf.Timestamp preview_time = 3 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Response message for RealmsService.PreviewRealmUpdate.
+message PreviewRealmUpdateResponse {
+ // ETag of the realm.
+ string etag = 2;
+
+ // The target state.
+ TargetState target_state = 3;
+}
+
+// A realm resource.
+message Realm {
+ option (google.api.resource) = {
+ type: "gameservices.googleapis.com/Realm"
+ pattern: "projects/{project}/locations/{location}/realms/{realm}"
+ };
+
+ // The resource name of the realm, in the following form:
+ // `projects/{project}/locations/{location}/realms/{realm}`. For
+ // example, `projects/my-project/locations/{location}/realms/my-realm`.
+ string name = 1;
+
+ // Output only. The creation time.
+ google.protobuf.Timestamp create_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The last-modified time.
+ google.protobuf.Timestamp update_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // The labels associated with this realm. Each label is a key-value pair.
+ map<string, string> labels = 4;
+
+ // Required. Time zone where all policies targeting this realm are evaluated. The value
+ // of this field must be from the IANA time zone database:
+ // https://www.iana.org/time-zones.
+ string time_zone = 6 [(google.api.field_behavior) = REQUIRED];
+
+ // ETag of the resource.
+ string etag = 7;
+
+ // Human readable description of the realm.
+ string description = 8;
+}
diff --git a/third_party/googleapis/google/cloud/gaming/v1/realms_service.proto b/third_party/googleapis/google/cloud/gaming/v1/realms_service.proto
new file mode 100644
index 0000000..018850d
--- /dev/null
+++ b/third_party/googleapis/google/cloud/gaming/v1/realms_service.proto
@@ -0,0 +1,95 @@
+// 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/annotations.proto";
+import "google/api/client.proto";
+import "google/cloud/gaming/v1/realms.proto";
+import "google/longrunning/operations.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/cloud/gaming/v1;gaming";
+option java_multiple_files = true;
+option java_package = "com.google.cloud.gaming.v1";
+
+// A realm is a grouping of game server clusters that are considered
+// interchangeable.
+service RealmsService {
+ option (google.api.default_host) = "gameservices.googleapis.com";
+ option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
+
+ // Lists realms in a given project and location.
+ rpc ListRealms(ListRealmsRequest) returns (ListRealmsResponse) {
+ option (google.api.http) = {
+ get: "/v1/{parent=projects/*/locations/*}/realms"
+ };
+ option (google.api.method_signature) = "parent";
+ }
+
+ // Gets details of a single realm.
+ rpc GetRealm(GetRealmRequest) returns (Realm) {
+ option (google.api.http) = {
+ get: "/v1/{name=projects/*/locations/*/realms/*}"
+ };
+ option (google.api.method_signature) = "name";
+ }
+
+ // Creates a new realm in a given project and location.
+ rpc CreateRealm(CreateRealmRequest) returns (google.longrunning.Operation) {
+ option (google.api.http) = {
+ post: "/v1/{parent=projects/*/locations/*}/realms"
+ body: "realm"
+ };
+ option (google.api.method_signature) = "parent,realm,realm_id";
+ option (google.longrunning.operation_info) = {
+ response_type: "Realm"
+ metadata_type: "OperationMetadata"
+ };
+ }
+
+ // Deletes a single realm.
+ rpc DeleteRealm(DeleteRealmRequest) returns (google.longrunning.Operation) {
+ option (google.api.http) = {
+ delete: "/v1/{name=projects/*/locations/*/realms/*}"
+ };
+ option (google.api.method_signature) = "name";
+ option (google.longrunning.operation_info) = {
+ response_type: "google.protobuf.Empty"
+ metadata_type: "OperationMetadata"
+ };
+ }
+
+ // Patches a single realm.
+ rpc UpdateRealm(UpdateRealmRequest) returns (google.longrunning.Operation) {
+ option (google.api.http) = {
+ patch: "/v1/{realm.name=projects/*/locations/*/realms/*}"
+ body: "realm"
+ };
+ option (google.api.method_signature) = "realm,update_mask";
+ option (google.longrunning.operation_info) = {
+ response_type: "Realm"
+ metadata_type: "OperationMetadata"
+ };
+ }
+
+ // Previews patches to a single realm.
+ rpc PreviewRealmUpdate(PreviewRealmUpdateRequest) returns (PreviewRealmUpdateResponse) {
+ option (google.api.http) = {
+ patch: "/v1/{realm.name=projects/*/locations/*/realms/*}:previewUpdate"
+ body: "realm"
+ };
+ }
+}