def api_service()

in gce_rescue/tasks/validations/api.py [0:0]


def api_service(
    service: str,
    version: str,
    credentials: Credentials) -> Resource:

  def _builder(http, *args, **kwargs):
    # google api client is not thread safe
    # https://github.com/googleapis/google-api-python-client/blob/main/docs/thread_safety.md
    del http
    headers = kwargs.setdefault('headers',{})
    headers['user-agent'] = f'gce_rescue-{VERSION}'
    auth_http = google_auth_httplib2.AuthorizedHttp(credentials,
                                                   http=httplib2.Http())
    return googleapiclient.http.HttpRequest(auth_http, *args, **kwargs)

  service_ = googleapiclient.discovery.build(service, version,
                        cache_discovery=False,
                        credentials=credentials,
                        requestBuilder=_builder)
  return service_