UNPKG

@xompass/pkgcloud

Version:

A provider agnostic cloud library for Node.js

190 lines (174 loc) 5.08 kB
/** * Created by Ali Bazlamit on 8/10/2017. */ var base = require('../../../core/compute'), pkgcloud = require('../../../../../lib/pkgcloud'), errs = require('errs'), oneandone = require('liboneandone'), compute = pkgcloud.providers.oneandone.compute; // // ### function getVersion (callback) // #### @callback {function} f(err, version). // // Gets the current API version // exports.getVersion = function getVersion(callback) { callback(null, '1.7'); }; // // ### function getServers (callback) // #### @callback {function} f(err, servers). `servers` is an array that // represents the servers that are available to your account // // Lists all servers available to your account. // exports.getServers = function getServers(options, callback) { if (typeof options === 'function') { callback = options; options = {}; } var self = this; oneandone.listServers(function (error, response, results) { if (error) { callback(error); return; } callback(null, JSON.parse(results).map(function (server) { return new compute.Server(self, server); })); }); }; // // ### function createServer (options, callback) // #### @opts {Object} **Optional** options // #### @name {String} **Optional** the name of server // #### @image {String|Image} the image ID to use // #### @flavor {String|Flavor} **Optional** flavor to use for this image // #### @callback {Function} f(err, server). // // Creates a server with the specified options. The flavor // id of the options can be ids of Hardware Flavors // exports.createServer = function createServer(options, callback) { if (typeof options === 'function') { callback = options; options = {}; } var self = this, ImageId, FlavorId, hardware = {}; options = options || {}; // no args if (!options.image) { return errs.handle( errs.create({ message: 'options.image is a required argument.' }), callback ); } ImageId = options.image instanceof base.Image ? options.image.id : options.image; if (options.flavor) { FlavorId = options.flavor instanceof base.Flavor ? options.flavor.id : options.flavor; hardware = { 'fixed_instance_size_id': FlavorId }; } else { return errs.handle( errs.create({ message: 'options.flavor: is required' }), callback ); } var serverData = { 'name': options.name, 'hardware': hardware, 'appliance_id': ImageId, 'datacenter_id': options.location }; oneandone.createServer(serverData, function (error, response, body) { if (error) { callback(error); return; } if (response.statusCode != 202) { callback(JSON.parse(body)); return; } var _server = JSON.parse(body); var server = new compute.Server(self, _server); callback(null, server); }); }; // // ### function destroyServer(server, callback) // #### @server {Server|String} Server id or a server // #### @callback {Function} f(err, serverId). // // Destroy a server in OAO. // exports.destroyServer = function destroyServer(server, callback) { var serverId = server instanceof base.Server ? server.id : server; oneandone.deleteServer(serverId, false, function (error, response, body) { if (error) { callback(error); return; } if (response.statusCode != 202) { callback(JSON.parse(body)); return; } callback(null, JSON.parse(body)); }); }; // // ### function getServer(server, callback) // #### @server {Server|String} Server id or a server // #### @callback {Function} f(err, serverId). // // Gets a server in OAO. // exports.getServer = function getServer(server, callback) { var self = this, serverId = server instanceof base.Server ? server.id : server; oneandone.getServer(serverId, function (error, response, body) { if (error) { return callback(error); } var srv = JSON.parse(body); callback(null, new compute.Server(self, srv)); } ); }; // // ### function rebootServer (server, options, callback) // #### @server {Server|String} The server to reboot // #### @callback {Function} f(err, server). // // Reboots a server // exports.rebootServer = function rebootServer(server, callback) { var self = this, serverId = server instanceof base.Server ? server.id : server; var updateData = { 'action': oneandone.ServerUpdateAction.REBOOT, 'method': oneandone.ServerUpdateMethod.SOFTWARE }; oneandone.updateServerStatus(serverId, updateData, function (error, response, body) { if (error) { return callback(error); } if (response.statusCode != 202) { callback(JSON.parse(body)); return; } var _server = JSON.parse(body); var server = new compute.Server(self, _server); callback(null, server); }); };