Adding Game Servers v1beta API.

PiperOrigin-RevId: 300433218
pull/642/head
Google APIs 5 years ago committed by Copybara-Service
parent 80d2bd2c65
commit 678afc7055
  1. 382
      google/cloud/gaming/v1beta/BUILD.bazel
  2. 241
      google/cloud/gaming/v1beta/common.proto
  3. 275
      google/cloud/gaming/v1beta/game_server_clusters.proto
  4. 112
      google/cloud/gaming/v1beta/game_server_clusters_service.proto
  5. 180
      google/cloud/gaming/v1beta/game_server_configs.proto
  6. 78
      google/cloud/gaming/v1beta/game_server_configs_service.proto
  7. 305
      google/cloud/gaming/v1beta/game_server_deployments.proto
  8. 133
      google/cloud/gaming/v1beta/game_server_deployments_service.proto
  9. 85
      google/cloud/gaming/v1beta/gameservices_v1beta.yaml
  10. 19
      google/cloud/gaming/v1beta/gaming_gapic.yaml
  11. 189
      google/cloud/gaming/v1beta/realms.proto
  12. 96
      google/cloud/gaming/v1beta/realms_service.proto

@ -0,0 +1,382 @@
# This file was automatically generated by BuildFileGenerator
# 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",
src = ":gaming_proto_with_info",
gapic_yaml = "gaming_gapic.yaml",
package = "google.cloud.gaming.v1beta",
service_yaml = "gameservices_v1beta.yaml",
test_deps = [
":gaming_java_grpc",
],
deps = [
":gaming_java_proto",
],
)
java_gapic_test(
name = "gaming_java_gapic_test_suite",
test_classes = [
"com.google.cloud.gaming.v1beta.GameServerClustersServiceClientTest",
"com.google.cloud.gaming.v1beta.GameServerConfigsServiceClientTest",
"com.google.cloud.gaming.v1beta.GameServerDeploymentsServiceClientTest",
"com.google.cloud.gaming.v1beta.RealmsServiceClientTest",
],
runtime_deps = [":gaming_java_gapic_test"],
)
# Open Source Packages
java_gapic_assembly_gradle_pkg(
name = "google-cloud-gaming-v1beta-java",
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/v1beta",
protos = [":gaming_proto"],
deps = [
"//google/api:annotations_go_proto",
"//google/longrunning:longrunning_go_proto",
],
)
go_gapic_library(
name = "gaming_go_gapic",
src = ":gaming_proto_with_info",
gapic_yaml = "gaming_gapic.yaml",
importpath = "cloud.google.com/go/gaming/apiv1beta",
package = "google.cloud.gaming.v1beta",
service_yaml = "gameservices_v1beta.yaml",
deps = [
":gaming_go_proto",
"//google/longrunning:longrunning_go_gapic",
"//google/longrunning:longrunning_go_proto",
"@com_google_cloud_go//longrunning: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/apiv1beta",
)
# Open Source Packages
go_gapic_assembly_pkg(
name = "gapi-cloud-gaming-v1beta-go",
deps = [
":gaming_go_gapic",
":gaming_go_gapic_srcjar-smoke-test.srcjar",
":gaming_go_gapic_srcjar-test.srcjar",
":gaming_go_proto",
],
)
##############################################################################
# Python
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"moved_proto_library",
"py_gapic_assembly_pkg",
"py_gapic_library",
"py_grpc_library",
"py_proto_library",
)
moved_proto_library(
name = "gaming_moved_proto",
srcs = [":gaming_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",
],
)
py_proto_library(
name = "gaming_py_proto",
plugin = "@protoc_docs_plugin//:docs_plugin",
deps = [":gaming_moved_proto"],
)
py_grpc_library(
name = "gaming_py_grpc",
srcs = [":gaming_moved_proto"],
deps = [":gaming_py_proto"],
)
py_gapic_library(
name = "gaming_py_gapic",
src = ":gaming_proto_with_info",
gapic_yaml = "gaming_gapic.yaml",
package = "google.cloud.gaming.v1beta",
service_yaml = "gameservices_v1beta.yaml",
deps = [
":gaming_py_grpc",
":gaming_py_proto",
],
)
# Open Source Packages
py_gapic_assembly_pkg(
name = "gaming-v1beta-py",
deps = [
":gaming_py_gapic",
":gaming_py_grpc",
":gaming_py_proto",
],
)
##############################################################################
# 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",
src = ":gaming_proto_with_info",
gapic_yaml = "gaming_gapic.yaml",
package = "google.cloud.gaming.v1beta",
service_yaml = "gameservices_v1beta.yaml",
deps = [
":gaming_php_grpc",
":gaming_php_proto",
],
)
# Open Source Packages
php_gapic_assembly_pkg(
name = "google-cloud-gaming-v1beta-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",
src = ":gaming_proto_with_info",
gapic_yaml = "gaming_gapic.yaml",
package = "google.cloud.gaming.v1beta",
service_yaml = "gameservices_v1beta.yaml",
deps = [],
)
nodejs_gapic_assembly_pkg(
name = "gaming-v1beta-nodejs",
deps = [
":gaming_nodejs_gapic",
":gaming_proto",
],
)
##############################################################################
# Ruby
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"ruby_gapic_assembly_pkg",
"ruby_gapic_library",
"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_gapic_library(
name = "gaming_ruby_gapic",
src = ":gaming_proto_with_info",
gapic_yaml = "gaming_gapic.yaml",
package = "google.cloud.gaming.v1beta",
service_yaml = "gameservices_v1beta.yaml",
deps = [
":gaming_ruby_grpc",
":gaming_ruby_proto",
],
)
# Open Source Packages
ruby_gapic_assembly_pkg(
name = "google-cloud-gaming-v1beta-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",
src = ":gaming_proto_with_info",
gapic_yaml = "gaming_gapic.yaml",
package = "google.cloud.gaming.v1beta",
service_yaml = "gameservices_v1beta.yaml",
deps = [
":gaming_csharp_grpc",
":gaming_csharp_proto",
],
)
# Open Source Packages
csharp_gapic_assembly_pkg(
name = "google-cloud-gaming-v1beta-csharp",
deps = [
":gaming_csharp_gapic",
":gaming_csharp_grpc",
":gaming_csharp_proto",
],
)
##############################################################################
# C++
##############################################################################
# Put your C++ rules here

@ -0,0 +1,241 @@
// Copyright 2020 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.v1beta;
import "google/api/field_behavior.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/timestamp.proto";
import "google/api/annotations.proto";
option go_package = "google.golang.org/genproto/googleapis/cloud/gaming/v1beta;gaming";
option java_multiple_files = true;
option java_package = "com.google.cloud.gaming.v1beta";
// 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 gameservices 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;
}

@ -0,0 +1,275 @@
// Copyright 2020 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.v1beta;
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/cloud/gaming/v1beta/common.proto";
import "google/protobuf/field_mask.proto";
import "google/protobuf/timestamp.proto";
import "google/api/annotations.proto";
option go_package = "google.golang.org/genproto/googleapis/cloud/gaming/v1beta;gaming";
option java_multiple_files = true;
option java_package = "com.google.cloud.gaming.v1beta";
// Request message for GameServerClustersService.ListGameServerClusters.
message ListGameServerClustersRequest {
// Required. The parent resource name. Uses the 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, 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.v1beta.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];
}
// 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. Uses the 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"
}
];
}
// Request message for GameServerClustersService.CreateGameServerCluster.
message CreateGameServerClusterRequest {
// Required. The parent resource name. Uses the 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. Uses the 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];
}
// Response message for
// GameServerClustersService.PreviewCreateGameServerCluster.
message PreviewCreateGameServerClusterResponse {
// The ETag of the game server cluster.
string etag = 2;
// The target state.
TargetState target_state = 3;
}
// Request message for GameServerClustersService.DeleteGameServerCluster.
message DeleteGameServerClusterRequest {
// Required. The name of the Game Server Cluster to delete. Uses the 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. Uses the 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. Uses the 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;
// 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;
}

@ -0,0 +1,112 @@
// Copyright 2020 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.v1beta;
import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/cloud/gaming/v1beta/game_server_clusters.proto";
import "google/longrunning/operations.proto";
option go_package = "google.golang.org/genproto/googleapis/cloud/gaming/v1beta;gaming";
option java_multiple_files = true;
option java_package = "com.google.cloud.gaming.v1beta";
// 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: "/v1beta/{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: "/v1beta/{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: "/v1beta/{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: "/v1beta/{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: "/v1beta/{name=projects/*/locations/*/realms/*/gameServerClusters/*}"
};
option (google.api.method_signature) = "name";
option (google.longrunning.operation_info) = {
response_type: "GameServerCluster"
metadata_type: "OperationMetadata"
};
}
// Previews deletion of a single game server cluster.
rpc PreviewDeleteGameServerCluster(PreviewDeleteGameServerClusterRequest) returns (PreviewDeleteGameServerClusterResponse) {
option (google.api.http) = {
delete: "/v1beta/{name=projects/*/locations/*/realms/*/gameServerClusters/*}:previewDelete"
};
}
// Patches a single game server cluster.
rpc UpdateGameServerCluster(UpdateGameServerClusterRequest) returns (google.longrunning.Operation) {
option (google.api.http) = {
patch: "/v1beta/{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: "/v1beta/{game_server_cluster.name=projects/*/locations/*/realms/*/gameServerClusters/*}:previewUpdate"
body: "game_server_cluster"
};
}
}

@ -0,0 +1,180 @@
// Copyright 2020 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.v1beta;
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/cloud/gaming/v1beta/common.proto";
import "google/protobuf/timestamp.proto";
import "google/api/annotations.proto";
option go_package = "google.golang.org/genproto/googleapis/cloud/gaming/v1beta;gaming";
option java_multiple_files = true;
option java_package = "com.google.cloud.gaming.v1beta";
// Request message for GameServerConfigsService.ListGameServerConfigs.
message ListGameServerConfigsRequest {
// Required. The parent resource name. Uses the 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.v1beta.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. Uses the 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. Uses the 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. Uses the 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. Uses the 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;
}

@ -0,0 +1,78 @@
// Copyright 2020 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.v1beta;
import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/cloud/gaming/v1beta/game_server_configs.proto";
import "google/longrunning/operations.proto";
option go_package = "google.golang.org/genproto/googleapis/cloud/gaming/v1beta;gaming";
option java_multiple_files = true;
option java_package = "com.google.cloud.gaming.v1beta";
// 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: "/v1beta/{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: "/v1beta/{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: "/v1beta/{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: "/v1beta/{name=projects/*/locations/*/gameServerDeployments/*/configs/*}"
};
option (google.api.method_signature) = "name";
option (google.longrunning.operation_info) = {
response_type: "GameServerConfig"
metadata_type: "OperationMetadata"
};
}
}

@ -0,0 +1,305 @@
// Copyright 2020 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.v1beta;
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/cloud/gaming/v1beta/common.proto";
import "google/protobuf/field_mask.proto";
import "google/protobuf/timestamp.proto";
import "google/api/annotations.proto";
option go_package = "google.golang.org/genproto/googleapis/cloud/gaming/v1beta;gaming";
option java_multiple_files = true;
option java_package = "com.google.cloud.gaming.v1beta";
// Request message for GameServerDeploymentsService.ListGameServerDeployments.
message ListGameServerDeploymentsRequest {
// Required. The parent resource name. Uses the 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, 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.v1beta.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 Delpoyments.
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 Deployment to retrieve. Uses the 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 Deployment to retrieve. Uses the 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. Uses the 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 Deployment resource to be created.
string deployment_id = 2 [(google.api.field_behavior) = REQUIRED];
// Required. The Game Server Deployment 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 Deployment to delete. Uses the 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 Deployment 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 Deployment 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 Deployment. Uses the 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. Uses the form:
//
// `projects/{project}/locations/{location}/gameServerDeployments/{deployment}`.
// For example,
//
// `projects/my-project/locations/{location}/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 Deployment.
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. Uses the form:
//
// `projects/{project}/locations/{location}/gameServerDeployments/{deployment}/rollout`.
// For example,
//
// `projects/my-project/locations/{location}/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;
}

@ -0,0 +1,133 @@
// Copyright 2020 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.v1beta;
import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/cloud/gaming/v1beta/game_server_deployments.proto";
import "google/longrunning/operations.proto";
option go_package = "google.golang.org/genproto/googleapis/cloud/gaming/v1beta;gaming";
option java_multiple_files = true;
option java_package = "com.google.cloud.gaming.v1beta";
// 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: "/v1beta/{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: "/v1beta/{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: "/v1beta/{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: "/v1beta/{name=projects/*/locations/*/gameServerDeployments/*}"
};
option (google.api.method_signature) = "name";
option (google.longrunning.operation_info) = {
response_type: "GameServerDeployment"
metadata_type: "OperationMetadata"
};
}
// Patches a Game Server Deployment.
rpc UpdateGameServerDeployment(UpdateGameServerDeploymentRequest) returns (google.longrunning.Operation) {
option (google.api.http) = {
patch: "/v1beta/{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: "/v1beta/{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: "/v1beta/{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: "/v1beta/{rollout.name=projects/*/locations/*/gameServerDeployments/*}/rollout:preview"
body: "rollout"
};
}
// Retrieves information about the current state of the Game Server
// Ddeployment. 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: "/v1beta/{name=projects/*/locations/*/gameServerDeployments/*}:fetchDeploymentState"
body: "*"
};
}
}

@ -0,0 +1,85 @@
type: google.api.Service
config_version: 3
name: gameservices.googleapis.com
title: Game Servers API
apis:
- name: google.cloud.gaming.v1beta.GameServerClustersService
- name: google.cloud.gaming.v1beta.GameServerConfigsService
- name: google.cloud.gaming.v1beta.GameServerDeploymentsService
- name: google.cloud.gaming.v1beta.RealmsService
types:
- name: google.cloud.gaming.v1beta.LabelSelector
- name: google.cloud.gaming.v1beta.OperationMetadata
- name: google.cloud.gaming.v1beta.Schedule
documentation:
summary: Deploy and manage infrastructure for global multiplayer gaming experiences.
rules:
- 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 Public Errors: NOT_FOUND, INVALID_ARGUMENT and
PERMISSION_DENIED
- 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.v1beta.GameServerClustersService.*'
deadline: 60.0
- selector: 'google.cloud.gaming.v1beta.GameServerConfigsService.*'
deadline: 60.0
- selector: 'google.cloud.gaming.v1beta.GameServerDeploymentsService.*'
deadline: 60.0
- selector: 'google.cloud.gaming.v1beta.RealmsService.*'
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
authentication:
rules:
- selector: 'google.cloud.gaming.v1beta.GameServerClustersService.*'
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform
- selector: 'google.cloud.gaming.v1beta.GameServerConfigsService.*'
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform
- selector: 'google.cloud.gaming.v1beta.GameServerDeploymentsService.*'
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform
- selector: 'google.cloud.gaming.v1beta.RealmsService.*'
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

@ -0,0 +1,19 @@
type: com.google.api.codegen.ConfigProto
config_schema_version: 2.0.0
# The settings of generated code in a specific language.
language_settings:
java:
package_name: com.google.cloud.gaming.v1beta
python:
package_name: google.cloud.gaming_v1beta.gapic
ruby:
package_name: Google::Cloud::Gaming::V1Beta
php:
package_name: Google\Cloud\Gaming\V1Beta
go:
package_name: cloud.google.com/go/gaming/apiv1beta
csharp:
package_name: Google.Cloud.Gaming.V1Beta
nodejs:
package_name: gaming.v1beta
domain_layer_location: google-cloud

@ -0,0 +1,189 @@
// Copyright 2020 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.v1beta;
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/cloud/gaming/v1beta/common.proto";
import "google/protobuf/field_mask.proto";
import "google/protobuf/timestamp.proto";
import "google/api/annotations.proto";
option go_package = "google.golang.org/genproto/googleapis/cloud/gaming/v1beta;gaming";
option java_multiple_files = true;
option java_package = "com.google.cloud.gaming.v1beta";
// Request message for RealmsService.ListRealms.
message ListRealmsRequest {
// Required. The parent resource name. Uses the 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.v1beta.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. Uses the 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. Uses the 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. Uses the 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. Uses the 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;
}

@ -0,0 +1,96 @@
// Copyright 2020 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.v1beta;
import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/cloud/gaming/v1beta/realms.proto";
import "google/longrunning/operations.proto";
option go_package = "google.golang.org/genproto/googleapis/cloud/gaming/v1beta;gaming";
option java_multiple_files = true;
option java_package = "com.google.cloud.gaming.v1beta";
// 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: "/v1beta/{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: "/v1beta/{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: "/v1beta/{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: "/v1beta/{name=projects/*/locations/*/realms/*}"
};
option (google.api.method_signature) = "name";
option (google.longrunning.operation_info) = {
response_type: "Realm"
metadata_type: "OperationMetadata"
};
}
// Patches a single Realm.
rpc UpdateRealm(UpdateRealmRequest) returns (google.longrunning.Operation) {
option (google.api.http) = {
patch: "/v1beta/{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: "/v1beta/{realm.name=projects/*/locations/*/realms/*}:previewUpdate"
body: "realm"
};
}
}
Loading…
Cancel
Save