Skip to content
This repository was archived by the owner on Apr 3, 2024. It is now read-only.

Commit e19e514

Browse files
greenkeeper[bot]ofrobots
authored andcommitted
Update gcp-metadata to the latest version 🚀 (#395)
* fix(package): update gcp-metadata to version 0.5.0 [email protected] is a semver major release. As it uses promises now, we can get rid of our promise wrappers. Simplify the tests – we don't need to test functionality provided by gcp-metadata.
1 parent 9c93e7f commit e19e514

File tree

3 files changed

+7
-177
lines changed

3 files changed

+7
-177
lines changed

‎package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
"coffee-script": "^1.9.3",
6969
"extend": "^3.0.1",
7070
"findit2": "^2.2.3",
71-
"gcp-metadata": "^0.4.0",
71+
"gcp-metadata": "^0.5.0",
7272
"lodash": "^4.12.0",
7373
"proxyquire": "^1.8.0",
7474
"semver": "^5.1.0",

‎src/agent/debuglet.ts‎

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,9 @@ const common: Common = require('@google-cloud/common');
2020
import * as crypto from 'crypto';
2121
import {EventEmitter} from 'events';
2222
import * as extend from 'extend';
23-
import * as dns from 'dns';
2423
import * as fs from 'fs';
2524

2625
import * as metadata from 'gcp-metadata';
27-
import * as request from 'request';
2826

2927
import * as _ from 'lodash';
3028
import * as path from 'path';
@@ -514,32 +512,16 @@ export class Debuglet extends EventEmitter {
514512
return project;
515513
}
516514

517-
static async runningOnGCP(): Promise<boolean> {
518-
const lookup = promisify(dns.lookup);
519-
try {
520-
await lookup('metadata.google.internal.');
521-
return true;
522-
} catch (err) {
523-
// Take failure to resolve metadata service to indicate that we are not
524-
// running on GCP.
525-
return false;
526-
}
515+
static runningOnGCP(): Promise<boolean> {
516+
return metadata.isAvailable();
527517
}
528518

529-
static getProjectIdFromMetadata() {
530-
return new Promise<string>((resolve, reject) => {
531-
metadata.project('project-id', (err, res, projectId) => {
532-
err ? reject(err) : resolve(projectId);
533-
});
534-
});
519+
static async getProjectIdFromMetadata() : Promise<string> {
520+
return (await metadata.project('project-id')).data as string;
535521
}
536522

537-
static getClusterNameFromMetadata() {
538-
return new Promise<string>((resolve, reject) => {
539-
metadata.instance('attributes/cluster-name', (err, res, clusterName) => {
540-
err ? reject(err) : resolve(clusterName);
541-
});
542-
});
523+
static async getClusterNameFromMetadata() : Promise<string> {
524+
return (await metadata.instance('attributes/cluster-name')).data as string;
543525
}
544526

545527
getSourceContext_(

‎test/test-debuglet.ts‎

Lines changed: 0 additions & 152 deletions
Original file line numberDiff line numberDiff line change
@@ -119,158 +119,6 @@ describe('Debuglet', () => {
119119
});
120120
});
121121

122-
describe('runningOnGCP', () => {
123-
// TODO: Make this more precise.
124-
let savedLookup: Function;
125-
before(() => {
126-
savedLookup = dns.lookup;
127-
});
128-
129-
after(() => {
130-
// TODO: Fix this cast to any that is caused by the fact that `lookup`
131-
// is a readonly property.
132-
(dns as {lookup: {}}).lookup = savedLookup;
133-
});
134-
135-
it('should resolve true if metadata service is resolveable', (done) => {
136-
// TODO: Fix this cast to any that is caused by the fact that `lookup`
137-
// is a readonly property.
138-
// TODO: Determine if the hostname parameter should be used.
139-
(dns as {lookup: {}}).lookup =
140-
(hostname: string|null,
141-
cb: (err: Error|null, param: {address: string, family: string}) =>
142-
void) => {
143-
setImmediate(() => {
144-
cb(null, {address: '700.800.900.fake', family: 'Addams'});
145-
});
146-
};
147-
148-
Debuglet.runningOnGCP().then((onGCP) => {
149-
assert.strictEqual(onGCP, true);
150-
done();
151-
});
152-
});
153-
154-
it('should resolve false if metadata service not resolveable', (done) => {
155-
// TODO: Fix this cast to any that is caused by the fact that `lookup`
156-
// is a readonly property.
157-
// TODO: Determine if the hostname parameter should be used.
158-
// TODO: Determine if these types are correct
159-
(dns as {lookup: {}}).lookup =
160-
(hostname: string, cb: (err: Error) => void) => {
161-
setImmediate(() => {
162-
cb(new Error('resolution error'));
163-
});
164-
};
165-
166-
Debuglet.runningOnGCP().then((onGCP) => {
167-
assert.strictEqual(onGCP, false);
168-
done();
169-
});
170-
});
171-
});
172-
173-
describe('getProjectIdFromMetadata', () => {
174-
let savedProject: Function;
175-
before(() => {
176-
savedProject = metadata.project;
177-
});
178-
after(() => {
179-
metadata.project = savedProject;
180-
});
181-
182-
it('should return project retrived from metadata', (done) => {
183-
const FAKE_PROJECT_ID = 'fake-project-id-from-metadata';
184-
// TODO: Determine if the options to Debug should be optional so that
185-
// new Debug() can be used instead of new Debug({}).
186-
// TODO: This is never used. Determine if it should be used.
187-
// const debug = new Debug({});
188-
// TODO: This is never used. Determine if it should be used.
189-
// const debuglet = new Debuglet(debug, defaultConfig);
190-
191-
// TODO: Determine if the path parameter should be used.
192-
// TODO: Determine if these types are correct
193-
metadata.project = (instancePath: string, cb: MetadataCallback) => {
194-
setImmediate(() => {
195-
cb(null, {}, FAKE_PROJECT_ID);
196-
});
197-
};
198-
199-
Debuglet.getProjectIdFromMetadata().then((projectId) => {
200-
assert.strictEqual(projectId, FAKE_PROJECT_ID);
201-
done();
202-
});
203-
});
204-
205-
it('should return null on error', (done) => {
206-
// TODO: This is never used. Determine if it should be used.
207-
// const debug = new Debug({});
208-
// TODO: This is never used. Determine if it should be used.
209-
// const debuglet = new Debuglet(debug, defaultConfig);
210-
211-
// TODO: Determine if the path parameter should be used.
212-
metadata.project = (instancePath: string, cb: MetadataCallback) => {
213-
setImmediate(() => {
214-
cb(new Error());
215-
});
216-
};
217-
218-
// TODO: Determine if the err parameter should be used.
219-
Debuglet.getProjectIdFromMetadata().catch((err) => {
220-
done();
221-
});
222-
});
223-
});
224-
225-
describe('getClusterNameFromMetadata', () => {
226-
let savedInstance: Function;
227-
before(() => {
228-
savedInstance = metadata.instance;
229-
});
230-
after(() => {
231-
metadata.instance = savedInstance;
232-
});
233-
234-
it('should return project retrived from metadata', (done) => {
235-
const FAKE_CLUSTER_NAME = 'fake-cluster-name-from-metadata';
236-
// TODO: This is never used. Determine if it should be used.
237-
// const debug = new Debug({});
238-
// TODO: This is never used. Determine if it should be used.
239-
// const debuglet = new Debuglet(debug, defaultConfig);
240-
241-
// TODO: Determine if the path parameter should be used.
242-
metadata.instance = (instancePath: string, cb: MetadataCallback) => {
243-
setImmediate(() => {
244-
cb(null, {}, FAKE_CLUSTER_NAME);
245-
});
246-
};
247-
248-
Debuglet.getClusterNameFromMetadata().then((clusterName) => {
249-
assert.strictEqual(clusterName, FAKE_CLUSTER_NAME);
250-
done();
251-
});
252-
});
253-
254-
it('should return null on error', (done) => {
255-
// TODO: This is never used. Determine if it should be used.
256-
// const debug = new Debug({});
257-
// TODO: This is never used. Determine if it should be used.
258-
// const debuglet = new Debuglet(debug, defaultConfig);
259-
260-
// TODO: Determine if the path parameter should be used.
261-
metadata.instance = (instancePath: string, cb: MetadataCallback) => {
262-
setImmediate(() => {
263-
cb(new Error());
264-
});
265-
};
266-
267-
// TODO: Determine if the err parameter should be used.
268-
Debuglet.getClusterNameFromMetadata().catch((err) => {
269-
done();
270-
});
271-
});
272-
});
273-
274122
describe('getProjectId', () => {
275123
let savedGetProjectIdFromMetadata: () => Promise<string>;
276124

0 commit comments

Comments
 (0)