Learner
Learner

Reputation: 1634

List google cloud compute engine active instance

I'm looking to find out all the active resources( like compute engine, gke etc) and the respective zones . I tried below python code to print that but its printing all zone information wherever compute engine is available , can please someone guide me what functions are available to do so .

    compute = googleapiclient.discovery.build('compute', 'v1')
    request = compute.instances().aggregatedList(project=project)
    while request is not None:
        response = request.execute()
        for name, instances_scoped_list in response['items'].items():
            pprint((name, instances_scoped_list))
            request = compute.instances().aggregatedList_next(previous_request=request, previous_response=response)

Upvotes: 1

Views: 3731

Answers (1)

Jose Luis Delgadillo
Jose Luis Delgadillo

Reputation: 2448

You can list all instances you have in your project, using the Cloud Console gcloud compute instances list command or the instances.list() method.

To list all instances in a project in table form, run:

gcloud compute instances list

You will get something like :

NAME        ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP   STATUS
instance-1  us-central1-a  n1-standard-1               10.128.0.44  xx.xx.xxx.xx  RUNNING
instance-2  us-central1-b  n1-standard-1               10.128.0.49  xx.xx.xxx.xx  RUNNING

Edit1

As you mentioned aggregatedList() is the correct one, and to get the information required is necessary to go over the JSON Response Body.

If you need some specific fields you can check the Response body information.

Also, you can use this code as a guide, I’m getting all the information from the instances.

from pprint import pprint
from googleapiclient import discovery
from oauth2client.client import GoogleCredentials
credentials = GoogleCredentials.get_application_default()
service = discovery.build('compute', 'v1', credentials=credentials)
# Project ID for this request.
project = "{Project-ID}"  # TODO: Update placeholder value.
request = service.instances().aggregatedList(project=project)
while request is not None:
    response = request.execute()
    instance = response.get('items', {})
    for instance in instance.values():
      for a in instance.get('instances', []):
          print(str(instance))
    request = service.instances().aggregatedList_next(previous_request=request, previous_response=response)

Upvotes: 2

Related Questions