mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-11 09:30:44 +01:00
cloud-setup/gcp: add ability to redirect metadata API requests
A different host can be specified with (undocumented, private) NM_CLOUD_SETUP_GCP_HOST environment variable.
This commit is contained in:
parent
661545efcd
commit
79f6a7da56
1 changed files with 31 additions and 7 deletions
|
|
@ -13,15 +13,39 @@
|
|||
#define HTTP_POLL_TIMEOUT_MS 10000
|
||||
#define HTTP_RATE_LIMIT_MS 1000
|
||||
|
||||
#define NM_GCP_HOST "metadata.google.internal"
|
||||
#define NM_GCP_BASE "http://" NM_GCP_HOST
|
||||
#define NM_GCP_API_VERSION "/v1"
|
||||
#define NM_GCP_METADATA_URL_BASE NM_GCP_BASE "/computeMetadata" NM_GCP_API_VERSION "/instance"
|
||||
#define NM_GCP_METADATA_URL_NET "/network-interfaces/"
|
||||
#define NM_GCP_HOST "metadata.google.internal"
|
||||
#define NM_GCP_BASE "http://" NM_GCP_HOST
|
||||
#define NM_GCP_API_VERSION "/v1"
|
||||
#define NM_GCP_METADATA_URL_NET "/network-interfaces/"
|
||||
|
||||
#define NM_GCP_METADATA_HEADER "Metadata-Flavor: Google"
|
||||
|
||||
#define _gcp_uri_concat(...) nmcs_utils_uri_build_concat(NM_GCP_METADATA_URL_BASE, __VA_ARGS__)
|
||||
static const char *
|
||||
_gcp_base(void)
|
||||
{
|
||||
static const char *base_cached = NULL;
|
||||
const char *base;
|
||||
|
||||
again:
|
||||
base = g_atomic_pointer_get(&base_cached);
|
||||
if (G_UNLIKELY(!base)) {
|
||||
/* The base URI can be set via environment variable.
|
||||
* This is mainly for testing, it's not usually supposed to be configured.
|
||||
* Consider this private API! */
|
||||
base = g_getenv(NMCS_ENV_VARIABLE("NM_CLOUD_SETUP_GCP_HOST"));
|
||||
base = nmcs_utils_uri_complete_interned(base) ?: ("" NM_GCP_BASE);
|
||||
|
||||
if (!g_atomic_pointer_compare_and_exchange(&base_cached, NULL, base))
|
||||
goto again;
|
||||
}
|
||||
|
||||
return base;
|
||||
}
|
||||
|
||||
#define _gcp_uri_concat(...) \
|
||||
nmcs_utils_uri_build_concat(_gcp_base(), \
|
||||
"/computeMetadata" NM_GCP_API_VERSION "/instance", \
|
||||
__VA_ARGS__)
|
||||
#define _gcp_uri_interfaces(...) _gcp_uri_concat(NM_GCP_METADATA_URL_NET, ##__VA_ARGS__)
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
@ -73,7 +97,7 @@ detect(NMCSProvider *provider, GTask *task)
|
|||
http_client = nmcs_provider_get_http_client(provider);
|
||||
|
||||
nm_http_client_poll_req(http_client,
|
||||
(uri = _gcp_uri_concat("id")),
|
||||
(uri = _gcp_uri_concat("/id")),
|
||||
HTTP_TIMEOUT_MS,
|
||||
256 * 1024,
|
||||
7000,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue