1
votes

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)
1
Can you describe more what do you want to achieve? What is an "active resource"? ā€“ guillaume blaquiere
@guillaumeblaquiere, by "active resources", I meant the instances which are currently UP and running. ā€“ Learner

1 Answers

1
votes

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)