diff --git a/scripts/createImage b/scripts/createImage index 1f865f444..1e07046bd 100755 --- a/scripts/createImage +++ b/scripts/createImage @@ -55,9 +55,6 @@ if [[ "${provider}" == "digitalocean" ]]; then fi vps="${SCRIPT_DIR}/digitalocean.sh" -elif [[ "${provider}" == "vultr" ]]; then - export VULTR_TOKEN="${VULTR_TOKEN}" - vps="${SCRIPT_DIR}/vultr.js" else echo "Unknown provider : ${provider}" exit 1 diff --git a/scripts/vultr.js b/scripts/vultr.js deleted file mode 100755 index 8aa47bfc1..000000000 --- a/scripts/vultr.js +++ /dev/null @@ -1,194 +0,0 @@ -#!/usr/bin/env node - -'use strict'; - -require('colors'); - -var request = require('superagent-sync'), - sleep = require('sleep').sleep; - -function exit(error, result) { - if (error) console.error(error.message.red); - if (result) console.log(result); - - process.exit(error ? 1 : 0); -} - -var gApiToken = process.env.VULTR_TOKEN; -if (!gApiToken) exit(new Error('Script requires VULTR_TOKEN env to be set')); - -if (process.argv.length < 3) { - exit(new Error('Usage: vultr ')); -} - -function getSshKeyId(keyName, callback) { - var res = request.get('https://api.vultr.com/v1/sshkey/list') - .query({ api_key : gApiToken }) - .end(); - - if (res.statusCode !== 200) exit(new Error('Invalid response')); - - var allKeyIds = Object.keys(res.body); - for (var i = 0; i < allKeyIds.length; i++) { - if (keyName === res.body[allKeyIds[i]].name) return callback(null, allKeyIds[i]); // also SSHKEYID - } - - callback(new Error('key not found')); -} - -function create(keyId, name, callback) { - var regionId = 5; // LA (https://api.vultr.com/v1/regions/list) - var planId = 29; // 768MB RAM (https://api.vultr.com/v1/regions/list) - var osid = 191; // Ubuntu 15.04 x64 (see https://api.vultr.com/v1/os/list). 15.04 has some systemd issue - - var res = request.post('https://api.vultr.com/v1/server/create') - .query({ api_key : gApiToken }) - .type('form') - .send({ DCID: regionId, VPSPLANID: planId, OSID : osid, label: name, SSHKEYID: keyId }) - .end(); - - if (res.statusCode !== 200) return callback(new Error('Invalid response creating server')); - - return callback(null, res.body.SUBID); -} - -function getIp(id, callback) { - var res = request.get('https://api.vultr.com/v1/server/list') - .query({ api_key : gApiToken, SUBID: id }) - .end(); - - if (res.statusCode !== 200) return callback(new Error('Invalid statusCode querying IP')); - - var info = res.body; - if (!info) return callback(new Error('Invalid response querying IP')); - - if (info.power_status !== 'running' || info.server_state !== 'ok' || info.status !== 'active') return callback(new Error('Server is not up yet')); - - return callback(null, info.main_ip); -} - -function getId(name, callback) { - var res = request.get('https://api.vultr.com/v1/server/list') - .query({ api_key : gApiToken }) - .end(); - - if (res.statusCode !== 200) return callback(new Error('Invalid statusCode querying id')); - - var serverIds = Object.keys(res.body); - for (var i = 0; i < serverIds.length; i++) { - if (res.body[serverIds[i]].label === name) return callback(null, serverIds[0]); - } - - callback(new Error('no server with id found')); -} - -function powerOn(id, callback) { - var res = request.post('https://api.vultr.com/v1/server/start') - .query({ api_key : gApiToken }) - .type('form') - .send({ SUBID: id }) - .end(); - - if (res.statusCode !== 200) return callback(new Error('Invalid statusCode powering on')); - - callback(null); -} - -function powerOff(id, callback) { - var res = request.post('https://api.vultr.com/v1/server/halt') - .query({ api_key : gApiToken }) - .type('form') - .send({ SUBID: id }) - .end(); - - if (res.statusCode !== 200) return callback(new Error('Invalid statusCode powering off')); - - callback(null); -} - -function waitForSnapshot(id) { - var res = request.get('https://api.vultr.com/v1/snapshot/list') - .query({ api_key : gApiToken }) - .end(); - - if (res.statusCode !== 200) { - console.error('Invalid statusCode waiting for snapshot'); - return false; - } - - if (res.body[id].status === 'complete') return true; - - console.error('snapshot not complete : ' + res.body[id].status); - - return false; -} - -function snapshot(id, name, callback) { - var res = request.post('https://api.vultr.com/v1/snapshot/create') - .query({ api_key : gApiToken }) - .type('form') - .send({ SUBID: id, description: name }) - .end(); - - if (res.statusCode !== 200) return callback(new Error('Invalid statusCode powering off')); - - for (var i = 0; i < 200; i++) { - if (waitForSnapshot(res.body.SNAPSHOTID)) break; - sleep(10); - } - - callback(null, res.body.SNAPSHOTID); -} - -function destroy(id, callback) { - var res = request.post('https://api.vultr.com/v1/server/destroy') - .query({ api_key : gApiToken }) - .type('form') - .send({ SUBID: id }) - .end(); - - if (res.statusCode !== 200) return callback(new Error('Invalid statusCode powering off')); - - callback(); -} - -switch (process.argv[2]) { -case 'get_ssh_key_id': - getSshKeyId(process.argv[3], exit); - break; - -case 'create': - create(process.argv[3], process.argv[4], exit); - break; - -case 'get_ip': - getIp(process.argv[3], exit); - break; - -case 'get_id': - getId(process.argv[3], exit); - break; - -case 'power_on': - powerOn(process.argv[3], exit); - break; - -case 'power_off': - powerOff(process.argv[3], exit); - break; - -case 'snapshot': - snapshot(process.argv[3], process.argv[4], exit); - break; - -case 'destroy': - destroy(process.argv[3], exit); - break; - -case 'transfer_image_to_all_regions': - // nothing to do? - break; - -default: - exit(new Error('Unknown command:' + process.argv[2])); -}