From 2c40254f972e00dd9c7ea1036d046bceecafbfba Mon Sep 17 00:00:00 2001 From: Mayur Kale Date: Tue, 18 Feb 2020 19:30:20 -0800 Subject: [PATCH] fix(resources): GKE pod name label (#728) --- .../src/resource-utils.ts | 15 +++------------ .../test/test-detect-resource.ts | 16 ++++++---------- 2 files changed, 9 insertions(+), 22 deletions(-) diff --git a/packages/opencensus-resource-util/src/resource-utils.ts b/packages/opencensus-resource-util/src/resource-utils.ts index 3309e4be6..dce60a70d 100644 --- a/packages/opencensus-resource-util/src/resource-utils.ts +++ b/packages/opencensus-resource-util/src/resource-utils.ts @@ -104,18 +104,18 @@ export async function getComputerEngineResource(): Promise { /** Returns Resource for GCP GKE container. */ export async function getKubernetesEngineResource(): Promise { if (Object.keys(gkeResourceLabels).length === 0) { - const [projectId, zoneId, clusterName, hostname] = await Promise.all([ + const [projectId, zoneId, clusterName] = await Promise.all([ getProjectId(), getZone(), getClusterName(), - getHostname(), ]); gkeResourceLabels[CLOUD_RESOURCE.ACCOUNT_ID_KEY] = projectId; gkeResourceLabels[CLOUD_RESOURCE.ZONE_KEY] = zoneId; gkeResourceLabels[K8S_RESOURCE.CLUSTER_NAME_KEY] = clusterName; gkeResourceLabels[K8S_RESOURCE.NAMESPACE_NAME_KEY] = process.env.NAMESPACE || ''; - gkeResourceLabels[K8S_RESOURCE.POD_NAME_KEY] = hostname; + gkeResourceLabels[K8S_RESOURCE.POD_NAME_KEY] = + process.env.HOSTNAME || os.hostname(); gkeResourceLabels[CONTAINER_RESOURCE.NAME_KEY] = process.env.CONTAINER_NAME || ''; } @@ -206,15 +206,6 @@ async function getClusterName() { } } -/** Gets hostname from GCP instance metadata. */ -async function getHostname() { - try { - return await gcpMetadata.instance('hostname'); - } catch (ignore) { - return os.hostname(); - } -} - export function clear() { resourceType = undefined; gkeResourceLabels = {}; diff --git a/packages/opencensus-resource-util/test/test-detect-resource.ts b/packages/opencensus-resource-util/test/test-detect-resource.ts index 3118ee239..1fd121952 100644 --- a/packages/opencensus-resource-util/test/test-detect-resource.ts +++ b/packages/opencensus-resource-util/test/test-detect-resource.ts @@ -40,7 +40,6 @@ const INSTANCE_PATH = BASE_PATH + '/instance'; const INSTANCE_ID_PATH = BASE_PATH + '/instance/id'; const PROJECT_ID_PATH = BASE_PATH + '/project/project-id'; const ZONE_PATH = BASE_PATH + '/instance/zone'; -const HOSTNAME_PATH = BASE_PATH + '/instance/hostname'; const CLUSTER_NAME_PATH = BASE_PATH + '/instance/attributes/cluster-name'; const mockedAwsResponse = { instanceId: 'my-instance-id', @@ -65,20 +64,20 @@ describe('detectResource', () => { delete process.env.CONTAINER_NAME; delete process.env.OC_RESOURCE_TYPE; delete process.env.OC_RESOURCE_LABELS; + delete process.env.HOSTNAME; CoreResource.setup(); }); it('should return GCP_GKE_CONTAINER resource when KUBERNETES_SERVICE_HOST is set', async () => { process.env.KUBERNETES_SERVICE_HOST = 'my-host'; + process.env.HOSTNAME = 'my-hostname'; const scope = nock(HOST_ADDRESS) .get(CLUSTER_NAME_PATH) .reply(200, () => 'my-cluster', HEADERS) .get(PROJECT_ID_PATH) .reply(200, () => 'my-project-id', HEADERS) .get(ZONE_PATH) - .reply(200, () => 'project/zone/my-zone', HEADERS) - .get(HOSTNAME_PATH) - .reply(200, () => 'my-hostname', HEADERS); + .reply(200, () => 'project/zone/my-zone', HEADERS); const { type, labels } = await resource.detectResource(); scope.done(); @@ -95,6 +94,7 @@ describe('detectResource', () => { it('should return GCP_GKE_CONTAINER resource when KUBERNETES_SERVICE_HOST, NAMESPACE and CONTAINER_NAME is set', async () => { process.env.KUBERNETES_SERVICE_HOST = 'my-host'; process.env.NAMESPACE = 'my-namespace'; + process.env.HOSTNAME = 'my-hostname'; process.env.CONTAINER_NAME = 'my-container-name'; const scope = nock(HOST_ADDRESS) .get(CLUSTER_NAME_PATH) @@ -102,9 +102,7 @@ describe('detectResource', () => { .get(PROJECT_ID_PATH) .reply(200, () => 'my-project-id', HEADERS) .get(ZONE_PATH) - .reply(200, () => 'project/zone/my-zone', HEADERS) - .get(HOSTNAME_PATH) - .reply(200, () => 'my-hostname', HEADERS); + .reply(200, () => 'project/zone/my-zone', HEADERS); const { type, labels } = await resource.detectResource(); scope.done(); @@ -139,9 +137,7 @@ describe('detectResource', () => { .get(PROJECT_ID_PATH) .reply(200, () => 'my-project-id', HEADERS) .get(ZONE_PATH) - .reply(200, () => 'project/zone/my-zone', HEADERS) - .get(HOSTNAME_PATH) - .reply(200, () => 'my-hostname', HEADERS); + .reply(200, () => 'project/zone/my-zone', HEADERS); const { type, labels } = await resource.detectResource(); scope.done();