-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore(samples): Snippet Generating Script: part 2 - moving the snippe…
…ts to new format (#225) * chore(samples): Snippet Generating System Preparing the SGS (Snippet Generating System) script to handle the burden of duplicated code in the samples. * 🦉 Updates from OwlBot See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * chore(samples): Making linter ignore the test fixtures. * chore(samples): Update region tags that shouldn't be region tags. * chore(samples): Syntax fix for Python 3.6 * Removing the 3.8 walrus syntax * Fixing test requirements * chore(samples): Trying to make the tests work * Cleaning up noxfile. * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * Removing bonus requirements file as it confuses the system. * One more try to fix tests. * Changing README to make snippet bot happy * chore(samples): Changing the sampels structure to use SGS * Fixing some tests. * Adding custom hostname files. * Making tests work again. * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * Making lint happy. * Making tests run faster with parallelism. * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * WIP. * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * Apply suggestions from code review Co-authored-by: Anthonios Partheniou <partheniou@google.com> * Applying comments from review. Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com> Co-authored-by: Anthonios Partheniou <partheniou@google.com>
- Loading branch information
1 parent
13e7414
commit f1bd0a3
Showing
198 changed files
with
9,278 additions
and
2,124 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,13 @@ | ||
# 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. |
18 changes: 18 additions & 0 deletions
18
packages/google-cloud-compute/samples/ingredients/__init__.py
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,18 @@ | ||
# 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. | ||
|
||
# This is an ingredient file. It is not meant to be run directly. Check the samples/snippets | ||
# folder for complete code samples that are ready to be used. | ||
# Disabling flake8 for the ingredients file, as it would fail F821 - undefined name check. | ||
# flake8: noqa |
54 changes: 54 additions & 0 deletions
54
packages/google-cloud-compute/samples/ingredients/disks/disk_from_snapshot.py
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. | ||
|
||
# This is an ingredient file. It is not meant to be run directly. Check the samples/snippets | ||
# folder for complete code samples that are ready to be used. | ||
# Disabling flake8 for the ingredients file, as it would fail F821 - undefined name check. | ||
# flake8: noqa | ||
from google.cloud import compute_v1 | ||
|
||
|
||
# <INGREDIENT disk_from_snapshot> | ||
def disk_from_snapshot( | ||
disk_type: str, disk_size_gb: int, boot: bool, source_snapshot: str, auto_delete: bool = False | ||
) -> compute_v1.AttachedDisk(): | ||
""" | ||
Create an AttachedDisk object to be used in VM instance creation. Uses a disk snapshot as the | ||
source for the new disk. | ||
Args: | ||
disk_type: the type of disk you want to create. This value uses the following format: | ||
"zones/{zone}/diskTypes/(pd-standard|pd-ssd|pd-balanced|pd-extreme)". | ||
For example: "zones/us-west3-b/diskTypes/pd-ssd" | ||
disk_size_gb: size of the new disk in gigabytes | ||
boot: boolean flag indicating whether this disk should be used as a boot disk of an instance | ||
source_snapshot: disk snapshot to use when creating this disk. You must have read access to this disk. | ||
This value uses the following format: "projects/{project_name}/global/snapshots/{snapshot_name}" | ||
auto_delete: boolean flag indicating whether this disk should be deleted with the VM that uses it | ||
Returns: | ||
AttachedDisk object configured to be created using the specified snapshot. | ||
""" | ||
disk = compute_v1.AttachedDisk() | ||
initialize_params = compute_v1.AttachedDiskInitializeParams() | ||
initialize_params.source_snapshot = source_snapshot | ||
initialize_params.disk_type = disk_type | ||
initialize_params.disk_size_gb = disk_size_gb | ||
disk.initialize_params = initialize_params | ||
# Remember to set auto_delete to True if you want the disk to be deleted when you delete | ||
# your VM instance. | ||
disk.auto_delete = auto_delete | ||
disk.boot = boot | ||
return disk | ||
# </INGREDIENT> |
49 changes: 49 additions & 0 deletions
49
packages/google-cloud-compute/samples/ingredients/disks/empty_disk.py
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,49 @@ | ||
# 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. | ||
|
||
# This is an ingredient file. It is not meant to be run directly. Check the samples/snippets | ||
# folder for complete code samples that are ready to be used. | ||
# Disabling flake8 for the ingredients file, as it would fail F821 - undefined name check. | ||
# flake8: noqa | ||
from google.cloud import compute_v1 | ||
|
||
|
||
# <INGREDIENT empty_disk> | ||
def empty_disk(disk_type: str, disk_size_gb: int, boot: bool = False, auto_delete: bool = False) -> compute_v1.AttachedDisk(): | ||
""" | ||
Create an AttachedDisk object to be used in VM instance creation. The created disk contains | ||
no data and requires formatting before it can be used. | ||
Args: | ||
disk_type: the type of disk you want to create. This value uses the following format: | ||
"zones/{zone}/diskTypes/(pd-standard|pd-ssd|pd-balanced|pd-extreme)". | ||
For example: "zones/us-west3-b/diskTypes/pd-ssd" | ||
disk_size_gb: size of the new disk in gigabytes | ||
boot: boolean flag indicating whether this disk should be used as a boot disk of an instance | ||
auto_delete: boolean flag indicating whether this disk should be deleted with the VM that uses it | ||
Returns: | ||
AttachedDisk object configured to be created as an empty disk. | ||
""" | ||
disk = compute_v1.AttachedDisk() | ||
initialize_params = compute_v1.AttachedDiskInitializeParams() | ||
initialize_params.disk_type = disk_type | ||
initialize_params.disk_size_gb = disk_size_gb | ||
disk.initialize_params = initialize_params | ||
# Remember to set auto_delete to True if you want the disk to be deleted when you delete | ||
# your VM instance. | ||
disk.auto_delete = True | ||
disk.boot = False | ||
return disk | ||
# </INGREDIENT> |
55 changes: 55 additions & 0 deletions
55
packages/google-cloud-compute/samples/ingredients/disks/from_image.py
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,55 @@ | ||
# 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. | ||
|
||
# This is an ingredient file. It is not meant to be run directly. Check the samples/snippets | ||
# folder for complete code samples that are ready to be used. | ||
# Disabling flake8 for the ingredients file, as it would fail F821 - undefined name check. | ||
# flake8: noqa | ||
from google.cloud import compute_v1 | ||
|
||
|
||
# <INGREDIENT disk_from_image> | ||
def disk_from_image( | ||
disk_type: str, disk_size_gb: int, boot: bool, source_image: str, auto_delete: bool = False | ||
) -> compute_v1.AttachedDisk: | ||
""" | ||
Create an AttachedDisk object to be used in VM instance creation. Uses an image as the | ||
source for the new disk. | ||
Args: | ||
disk_type: the type of disk you want to create. This value uses the following format: | ||
"zones/{zone}/diskTypes/(pd-standard|pd-ssd|pd-balanced|pd-extreme)". | ||
For example: "zones/us-west3-b/diskTypes/pd-ssd" | ||
disk_size_gb: size of the new disk in gigabytes | ||
boot: boolean flag indicating whether this disk should be used as a boot disk of an instance | ||
source_image: source image to use when creating this disk. You must have read access to this disk. This can be one | ||
of the publicly available images or an image from one of your projects. | ||
This value uses the following format: "projects/{project_name}/global/images/{image_name}" | ||
auto_delete: boolean flag indicating whether this disk should be deleted with the VM that uses it | ||
Returns: | ||
AttachedDisk object configured to be created using the specified image. | ||
""" | ||
boot_disk = compute_v1.AttachedDisk() | ||
initialize_params = compute_v1.AttachedDiskInitializeParams() | ||
initialize_params.source_image = source_image | ||
initialize_params.disk_size_gb = disk_size_gb | ||
initialize_params.disk_type = disk_type | ||
boot_disk.initialize_params = initialize_params | ||
# Remember to set auto_delete to True if you want the disk to be deleted when you delete | ||
# your VM instance. | ||
boot_disk.auto_delete = auto_delete | ||
boot_disk.boot = boot | ||
return boot_disk | ||
# </INGREDIENT> |
72 changes: 72 additions & 0 deletions
72
packages/google-cloud-compute/samples/ingredients/firewall/create.py
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,72 @@ | ||
# 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. | ||
|
||
# This is an ingredient file. It is not meant to be run directly. Check the samples/snippets | ||
# folder for complete code samples that are ready to be used. | ||
# Disabling flake8 for the ingredients file, as it would fail F821 - undefined name check. | ||
# flake8: noqa | ||
from google.cloud import compute_v1 | ||
|
||
|
||
# <INGREDIENT create_firewall_rule> | ||
def create_firewall_rule( | ||
project_id: str, firewall_rule_name: str, network: str = "global/networks/default" | ||
) -> compute_v1.Firewall: | ||
""" | ||
Creates a simple firewall rule allowing for incoming HTTP and HTTPS access from the entire Internet. | ||
Args: | ||
project_id: project ID or project number of the Cloud project you want to use. | ||
firewall_rule_name: name of the rule that is created. | ||
network: name of the network the rule will be applied to. Available name formats: | ||
* https://www.googleapis.com/compute/v1/projects/{project_id}/global/networks/{network} | ||
* projects/{project_id}/global/networks/{network} | ||
* global/networks/{network} | ||
Returns: | ||
A Firewall object. | ||
""" | ||
firewall_rule = compute_v1.Firewall() | ||
firewall_rule.name = firewall_rule_name | ||
firewall_rule.direction = "INGRESS" | ||
|
||
allowed_ports = compute_v1.Allowed() | ||
allowed_ports.I_p_protocol = "tcp" | ||
allowed_ports.ports = ["80", "443"] | ||
|
||
firewall_rule.allowed = [allowed_ports] | ||
firewall_rule.source_ranges = ["0.0.0.0/0"] | ||
firewall_rule.network = network | ||
firewall_rule.description = "Allowing TCP traffic on port 80 and 443 from Internet." | ||
|
||
firewall_rule.target_tags = ["web"] | ||
|
||
# Note that the default value of priority for the firewall API is 1000. | ||
# If you check the value of `firewall_rule.priority` at this point it | ||
# will be equal to 0, however it is not treated as "set" by the library and thus | ||
# the default will be applied to the new rule. If you want to create a rule that | ||
# has priority == 0, you need to explicitly set it so: | ||
# TODO: Uncomment to set the priority to 0 | ||
# firewall_rule.priority = 0 | ||
|
||
firewall_client = compute_v1.FirewallsClient() | ||
op = firewall_client.insert_unary( | ||
project=project_id, firewall_resource=firewall_rule | ||
) | ||
|
||
op_client = compute_v1.GlobalOperationsClient() | ||
op_client.wait(project=project_id, operation=op.name) | ||
|
||
return firewall_client.get(project=project_id, firewall=firewall_rule_name) | ||
# </INGREDIENT> |
39 changes: 39 additions & 0 deletions
39
packages/google-cloud-compute/samples/ingredients/firewall/delete.py
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,39 @@ | ||
# 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. | ||
|
||
# This is an ingredient file. It is not meant to be run directly. Check the samples/snippets | ||
# folder for complete code samples that are ready to be used. | ||
# Disabling flake8 for the ingredients file, as it would fail F821 - undefined name check. | ||
# flake8: noqa | ||
from google.cloud import compute_v1 | ||
|
||
|
||
# <INGREDIENT delete_firewall_rule> | ||
def delete_firewall_rule(project_id: str, firewall_rule_name: str) -> None: | ||
""" | ||
Deletes a firewall rule from the project. | ||
Args: | ||
project_id: project ID or project number of the Cloud project you want to use. | ||
firewall_rule_name: name of the firewall rule you want to delete. | ||
""" | ||
firewall_client = compute_v1.FirewallsClient() | ||
operation = firewall_client.delete_unary( | ||
project=project_id, firewall=firewall_rule_name | ||
) | ||
|
||
operation_client = compute_v1.GlobalOperationsClient() | ||
operation_client.wait(project=project_id, operation=operation.name) | ||
return | ||
# </INGREDIENT> |
36 changes: 36 additions & 0 deletions
36
packages/google-cloud-compute/samples/ingredients/firewall/get.py
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,36 @@ | ||
# 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. | ||
|
||
# This is an ingredient file. It is not meant to be run directly. Check the samples/snippets | ||
# folder for complete code samples that are ready to be used. | ||
# Disabling flake8 for the ingredients file, as it would fail F821 - undefined name check. | ||
# flake8: noqa | ||
from google.cloud import compute_v1 | ||
|
||
|
||
# <INGREDIENT get_firewall_rule> | ||
def get_firewall_rule(project_id: str, firewall_rule_name: str) -> compute_v1.Firewall: | ||
""" | ||
Retrieve a Firewall from a project. | ||
Args: | ||
project_id: project ID or project number of the Cloud project you want to use. | ||
firewall_rule_name: name of the firewall rule you want to retrieve. | ||
Returns: | ||
A Firewall object. | ||
""" | ||
firewall_client = compute_v1.FirewallsClient() | ||
return firewall_client.get(project=project_id, firewall=firewall_rule_name) | ||
# </INGREDIENT> |
44 changes: 44 additions & 0 deletions
44
packages/google-cloud-compute/samples/ingredients/firewall/list.py
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,44 @@ | ||
# 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. | ||
|
||
# This is an ingredient file. It is not meant to be run directly. Check the samples/snippets | ||
# folder for complete code samples that are ready to be used. | ||
# Disabling flake8 for the ingredients file, as it would fail F821 - undefined name check. | ||
# flake8: noqa | ||
from typing import Iterable | ||
|
||
from google.cloud import compute_v1 | ||
|
||
|
||
# <INGREDIENT list_firewall_rules> | ||
def list_firewall_rules(project_id: str) -> Iterable[compute_v1.Firewall]: | ||
""" | ||
Return a list of all the firewall rules in specified project. Also prints the | ||
list of firewall names and their descriptions. | ||
Args: | ||
project_id: project ID or project number of the Cloud project you want to use. | ||
Returns: | ||
A flat list of all firewall rules defined for given project. | ||
""" | ||
firewall_client = compute_v1.FirewallsClient() | ||
firewalls_list = firewall_client.list(project=project_id) | ||
|
||
for firewall in firewalls_list: | ||
print(f" - {firewall.name}: {firewall.description}") | ||
|
||
return firewalls_list | ||
# </INGREDIENT> | ||
|
Oops, something went wrong.