def run(self, search):
"""Entry point for the search. Iterate over VM's records."""
from oauth2client.service_account import ServiceAccountCredentials
from googleapiclient import discovery
import glob
import json
import shutil
scopes = ['https://www.googleapis.com/auth/compute.readonly']
for filename in glob.glob(self.tmp_dir + '/*.json'):
with open(filename) as data_file:
data = json.load(data_file)
project_id = data["project_id"]
credentials = ServiceAccountCredentials.from_json_keyfile_name(
filename, scopes=scopes)
compute = discovery.build('compute', 'v1', credentials=credentials)
zones = compute.zones()
request = zones.list(project=project_id)
filter = 'name eq {}.*'.format(search)
while request is not None:
response = request.execute()
for zone in response['items']:
instances = compute.instances().list(
project=project_id, zone=zone['name'],
filter=filter).execute()
for instance in instances.get('items', []):
yield {
'Name': instance['name'],
'Zone': zone['name'],
'Project': project_id,
'Type': instance['machineType'].rsplit('/', 1)[-1]
}
request = zones.list_next(previous_request=request,
previous_response=response)
shutil.rmtree(self.tmp_dir)
评论列表
文章目录