替换一个游戏服务器部署的某个发布
深入探索
如需查看包含此代码示例的详细文档,请参阅以下内容:
代码示例
C#
如需了解如何安装和使用 Game Servers 客户端库,请参阅 Game Servers 客户端库。
using Google.Cloud.Gaming.V1;
using Google.LongRunning;
using Google.Protobuf.WellKnownTypes;
using System.Threading.Tasks;
public class UpdateRolloutOverrideConfigSample
{
public async Task<GameServerDeployment> UpdateRolloutOverrideConfigAsync(
string projectId, string deploymentId, string configId, string realmRegionId, string realmId)
{
// Create the client.
GameServerDeploymentsServiceClient client = await GameServerDeploymentsServiceClient.CreateAsync();
GameServerConfigOverride configOverride = new GameServerConfigOverride
{
ConfigVersion = configId,
RealmsSelector = new RealmSelector()
};
configOverride.RealmsSelector.Realms.Add(RealmName.FormatProjectLocationRealm(projectId, realmRegionId, realmId));
GameServerDeploymentRollout rollout = new GameServerDeploymentRollout
{
Name = GameServerDeploymentName.FormatProjectLocationDeployment(projectId, "global", deploymentId)
};
rollout.GameServerConfigOverrides.Add(configOverride);
UpdateGameServerDeploymentRolloutRequest request = new UpdateGameServerDeploymentRolloutRequest
{
Rollout = rollout,
UpdateMask = new FieldMask { Paths = { "game_server_config_overrides" } }
};
// Make the request.
Operation<GameServerDeployment, OperationMetadata> response = await client.UpdateGameServerDeploymentRolloutAsync(request);
Operation<GameServerDeployment, OperationMetadata> completedResponse = await response.PollUntilCompletedAsync();
// Retrieve the operation result.
return completedResponse.Result;
}
}
Go
如需了解如何安装和使用 Game Servers 客户端库,请参阅 Game Servers 客户端库。
import (
"context"
"fmt"
"io"
gaming "cloud.google.com/go/gaming/apiv1"
gamingpb "google.golang.org/genproto/googleapis/cloud/gaming/v1"
"google.golang.org/protobuf/types/known/fieldmaskpb"
)
// updateRolloutOverrideConfig sets the override config for a realm.
func updateRolloutOverrideConfig(w io.Writer, projectID, realmLocation, realmID, deploymentID, configID string) error {
// projectID := "my-project"
// realmLocation := "global"
// realmID := "myrealm"
// deploymentID := "mydeployment"
// configID := "myconfig"
ctx := context.Background()
client, err := gaming.NewGameServerDeploymentsClient(ctx)
if err != nil {
return fmt.Errorf("NewGameServerDeploymentsClient: %v", err)
}
defer client.Close()
req := &gamingpb.UpdateGameServerDeploymentRolloutRequest{
Rollout: &gamingpb.GameServerDeploymentRollout{
Name: fmt.Sprintf("projects/%s/locations/global/gameServerDeployments/%s", projectID, deploymentID),
GameServerConfigOverrides: []*gamingpb.GameServerConfigOverride{
{
Selector: &gamingpb.GameServerConfigOverride_RealmsSelector{
RealmsSelector: &gamingpb.RealmSelector{
Realms: []string{
fmt.Sprintf("projects/%s/locations/%s/realms/%s", projectID, realmLocation, realmID),
},
},
},
Change: &gamingpb.GameServerConfigOverride_ConfigVersion{
ConfigVersion: configID,
},
},
},
},
UpdateMask: &fieldmaskpb.FieldMask{
Paths: []string{
"game_server_config_overrides",
},
},
}
op, err := client.UpdateGameServerDeploymentRollout(ctx, req)
if err != nil {
return fmt.Errorf("UpdateGameServerDeploymentRollout: %v", err)
}
resp, err := op.Wait(ctx)
if err != nil {
return fmt.Errorf("Wait: %v", err)
}
fmt.Fprintf(w, "Deployment rollout updated: %v", resp.Name)
return nil
}
Node.js
如需了解如何安装和使用 Game Servers 客户端库,请参阅 Game Servers 客户端库。
const {
GameServerDeploymentsServiceClient,
} = require('@google-cloud/game-servers');
const client = new GameServerDeploymentsServiceClient();
async function rolloutGameServerDeploymentOverride() {
/**
* TODO(developer): Uncomment these variables before running the sample.
*/
// const projectId = 'Your Google Cloud Project ID';
// const deploymentId = 'A unique ID for the Game Server Deployment';
// const configId = 'A unique ID for the Game Server Config';
// const realmId = 'A unique ID for the realm'
// const realmLocation = 'compute engine region for realm location'
const request = {
rollout: {
name: client.gameServerDeploymentPath(
projectId,
'global',
deploymentId
),
gameServerConfigOverrides: [
{
realmsSelector: {
realms: [client.realmPath(projectId, realmLocation, realmId)],
},
configVersion: configId,
},
],
},
updateMask: {
paths: ['game_server_config_overrides'],
},
};
const [operation] = await client.updateGameServerDeploymentRollout(request);
const [deployment] = await operation.promise();
console.log(`Deployment updated: ${deployment.name}`);
}
rolloutGameServerDeploymentOverride();
Python
如需了解如何安装和使用 Game Servers 客户端库,请参阅 Game Servers 客户端库。
def update_rollout_override(
project_id, deployment_id, config_id, realm_location, realm_id
):
"""Update the rollout of a game server deployment to set the override config."""
client = gaming.GameServerDeploymentsServiceClient()
# Location is hard coded as global, as game server deployments can
# only be created in global. This is done for all operations on
# game Server deployments, as well as for its child resource types.
request = game_server_deployments.UpdateGameServerDeploymentRolloutRequest()
request.rollout.name = (
f"projects/{project_id}/locations/global/gameServerDeployments/{deployment_id}"
)
realm_name = f"projects/{project_id}/locations/{realm_location}/realms/{realm_id}"
config_override = game_server_deployments.GameServerConfigOverride(
realms_selector=common.RealmSelector(realms=[realm_name]),
config_version=config_id,
)
request.rollout.game_server_config_overrides = [config_override]
request.update_mask = field_mask.FieldMask(paths=["game_server_config_overrides"])
operation = client.update_game_server_deployment_rollout(request)
print(f"Update deployment rollout operation: {operation.operation.name}")
operation.result(timeout=120)
后续步骤
如需搜索并过滤其他 Google Cloud 产品的代码示例,请参阅 Google Cloud 示例浏览器。