in processors/base.py [0:0]
def expand_projects(self, projects):
ret = []
self.logger.debug('Expanding projects list.',
extra={'projects': projects})
for project in projects:
if project.startswith('projects/'):
project = project[9:]
if project.endswith('/'):
project = project[0:len(project) - 1]
if project.isdecimal():
if len(_PROJECT_NUM_CACHE) == 0:
service = discovery.build('cloudresourcemanager', 'v1')
service._http = http.set_user_agent(service._http,
self._get_user_agent())
request = service.projects().list()
response = request.execute()
while request:
for p in response['projects']:
_PROJECT_NUM_CACHE[p['projectNumber']] = (
p['projectId'], p['projectNumber'], p['name'],
p['labels'] if 'labels' in p else {})
request = service.projects().list_next(
request, response)
if request:
response = request.execute()
project_parts = project.split('/')
if len(project_parts) == 1:
project_num = project_parts[0]
else:
project_num = project_parts[1]
if project_num not in _PROJECT_NUM_CACHE:
raise UnknownProjectException('Unknown project ID %s!' %
project_num)
ret.append(_PROJECT_NUM_CACHE[project_num])
else:
if '/' not in project and project not in _PROJECT_ID_CACHE:
service = discovery.build('cloudresourcemanager', 'v1')
service._http = http.set_user_agent(service._http,
self._get_user_agent())
request = service.projects().get(projectId=project)
response = request.execute()
_PROJECT_ID_CACHE[response['projectId']] = (
response['projectId'], response['projectNumber'],
response['name'],
response['labels'] if 'labels' in response else {})
if project in _PROJECT_ID_CACHE:
ret.append(_PROJECT_ID_CACHE[project])
self.logger.debug('Expanding projects list finished.',
extra={'projects': ret})
return ret