docker.js and services.js: async'ify

This commit is contained in:
Girish Ramakrishnan
2021-08-25 19:41:46 -07:00
parent 1cc11fece8
commit 42774eac8c
24 changed files with 1618 additions and 2130 deletions

View File

@@ -16,9 +16,9 @@ const assert = require('assert'),
HttpSuccess = require('connect-lastmile').HttpSuccess,
paths = require('../paths.js'),
provision = require('../provision.js'),
request = require('request'),
safe = require('safetydance'),
settings = require('../settings.js');
settings = require('../settings.js'),
superagent = require('superagent');
function setupTokenAuth(req, res, next) {
assert.strictEqual(typeof req.body, 'object');
@@ -32,20 +32,19 @@ function setupTokenAuth(req, res, next) {
return next();
}
function providerTokenAuth(req, res, next) {
async function providerTokenAuth(req, res, next) {
assert.strictEqual(typeof req.body, 'object');
if (settings.provider() === 'ami') {
if (typeof req.body.providerToken !== 'string' || !req.body.providerToken) return next(new HttpError(400, 'providerToken must be a non empty string'));
request.get('http://169.254.169.254/latest/meta-data/instance-id', { timeout: 30 * 1000 }, function (error, result) {
if (error) return next(new HttpError(422, `Network error getting EC2 metadata: ${error.message}`));
if (result.statusCode !== 200) return next(new HttpError(422, `Unable to get EC2 meta data. statusCode: ${result.statusCode}`));
const [error, response] = await superagent.get('http://169.254.169.254/latest/meta-data/instance-id').timeout(30 * 1000).ok(() => true);
if (error) return next(new HttpError(422, `Network error getting EC2 metadata: ${error.message}`));
if (response.statusCode !== 200) return next(new HttpError(422, `Unable to get EC2 meta data. statusCode: ${response.status}`));
if (result.body !== req.body.providerToken) return next(new HttpError(422, 'Instance ID does not match'));
if (response.body !== req.body.providerToken) return next(new HttpError(422, 'Instance ID does not match'));
next();
});
next();
} else {
next();
}