move provider into sysinfo

this is ideally "auto-detectable" runtime information
This commit is contained in:
Girish Ramakrishnan
2019-07-26 07:25:40 -07:00
parent 7fe66aa7fa
commit 9e7e9d66bf
11 changed files with 34 additions and 21 deletions

View File

@@ -5,7 +5,8 @@ exports = module.exports = {
getPublicIp: getPublicIp,
hasIPv6: hasIPv6
hasIPv6: hasIPv6,
provider: provider
};
var assert = require('assert'),
@@ -13,7 +14,9 @@ var assert = require('assert'),
ec2 = require('./sysinfo/ec2.js'),
fs = require('fs'),
generic = require('./sysinfo/generic.js'),
paths = require('./paths.js'),
scaleway = require('./sysinfo/scaleway.js'),
safe = require('safetydance'),
util = require('util');
function SysInfoError(reason, errorOrMessage) {
@@ -38,10 +41,22 @@ util.inherits(SysInfoError, Error);
SysInfoError.INTERNAL_ERROR = 'Internal Error';
SysInfoError.EXTERNAL_ERROR = 'External Error';
let gProvider = null;
function provider() {
if (gProvider) return gProvider;
gProvider = safe.fs.readFileSync(paths.PROVIDER_FILE, 'utf8');
if (!gProvider) return gProvider = 'generic';
return gProvider;
}
function getApi(callback) {
assert.strictEqual(typeof callback, 'function');
switch (config.provider()) {
switch (provider()) {
case 'ec2': return callback(null, ec2);
case 'lightsail': return callback(null, ec2);
case 'ami': return callback(null, ec2);