Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
This repository was archived by the owner on Dec 31, 2023. It is now read-only.

docs: samples docstring and comments update #69

Merged
merged 7 commits into from
Jul 2, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 29 additions & 46 deletions 75 samples/snippets/quickstart.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,11 @@
# [START compute_instances_list]
def list_instances(project_id: str, zone: str) -> typing.Iterable[compute_v1.Instance]:
"""
Gets a list of instances created in given project in given zone.
Returns an iterable collection of Instance objects.
List all instances in the given zone in the specified project.

Args:
project_id: ID or number of the project you want to use.
zone: Name of the zone you want to check, for example: us-west3-b

project_id: project ID or project number of the Cloud project you want to use.
zone: name of the zone you want to use. For example: “us-west3-b”
Returns:
An iterable collection of Instance objects.
"""
Expand All @@ -58,20 +56,18 @@ def list_instances(project_id: str, zone: str) -> typing.Iterable[compute_v1.Ins
print(f" - {instance.name} ({instance.machine_type})")

return instance_list


# [END compute_instances_list]


# [START compute_instances_list_all]
def list_all_instances(
project_id: str,
) -> typing.Dict[str, typing.Iterable[compute_v1.Instance]]:
"""
Returns a dictionary of all instances present in a project, grouped by their zone.
Return a dictionary of all instances present in a project, grouped by their zone.

Args:
project_id: ID or number of the project you want to use.

project_id: project ID or project number of the Cloud project you want to use.
Returns:
A dictionary with zone names as keys (in form of "zones/{zone_name}") and
iterable collections of Instance objects as values.
Expand All @@ -87,8 +83,6 @@ def list_all_instances(
for instance in response.instances:
print(f" - {instance.name} ({instance.machine_type})")
return all_instances


# [END compute_instances_list_all]


Expand All @@ -102,33 +96,28 @@ def create_instance(
network_name: str = "global/networks/default",
) -> compute_v1.Instance:
"""
Sends an instance creation request to GCP and waits for it to complete.
Send an instance creation request to the Compute Engine API and wait for it to complete.

Args:
project_id: ID or number of the project you want to use.
zone: Name of the zone you want to use, for example: us-west3-b
instance_name: Name of the new machine.
machine_type: Machine type you want to create in following format:
"zones/{zone}/machineTypes/{type_name}". For example:
"zones/europe-west3-c/machineTypes/f1-micro"
You can find the list of available machine types using:
https://cloud.google.com/sdk/gcloud/reference/compute/machine-types/list
source_image: Path the the disk image you want to use for your boot
project_id: project ID or project number of the Cloud project you want to use.
zone: name of the zone you want to use. For example: “us-west3-b”
instance_name: name of the new virtual machine.
machine_type: machine type of the VM being created. This value uses the
following format: "zones/{zone}/machineTypes/{type_name}".
For example: "zones/europe-west3-c/machineTypes/f1-micro"
source_image: path to the operating system image to mount on your boot
disk. This can be one of the public images
(e.g. "projects/debian-cloud/global/images/family/debian-10")
(like "projects/debian-cloud/global/images/family/debian-10")
or a private image you have access to.
You can check the list of available public images using:
$ gcloud compute images list
network_name: Name of the network you want the new instance to use.
For example: global/networks/default - if you want to use the
default network.

network_name: name of the network you want the new instance to use.
For example: "global/networks/default" represents the `default`
network interface, which is created automatically for each project.
Returns:
Instance object.
"""
instance_client = compute_v1.InstancesClient()

# Every machine requires at least one persistent disk
# Describe the size and source image of the boot disk to attach to the instance.
disk = compute_v1.AttachedDisk()
initialize_params = compute_v1.AttachedDiskInitializeParams()
initialize_params.source_image = (
Expand All @@ -140,25 +129,25 @@ def create_instance(
disk.boot = True
disk.type_ = compute_v1.AttachedDisk.Type.PERSISTENT

# Every machine needs to be connected to a VPC network.
# The 'default' network is created automatically in every project.
# Use the network interface provided in the network_name argument.
network_interface = compute_v1.NetworkInterface()
network_interface.name = network_name

# Collecting all the information into the Instance object
# Collect information into the Instance object.
instance = compute_v1.Instance()
instance.name = instance_name
instance.disks = [disk]
full_machine_type_name = f"zones/{zone}/machineTypes/{machine_type}"
instance.machine_type = full_machine_type_name
instance.network_interfaces = [network_interface]

# Preparing the InsertInstanceRequest
# Prepare the request to insert an instance.
request = compute_v1.InsertInstanceRequest()
request.zone = zone
request.project = project_id
request.instance_resource = instance

# Wait for the create operation to complete.
print(f"Creating the {instance_name} instance in {zone}...")
operation = instance_client.insert(request=request)
if operation.status == compute_v1.Operation.Status.RUNNING:
Expand All @@ -172,20 +161,18 @@ def create_instance(
print("Warning during creation:", operation.warnings, file=sys.stderr)
print(f"Instance {instance_name} created.")
return instance


# [END compute_instances_create]


# [START compute_instances_delete]
def delete_instance(project_id: str, zone: str, machine_name: str) -> None:
"""
Sends a delete request to GCP and waits for it to complete.
Send an instance deletion request to the Compute Engine API and wait for it to complete.

Args:
project_id: ID or number of the project you want to use.
zone: Name of the zone you want to use, for example: us-west3-b
machine_name: Name of the machine you want to delete.
project_id: project ID or project number of the Cloud project you want to use.
zone: name of the zone you want to use. For example: us-west3-b
machine_name: name of the machine you want to delete.
"""
instance_client = compute_v1.InstancesClient()

Expand All @@ -204,8 +191,6 @@ def delete_instance(project_id: str, zone: str, machine_name: str) -> None:
print("Warning during deletion:", operation.warnings, file=sys.stderr)
print(f"Instance {machine_name} deleted.")
return


# [END compute_instances_delete]


Expand All @@ -220,7 +205,7 @@ def wait_for_operation(
Args:
operation: The Operation object representing the operation you want to
wait on.
project_id: ID or number of the project owning the operation.
project_id: project ID or project number of the Cloud project you want to use.

Returns:
Finished Operation object.
Expand All @@ -232,13 +217,11 @@ def wait_for_operation(
kwargs["zone"] = operation.zone.rsplit("/", maxsplit=1)[1]
elif operation.region:
client = compute_v1.RegionOperationsClient()
# Operation.region is a full URL address of a zone, so we need to extract just the name
# Operation.region is a full URL address of a region, so we need to extract just the name
kwargs["region"] = operation.region.rsplit("/", maxsplit=1)[1]
else:
client = compute_v1.GlobalOperationsClient()
return client.wait(**kwargs)


# [END compute_instances_operation_check]


Expand Down
Morty Proxy This is a proxified and sanitized view of the page, visit original site.