in cartography/intel/gcp/compute.py [0:0]
def get_zones_in_project(project_id, compute, max_results=None):
"""
Return the zones where the Compute Engine API is enabled for the given project_id.
See https://cloud.google.com/compute/docs/reference/rest/v1/zones and
https://cloud.google.com/compute/docs/reference/rest/v1/zones/list.
If the API is not enabled or if the project returns a 404-not-found, return None.
:param project_id: The project ID number to sync. See the `projectId` field in
https://cloud.google.com/resource-manager/reference/rest/v1/projects
:param compute: The compute resource object created by googleapiclient.discovery.build()
:param max_results: Optional cap on number of results returned by this function. Default = None, which means no cap.
:return: List of a project's zone objects if Compute API is turned on, else None.
"""
try:
req = compute.zones().list(project=project_id, maxResults=max_results)
res = req.execute()
return res['items']
except HttpError as e:
reason = _get_error_reason(e)
if reason == 'accessNotConfigured':
logger.debug(
(
"Google Compute Engine API access is not configured for project %s. "
"Full details: %s"
),
project_id,
e
)
return None
elif reason == 'notFound':
logger.debug(
(
"Project %s returned a 404 not found error. "
"Full details: %s"
),
project_id,
e
)
return None
else:
raise