Skip to content

Commit a9871bf

Browse files
authored
Stop filtering functions logs by region, remove dependency on googleapis (#94)
1 parent 661d95a commit a9871bf

File tree

4 files changed

+26
-50
lines changed

4 files changed

+26
-50
lines changed

commands/functions-log.js

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
var _ = require('lodash');
44
var RSVP = require('rsvp');
5-
6-
var api = require('../lib/api');
75
var Command = require('../lib/command');
86
var FirebaseError = require('../lib/error');
97
var gcp = require('../lib/gcp');
@@ -14,7 +12,7 @@ var scopes = require('../lib/scopes');
1412

1513
var POLL_INTERVAL = 3000; // 3 sec
1614

17-
function _pollLogs(authClient, projectId, filter, pos) {
15+
function _pollLogs(projectId, filter, pos) {
1816
return new RSVP.Promise(function(resolve, reject) {
1917
function poll() {
2018
var nf = filter;
@@ -25,7 +23,7 @@ function _pollLogs(authClient, projectId, filter, pos) {
2523
nf += ' insertId>"' + pos.insertId + '" ';
2624
}
2725

28-
gcp.cloudlogging.entries(authClient, projectId, nf, 1000, 'asc').then(function(entries) {
26+
gcp.cloudlogging.listEntries(projectId, nf, 1000, 'asc').then(function(entries) {
2927
for (var i = 0; i < _.size(entries); i++) {
3028
var entry = entries[i];
3129
logger.info(
@@ -52,8 +50,7 @@ module.exports = new Command('functions:log')
5250
.option('-f, --follow', 'stream logs from GCF cluster')
5351
.before(requireAccess, [scopes.OPENID, scopes.CLOUD_PLATFORM])
5452
.action(function(options) {
55-
var filter = 'resource.type="cloud_function" ' +
56-
'labels."cloudfunctions.googleapis.com/region"="us-central1" ';
53+
var filter = 'resource.type="cloud_function"';
5754
if (options.only) {
5855
var funcNames = options.only.split(',');
5956
var funcFilters = _.map(funcNames, function(funcName) {
@@ -62,13 +59,8 @@ module.exports = new Command('functions:log')
6259
filter += funcFilters.join('OR ');
6360
}
6461
var projectId = getProjectId(options);
65-
var authClient;
66-
return api.getAccessToken().then(function(result) {
67-
return gcp.createClient(result.access_token);
68-
}).then(function(client) {
69-
authClient = client;
70-
return gcp.cloudlogging.entries(authClient, projectId, filter, options.lines || 35, 'desc');
71-
}).then(function(entries) {
62+
return gcp.cloudlogging.listEntries(projectId, filter, options.lines || 35, 'desc')
63+
.then(function(entries) {
7264
for (var i = _.size(entries); i-- > 0;) {
7365
var entry = entries[i];
7466
logger.info(
@@ -86,7 +78,7 @@ module.exports = new Command('functions:log')
8678
insertId: lastEntry.insertId
8779
};
8880
}
89-
return _pollLogs(authClient, projectId, filter, pos);
81+
return _pollLogs(projectId, filter, pos);
9082
} else if (_.isEmpty(entries)) {
9183
logger.info('No log entries found.');
9284
}

lib/api.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ var api = {
7171
billingOrigin: utils.envOverride('FIREBASE_BILLING_URL', 'https://cloudbilling.googleapis.com'),
7272
clientId: utils.envOverride('FIREBASE_CLIENT_ID', '563584335869-fgrhgmd47bqnekij5i8b5pr03ho849e6.apps.googleusercontent.com'),
7373
clientSecret: utils.envOverride('FIREBASE_CLIENT_SECRET', 'j9iVZfS8kkCEFUPaAeJV0sAi'),
74+
cloudloggingOrigin: utils.envOverride('FIREBASE_CLOUDLOGGING_URL', 'https://logging.googleapis.com'),
7475
adminOrigin: utils.envOverride('FIREBASE_ADMIN_URL', 'https://admin.firebase.com'),
7576
authOrigin: utils.envOverride('FIREBASE_AUTH_URL', 'https://accounts.google.com'),
7677
consoleOrigin: utils.envOverride('FIREBASE_CONSOLE_URL', 'https://console.firebase.google.com'),

lib/gcp/cloudlogging.js

Lines changed: 19 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,25 @@
11
'use strict';
22

33
var RSVP = require('rsvp');
4-
var google = require('googleapis');
5-
var cloudlogging = google.logging('v2beta1');
6-
var logger = require('../logger');
4+
var api = require('../api');
5+
6+
var version = 'v2beta1';
7+
8+
var _listEntries = function(projectId, filter, pageSize, order) {
9+
return api.request('POST', '/' + version + '/entries:list', {
10+
auth: true,
11+
data: {
12+
projectIds: [projectId],
13+
filter: filter,
14+
orderBy: 'timestamp ' + order,
15+
pageSize: pageSize
16+
},
17+
origin: api.cloudloggingOrigin
18+
}).then(function(result) {
19+
return RSVP.resolve(result.body.entries);
20+
});
21+
};
722

823
module.exports = {
9-
entries: function(authClient, projectId, filter, pageSize, order) {
10-
return new RSVP.Promise(function(resolve, reject) {
11-
cloudlogging.entries.list({
12-
resource: {
13-
projectIds: [projectId],
14-
pageSize: pageSize,
15-
orderBy: 'timestamp ' + order,
16-
filter: filter
17-
},
18-
auth: authClient
19-
}, function(err, result) {
20-
if (err) {
21-
logger.warn('Failed to list log entries.', {
22-
error: err.message
23-
});
24-
return reject(err);
25-
}
26-
return resolve(result.entries || {});
27-
});
28-
});
29-
}
24+
listEntries: _listEntries
3025
};

lib/gcp/index.js

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,6 @@
11
'use strict';
22

3-
var RSVP = require('rsvp');
4-
var google = require('googleapis');
5-
63
module.exports = {
7-
createClient: function(accessToken) {
8-
return new RSVP.Promise(function(resolve) {
9-
var oauth2Client = new google.auth.OAuth2(/* not needed, since we have access_token */);
10-
oauth2Client.setCredentials({
11-
access_token: accessToken
12-
});
13-
return resolve(oauth2Client);
14-
});
15-
},
164
cloudlogging: require('./cloudlogging'),
175
cloudfunctions: require('./cloudfunctions'),
186
storage: require('./storage'),

0 commit comments

Comments
 (0)