|
|
|
@ -273,11 +273,29 @@ end: |
|
|
|
|
return error; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void update_tenancy() { |
|
|
|
|
gpr_once_init(&g_once, init_default_credentials); |
|
|
|
|
gpr_mu_lock(&g_state_mu); |
|
|
|
|
|
|
|
|
|
/* Try a platform-provided hint for GCE. */ |
|
|
|
|
if (!g_metadata_server_available) { |
|
|
|
|
g_is_on_gce = g_gce_tenancy_checker(); |
|
|
|
|
g_metadata_server_available = g_is_on_gce; |
|
|
|
|
} |
|
|
|
|
/* TODO: Add a platform-provided hint for GAE. */ |
|
|
|
|
|
|
|
|
|
/* Do a network test for metadata server. */ |
|
|
|
|
if (!g_metadata_server_available) { |
|
|
|
|
g_metadata_server_available = is_metadata_server_reachable(); |
|
|
|
|
} |
|
|
|
|
gpr_mu_unlock(&g_state_mu); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void default_call_creds(grpc_core::RefCountedPtr<grpc_call_credentials>* call_creds, |
|
|
|
|
grpc_error* error) |
|
|
|
|
{ |
|
|
|
|
grpc_error* err; |
|
|
|
|
gpr_once_init(&g_once, init_default_credentials); |
|
|
|
|
|
|
|
|
|
/* First, try the environment variable. */ |
|
|
|
|
err = create_default_creds_from_path( |
|
|
|
@ -291,21 +309,6 @@ static void default_call_creds(grpc_core::RefCountedPtr<grpc_call_credentials>* |
|
|
|
|
if (err == GRPC_ERROR_NONE) return; |
|
|
|
|
error = grpc_error_add_child(error, err); |
|
|
|
|
|
|
|
|
|
gpr_mu_lock(&g_state_mu); |
|
|
|
|
|
|
|
|
|
/* Try a platform-provided hint for GCE. */ |
|
|
|
|
if (!g_metadata_server_available) { |
|
|
|
|
g_is_on_gce = g_gce_tenancy_checker(); |
|
|
|
|
g_metadata_server_available = g_is_on_gce; |
|
|
|
|
} |
|
|
|
|
/* TODO: Add a platform-provided hint for GAE. */ |
|
|
|
|
|
|
|
|
|
/* Do a network test for metadata server. */ |
|
|
|
|
if (!g_metadata_server_available) { |
|
|
|
|
g_metadata_server_available = is_metadata_server_reachable(); |
|
|
|
|
} |
|
|
|
|
gpr_mu_unlock(&g_state_mu); |
|
|
|
|
|
|
|
|
|
if (g_metadata_server_available) { |
|
|
|
|
*call_creds = grpc_core::RefCountedPtr<grpc_call_credentials>( |
|
|
|
|
grpc_google_compute_engine_credentials_create(nullptr)); |
|
|
|
@ -326,6 +329,8 @@ grpc_channel_credentials* grpc_google_default_credentials_create(grpc_call_crede |
|
|
|
|
|
|
|
|
|
GRPC_API_TRACE("grpc_google_default_credentials_create(%p)", 1, (call_credentials)); |
|
|
|
|
|
|
|
|
|
update_tenancy(); |
|
|
|
|
|
|
|
|
|
if (call_credentials == nullptr) { |
|
|
|
|
default_call_creds(&call_creds, error); |
|
|
|
|
} |
|
|
|
|