98 lines
2.1 KiB
JavaScript
98 lines
2.1 KiB
JavaScript
'use strict';
|
|
|
|
const Triton = require('triton');
|
|
const Url = require('url');
|
|
const Path = require('path');
|
|
const Fs = require('fs');
|
|
|
|
const Data = require('./lib/data');
|
|
|
|
const {
|
|
DOCKER_HOST,
|
|
DOCKER_CERT_PATH,
|
|
SDC_URL,
|
|
SDC_ACCOUNT,
|
|
SDC_KEY_ID
|
|
} = process.env;
|
|
|
|
const DOCKER_HOST_URL = DOCKER_HOST ? Url.parse(DOCKER_HOST) : {};
|
|
|
|
const settings = {
|
|
db: {
|
|
host: process.env.RETHINK_HOST || 'localhost'
|
|
},
|
|
docker: {
|
|
protocol: 'https',
|
|
host: DOCKER_HOST_URL.hostname,
|
|
port: DOCKER_HOST_URL.port,
|
|
ca: DOCKER_CERT_PATH
|
|
? Fs.readFileSync(Path.join(DOCKER_CERT_PATH, 'ca.pem'))
|
|
: undefined,
|
|
cert: DOCKER_CERT_PATH
|
|
? Fs.readFileSync(Path.join(DOCKER_CERT_PATH, 'cert.pem'))
|
|
: undefined,
|
|
key: DOCKER_CERT_PATH
|
|
? Fs.readFileSync(Path.join(DOCKER_CERT_PATH, 'key.pem'))
|
|
: undefined
|
|
},
|
|
triton: {
|
|
url: SDC_URL,
|
|
account: SDC_ACCOUNT,
|
|
keyId: SDC_KEY_ID
|
|
}
|
|
};
|
|
|
|
const ifError = function(err) {
|
|
if (err) {
|
|
console.error(err);
|
|
process.exit(1);
|
|
}
|
|
};
|
|
|
|
const bootstrap = function() {
|
|
const data = new Data(settings);
|
|
const region = process.env.TRITON_DC || 'us-sw-1';
|
|
|
|
data.connect(err => {
|
|
ifError(err);
|
|
|
|
data.createDatacenter({ region, name: region }, (err, datacenter) => {
|
|
ifError(err);
|
|
|
|
Triton.createClient(
|
|
{
|
|
profile: settings.triton
|
|
},
|
|
(err, { cloudapi }) => {
|
|
ifError(err);
|
|
|
|
cloudapi.getAccount((err, { firstName, lastName, email, login }) => {
|
|
ifError(err);
|
|
|
|
data.createUser(
|
|
{ firstName, lastName, email, login },
|
|
(err, user) => {
|
|
ifError(err);
|
|
|
|
data.createPortal(
|
|
{
|
|
user,
|
|
datacenter
|
|
},
|
|
(err, portal) => {
|
|
ifError(err);
|
|
console.log('data bootstrapped');
|
|
process.exit(0);
|
|
}
|
|
);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
);
|
|
});
|
|
});
|
|
};
|
|
|
|
bootstrap();
|