Skip to content

Commit

Permalink
docs(samples): Add Game Server deployment samples (#92)
Browse files Browse the repository at this point in the history
Co-authored-by: Justin Beckwith <justin.beckwith@gmail.com>
  • Loading branch information
pooneh-m and JustinBeckwith committed Jul 16, 2020
1 parent df6a323 commit f9bee80
Show file tree
Hide file tree
Showing 7 changed files with 323 additions and 3 deletions.
4 changes: 2 additions & 2 deletions game-servers/snippets/create_cluster.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@
* @param {string} location Compute Engine region
* @param {string} realmId the realm to use
* @param {string} gameClusterId unique identifier for the new Game Cluster
* @param {string} gkeClusterId the GKE cluster to connect to
* @param {string} gkeLocation the location of the GKE cluster
* @param {string} gkeClusterName The full resource name of the GKE cluster to use
*/
async function main(
projectId = 'YOUR_PROJECT_ID',
Expand Down Expand Up @@ -54,6 +53,7 @@ async function main(
connectionInfo: {
gkeClusterReference: {
// Provide full resource name of a Kubernetes Engine cluster
// In the form of 'projects/<project-id>/locations/<location>/clusters/<gke-cluster-name>'
cluster: gkeClusterName,
},
namespace: 'default',
Expand Down
66 changes: 66 additions & 0 deletions game-servers/snippets/create_deployment.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
// 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.

'use strict';

/**
* Create a Game Servers Deployment.
* @param {string} projectId string project identifier
* @param {string} deploymentId unique identifier for the new Game Server Deployment
*/
async function main(
projectId = 'YOUR_PROJECT_ID',
deploymentId = 'DEPLOYMENT_ID'
) {
// [START cloud_game_servers_create_deployment]
const {
GameServerDeploymentsServiceClient,
} = require('@google-cloud/game-servers');

const client = new GameServerDeploymentsServiceClient();

async function createGameServerDeployment() {
/**
* 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 request = {
parent: `projects/${projectId}/locations/global`,
deploymentId: deploymentId,
gameServerDeployment: {
description: 'nodejs test deployment',
},
};

const [operation] = await client.createGameServerDeployment(request);
const [result] = await operation.promise();

console.log('Game Server Deployment created:');
console.log(`\t Deployment name: ${result.name}`);
console.log(`\t Deployment description: ${result.description}`);
}

createGameServerDeployment();

// [END cloud_game_servers_create_deployment]
}

main(...process.argv.slice(2)).catch(err => {
console.error(err.message);
process.exitCode = 1;
});
process.on('unhandledRejection', err => {
console.error(err.message);
process.exitCode = 1;
});
60 changes: 60 additions & 0 deletions game-servers/snippets/delete_deployment.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
// 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.

'use strict';

/**
* Delete a Game Servers Deployment.
* @param {string} projectId string project identifier
* @param {string} deploymentId unique identifier for the new Game Server Deployment
*/
async function main(
projectId = 'YOUR_PROJECT_ID',
deploymentId = 'DEPLOYMENT_ID'
) {
// [START cloud_game_servers_delete_deployment]
const {
GameServerDeploymentsServiceClient,
} = require('@google-cloud/game-servers');

const client = new GameServerDeploymentsServiceClient();

async function deleteGameServerDeployment() {
/**
* 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 request = {
// The full resource name
name: client.gameServerDeploymentPath(projectId, 'global', deploymentId),
};

await client.deleteGameServerDeployment(request);

console.log('deleted.');
}

deleteGameServerDeployment();

// [END cloud_game_servers_delete_deployment]
}

main(...process.argv.slice(2)).catch(err => {
console.error(err.message);
process.exitCode = 1;
});
process.on('unhandledRejection', err => {
console.error(err.message);
process.exitCode = 1;
});
64 changes: 64 additions & 0 deletions game-servers/snippets/get_deployment.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
// 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.

'use strict';

/**
* Get a Game Servers Deployment.
* @param {string} projectId string project identifier
* @param {string} deploymentId unique identifier for the new Game Server Deployment
*/
async function main(
projectId = 'YOUR_PROJECT_ID',
deploymentId = 'DEPLOYMENT_ID'
) {
// [START cloud_game_servers_get_deployment]
const {
GameServerDeploymentsServiceClient,
} = require('@google-cloud/game-servers');

const client = new GameServerDeploymentsServiceClient();

async function getGameServerDeployment() {
/**
* 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 request = {
// The full resource name
name: client.gameServerDeploymentPath(projectId, 'global', deploymentId),
};

const [deployment] = await client.getGameServerDeployment(request);
console.log(`Deployment name: ${deployment.name}`);
console.log(`Deployment description: ${deployment.description}`);

const createTime = deployment.createTime;
const createDate = new Date(createTime.seconds * 1000);
console.log(`Deployment created on: ${createDate.toLocaleDateString()}\n`);
}

getGameServerDeployment();

// [END cloud_game_servers_get_deployment]
}

main(...process.argv.slice(2)).catch(err => {
console.error(err.message);
process.exitCode = 1;
});
process.on('unhandledRejection', err => {
console.error(err.message);
process.exitCode = 1;
});
62 changes: 62 additions & 0 deletions game-servers/snippets/list_deployments.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
// 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.

'use strict';

/**
* List all the Game Servers Deployments.
* @param {string} projectId string project identifier
*/
async function main(projectId = 'YOUR_PROJECT_ID') {
// [START cloud_game_servers_list_deployments]
const {
GameServerDeploymentsServiceClient,
} = require('@google-cloud/game-servers');

const client = new GameServerDeploymentsServiceClient();

async function listGameServerDeployments() {
/**
* TODO(developer): Uncomment these variables before running the sample.
*/
// const projectId = 'Your Google Cloud Project ID';
const request = {
parent: `projects/${projectId}/locations/global`,
};

const [results] = await client.listGameServerDeployments(request);
for (const deployment of results) {
console.log(`Deployment name: ${deployment.name}`);
console.log(`Deployment description: ${deployment.description}`);

const createTime = deployment.createTime;
const createDate = new Date(createTime.seconds * 1000);
console.log(
`Deployment created on: ${createDate.toLocaleDateString()}\n`
);
}
}

listGameServerDeployments();

// [END cloud_game_servers_list_deployments]
}

main(...process.argv.slice(2)).catch(err => {
console.error(err.message);
process.exitCode = 1;
});
process.on('unhandledRejection', err => {
console.error(err.message);
process.exitCode = 1;
});
2 changes: 1 addition & 1 deletion game-servers/snippets/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
"@google-cloud/game-servers": "^2.0.2"
},
"devDependencies": {
"c8": "^7.0.0",
"c8": "^7.2.1",
"chai": "^4.2.0",
"mocha": "^8.0.0",
"uuid": "^8.0.0"
Expand Down
68 changes: 68 additions & 0 deletions game-servers/snippets/test/crud_deployment.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
// 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
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

'use strict';

const {assert} = require('chai');
const cleanup = require('./clean.js');
const {describe, before, it} = require('mocha');
const {
GameServerDeploymentsServiceClient,
} = require('@google-cloud/game-servers');

const cp = require('child_process');
const uuid = require('uuid');

const execSync = cmd => cp.execSync(cmd, {encoding: 'utf-8'});

describe('Game Server Deployment Test', () => {
const client = new GameServerDeploymentsServiceClient();
let deploymentId;
let projectId;

before(async () => {
projectId = await client.getProjectId();
deploymentId = `test-${uuid.v4()}`;

await cleanup();
});

it('should create a game server deployment', async () => {
const create_output = execSync(
`node create_deployment.js ${projectId} ${deploymentId}`
);
assert.match(create_output, /Deployment name:/);
});

it('should get a game server deployment', async () => {
const get_output = execSync(
`node get_deployment.js ${projectId} ${deploymentId}`
);
assert.match(get_output, /Deployment name:/);
});

it('should list a game server deployment', async () => {
const list_output = execSync(
`node list_deployments.js ${projectId} ${deploymentId}`
);
assert.match(list_output, /Deployment name:/);
});

it('should delete a game server deployment', async () => {
const delete_output = execSync(
`node delete_deployment.js ${projectId} ${deploymentId}`
);
assert.match(delete_output, /deleted./);
});
});

0 comments on commit f9bee80

Please sign in to comment.