From f9bee80023e14b3eea4a860b56d79ed30c2da8db Mon Sep 17 00:00:00 2001 From: pooneh-m <46979170+pooneh-m@users.noreply.github.com> Date: Thu, 16 Jul 2020 09:31:19 -0700 Subject: [PATCH] docs(samples): Add Game Server deployment samples (#92) Co-authored-by: Justin Beckwith --- game-servers/snippets/create_cluster.js | 4 +- game-servers/snippets/create_deployment.js | 66 ++++++++++++++++++ game-servers/snippets/delete_deployment.js | 60 ++++++++++++++++ game-servers/snippets/get_deployment.js | 64 +++++++++++++++++ game-servers/snippets/list_deployments.js | 62 +++++++++++++++++ game-servers/snippets/package.json | 2 +- .../snippets/test/crud_deployment.test.js | 68 +++++++++++++++++++ 7 files changed, 323 insertions(+), 3 deletions(-) create mode 100644 game-servers/snippets/create_deployment.js create mode 100644 game-servers/snippets/delete_deployment.js create mode 100644 game-servers/snippets/get_deployment.js create mode 100644 game-servers/snippets/list_deployments.js create mode 100644 game-servers/snippets/test/crud_deployment.test.js diff --git a/game-servers/snippets/create_cluster.js b/game-servers/snippets/create_cluster.js index 120e5f83b7..3455b846c6 100644 --- a/game-servers/snippets/create_cluster.js +++ b/game-servers/snippets/create_cluster.js @@ -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', @@ -54,6 +53,7 @@ async function main( connectionInfo: { gkeClusterReference: { // Provide full resource name of a Kubernetes Engine cluster + // In the form of 'projects//locations//clusters/' cluster: gkeClusterName, }, namespace: 'default', diff --git a/game-servers/snippets/create_deployment.js b/game-servers/snippets/create_deployment.js new file mode 100644 index 0000000000..d4d9813259 --- /dev/null +++ b/game-servers/snippets/create_deployment.js @@ -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; +}); diff --git a/game-servers/snippets/delete_deployment.js b/game-servers/snippets/delete_deployment.js new file mode 100644 index 0000000000..7dbebde90b --- /dev/null +++ b/game-servers/snippets/delete_deployment.js @@ -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; +}); diff --git a/game-servers/snippets/get_deployment.js b/game-servers/snippets/get_deployment.js new file mode 100644 index 0000000000..70361bfd51 --- /dev/null +++ b/game-servers/snippets/get_deployment.js @@ -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; +}); diff --git a/game-servers/snippets/list_deployments.js b/game-servers/snippets/list_deployments.js new file mode 100644 index 0000000000..4c39dbbb9e --- /dev/null +++ b/game-servers/snippets/list_deployments.js @@ -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; +}); diff --git a/game-servers/snippets/package.json b/game-servers/snippets/package.json index 92c20f638d..d6364f03a0 100644 --- a/game-servers/snippets/package.json +++ b/game-servers/snippets/package.json @@ -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" diff --git a/game-servers/snippets/test/crud_deployment.test.js b/game-servers/snippets/test/crud_deployment.test.js new file mode 100644 index 0000000000..229c5c0f8e --- /dev/null +++ b/game-servers/snippets/test/crud_deployment.test.js @@ -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./); + }); +});