-
Notifications
You must be signed in to change notification settings - Fork 2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'migration/main' into nodejs-compute-mig…
…ration
- Loading branch information
Showing
73 changed files
with
7,136 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
// Copyright 2022 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. | ||
|
||
/** | ||
* Creates a new instance template with the provided name and a specific instance configuration. | ||
* | ||
* @param {string} projectId - Project ID or project number of the Cloud project you use. | ||
* @param {string} templateName - Name of the new template to create. | ||
*/ | ||
function main(projectId, templateName) { | ||
// [START compute_template_create] | ||
/** | ||
* TODO(developer): Uncomment and replace these variables before running the sample. | ||
*/ | ||
// const projectId = 'YOUR_PROJECT_ID'; | ||
// const templateName = 'your_template_name'; | ||
|
||
const compute = require('@google-cloud/compute'); | ||
|
||
// Create a new instance template with the provided name and a specific instance configuration. | ||
async function createTemplate() { | ||
const instanceTemplatesClient = new compute.InstanceTemplatesClient(); | ||
|
||
const [response] = await instanceTemplatesClient.insert({ | ||
project: projectId, | ||
instanceTemplateResource: { | ||
name: templateName, | ||
properties: { | ||
disks: [ | ||
{ | ||
// The template describes the size and source image of the boot disk | ||
// to attach to the instance. | ||
initializeParams: { | ||
diskSizeGb: '250', | ||
sourceImage: | ||
'projects/debian-cloud/global/images/family/debian-11', | ||
}, | ||
autoDelete: true, | ||
boot: true, | ||
}, | ||
], | ||
machineType: 'e2-standard-4', | ||
// The template connects the instance to the `default` network, | ||
// without specifying a subnetwork. | ||
networkInterfaces: [ | ||
{ | ||
// Use the network interface provided in the networkName argument. | ||
name: 'global/networks/default', | ||
// The template lets the instance use an external IP address. | ||
accessConfigs: [ | ||
{ | ||
name: 'External NAT', | ||
type: 'ONE_TO_ONE_NAT', | ||
networkTier: 'PREMIUM', | ||
}, | ||
], | ||
}, | ||
], | ||
}, | ||
}, | ||
}); | ||
let operation = response.latestResponse; | ||
const operationsClient = new compute.GlobalOperationsClient(); | ||
|
||
// Wait for the create operation to complete. | ||
while (operation.status !== 'DONE') { | ||
[operation] = await operationsClient.wait({ | ||
operation: operation.name, | ||
project: projectId, | ||
}); | ||
} | ||
|
||
console.log('Instance template created.'); | ||
} | ||
|
||
createTemplate(); | ||
// [END compute_template_create] | ||
} | ||
|
||
process.on('unhandledRejection', err => { | ||
console.error(err.message); | ||
process.exitCode = 1; | ||
}); | ||
|
||
main(...process.argv.slice(2)); |
84 changes: 84 additions & 0 deletions
84
compute/create-instance-templates/createTemplateFromInstance.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
// Copyright 2022 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. | ||
|
||
/** | ||
* Creates a new instance template based on an existing instance. | ||
* | ||
* @param {string} projectId - Project ID or project number of the Cloud project you use. | ||
* @param {string} instance - The instance to base the new template on. This value uses | ||
* the following format: "projects/{project}/zones/{zone}/instances/{instance_name}" | ||
* @param {string} templateName - Name of the new template to create. | ||
*/ | ||
function main(projectId, instance, templateName) { | ||
// [START compute_template_create_from_instance] | ||
/** | ||
* TODO(developer): Uncomment and replace these variables before running the sample. | ||
*/ | ||
// const projectId = 'YOUR_PROJECT_ID'; | ||
// const instance = 'projects/project/zones/zone/instances/instance'; | ||
// const templateName = 'your_template_name'; | ||
|
||
const compute = require('@google-cloud/compute'); | ||
|
||
// Create a new instance template based on an existing instance. | ||
// This new template specifies a different boot disk. | ||
async function createTemplateFromInstance() { | ||
const instanceTemplatesClient = new compute.InstanceTemplatesClient(); | ||
|
||
const [response] = await instanceTemplatesClient.insert({ | ||
project: projectId, | ||
instanceTemplateResource: { | ||
name: templateName, | ||
sourceInstance: instance, | ||
sourceInstanceParams: { | ||
diskConfigs: [ | ||
{ | ||
// Device name must match the name of a disk attached to the instance | ||
// your template is based on. | ||
deviceName: 'disk-1', | ||
// Replace the original boot disk image used in your instance with a Rocky Linux image. | ||
instantiateFrom: 'CUSTOM_IMAGE', | ||
customImage: | ||
'projects/rocky-linux-cloud/global/images/family/rocky-linux-8', | ||
// Override the auto_delete setting. | ||
autoDelete: true, | ||
}, | ||
], | ||
}, | ||
}, | ||
}); | ||
let operation = response.latestResponse; | ||
const operationsClient = new compute.GlobalOperationsClient(); | ||
|
||
// Wait for the create operation to complete. | ||
while (operation.status !== 'DONE') { | ||
[operation] = await operationsClient.wait({ | ||
operation: operation.name, | ||
project: projectId, | ||
}); | ||
} | ||
|
||
console.log('Instance template created.'); | ||
} | ||
|
||
createTemplateFromInstance(); | ||
// [END compute_template_create_from_instance] | ||
} | ||
|
||
process.on('unhandledRejection', err => { | ||
console.error(err.message); | ||
process.exitCode = 1; | ||
}); | ||
|
||
main(...process.argv.slice(2)); |
95 changes: 95 additions & 0 deletions
95
compute/create-instance-templates/createTemplateWithSubnet.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
// Copyright 2022 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. | ||
|
||
/** | ||
* Creates an instance template that uses a provided subnet. | ||
* | ||
* @param {string} projectId - Project ID or project number of the Cloud project you use. | ||
* @param {string} network - The network to be used in the new template. This value uses | ||
* the following format: "projects/{project}/global/networks/{network}" | ||
* @param {string} subnetwork - The subnetwork to be used in the new template. This value | ||
* uses the following format: "projects/{project}/regions/{region}/subnetworks/{subnetwork}" | ||
* @param {string} templateName - Name of the new template to create. | ||
*/ | ||
function main(projectId, network, subnetwork, templateName) { | ||
// [START compute_template_create_with_subnet] | ||
/** | ||
* TODO(developer): Uncomment and replace these variables before running the sample. | ||
*/ | ||
// const projectId = 'YOUR_PROJECT_ID'; | ||
// const network = 'projects/project/global/networks/network'; | ||
// const subnetwork = 'projects/project/regions/region/subnetworks/subnetwork'; | ||
// const templateName = 'your_template_name'; | ||
|
||
const compute = require('@google-cloud/compute'); | ||
|
||
// Create an instance template that uses a provided subnet. | ||
async function createTemplateWithSubnet() { | ||
const instanceTemplatesClient = new compute.InstanceTemplatesClient(); | ||
|
||
const [response] = await instanceTemplatesClient.insert({ | ||
project: projectId, | ||
instanceTemplateResource: { | ||
name: templateName, | ||
properties: { | ||
// The template describes the size and source image of the boot disk | ||
// to attach to the instance. | ||
disks: [ | ||
{ | ||
// The template describes the size and source image of the boot disk | ||
// to attach to the instance. | ||
initializeParams: { | ||
diskSizeGb: '250', | ||
sourceImage: | ||
'projects/debian-cloud/global/images/family/debian-11', | ||
}, | ||
autoDelete: true, | ||
boot: true, | ||
}, | ||
], | ||
machineType: 'e2-standard-4', | ||
// The template connects the instance to the specified network and subnetwork. | ||
networkInterfaces: [ | ||
{ | ||
network, | ||
subnetwork, | ||
}, | ||
], | ||
}, | ||
}, | ||
}); | ||
let operation = response.latestResponse; | ||
const operationsClient = new compute.GlobalOperationsClient(); | ||
|
||
// Wait for the create operation to complete. | ||
while (operation.status !== 'DONE') { | ||
[operation] = await operationsClient.wait({ | ||
operation: operation.name, | ||
project: projectId, | ||
}); | ||
} | ||
|
||
console.log('Instance template created.'); | ||
} | ||
|
||
createTemplateWithSubnet(); | ||
// [END compute_template_create_with_subnet] | ||
} | ||
|
||
process.on('unhandledRejection', err => { | ||
console.error(err.message); | ||
process.exitCode = 1; | ||
}); | ||
|
||
main(...process.argv.slice(2)); |
62 changes: 62 additions & 0 deletions
62
compute/create-instance-templates/deleteInstanceTemplate.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
// Copyright 2022 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. | ||
|
||
/** | ||
* Deletes an instance template. | ||
* | ||
* @param {string} projectId - Project ID or project number of the Cloud project you use. | ||
* @param {string} templateName - Name of the template to delete. | ||
*/ | ||
function main(projectId, templateName) { | ||
// [START compute_template_delete] | ||
/** | ||
* TODO(developer): Uncomment and replace these variables before running the sample. | ||
*/ | ||
// const projectId = 'YOUR_PROJECT_ID'; | ||
// const templateName = 'your_template_name'; | ||
|
||
const compute = require('@google-cloud/compute'); | ||
|
||
// Delete an instance template. | ||
async function deleteInstanceTemplate() { | ||
const instanceTemplatesClient = new compute.InstanceTemplatesClient(); | ||
|
||
const [response] = await instanceTemplatesClient.delete({ | ||
project: projectId, | ||
instanceTemplate: templateName, | ||
}); | ||
let operation = response.latestResponse; | ||
const operationsClient = new compute.GlobalOperationsClient(); | ||
|
||
// Wait for the create operation to complete. | ||
while (operation.status !== 'DONE') { | ||
[operation] = await operationsClient.wait({ | ||
operation: operation.name, | ||
project: projectId, | ||
}); | ||
} | ||
|
||
console.log('Instance template deleted.'); | ||
} | ||
|
||
deleteInstanceTemplate(); | ||
// [END compute_template_delete] | ||
} | ||
|
||
process.on('unhandledRejection', err => { | ||
console.error(err.message); | ||
process.exitCode = 1; | ||
}); | ||
|
||
main(...process.argv.slice(2)); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
// Copyright 2022 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. | ||
|
||
/** | ||
* Retrieves an instance template, which you can use to create virtual machine | ||
* (VM) instances and managed instance groups (MIGs). | ||
* | ||
* @param {string} projectId - Project ID or project number of the Cloud project you use. | ||
* @param {string} templateName - Name of the template to retrieve. | ||
*/ | ||
function main(projectId, templateName) { | ||
// [START compute_template_get] | ||
/** | ||
* TODO(developer): Uncomment and replace these variables before running the sample. | ||
*/ | ||
// const projectId = 'YOUR_PROJECT_ID'; | ||
// const templateName = 'your_template_name'; | ||
|
||
const compute = require('@google-cloud/compute'); | ||
|
||
// Retrieve an instance template, which you can use to create | ||
// virtual machine (VM) instances and managed instance groups (MIGs). | ||
async function getInstanceTemplate() { | ||
const instanceTemplatesClient = new compute.InstanceTemplatesClient(); | ||
|
||
const [instance] = await instanceTemplatesClient.get({ | ||
project: projectId, | ||
instanceTemplate: templateName, | ||
}); | ||
|
||
console.log('Instance template:', instance); | ||
} | ||
|
||
getInstanceTemplate(); | ||
// [END compute_template_get] | ||
} | ||
|
||
process.on('unhandledRejection', err => { | ||
console.error(err.message); | ||
process.exitCode = 1; | ||
}); | ||
|
||
main(...process.argv.slice(2)); |
Oops, something went wrong.