@yawetse/pkgcloud
Version:
An infrastructure-as-a-service agnostic cloud library for node.js
55 lines (50 loc) • 1.64 kB
JavaScript
/*
* flavors.js: Implementation of Joyent Flavors Client.
*
* (C) 2012 Charlie Robbins, Ken Perkins, Ross Kukulinski & the Contributors.
*
*/
var pkgcloud = require('../../../../../lib/pkgcloud'),
base = require('../../../core/compute'),
compute = pkgcloud.providers.joyent.compute;
//
// ### function getFlavors (callback)
// #### @callback {function} f(err, flavors). `flavors` is an array that
// represents the flavors that are available to your account
//
// Lists all flavors available to your account.
//
exports.getFlavors = function getFlavors(callback) {
var self = this;
return this._request({
path: this.account + '/packages'
}, function (err, body, res) {
return err
? callback(err)
: callback(null, body.map(function (result) {
return new compute.Flavor(self, result);
}), res);
});
};
//
// ### function getFlavor (flavor, callback)
// #### @image {Flavor|String} Flavor ID or an Flavor
// #### @callback {function} f(err, flavor). `flavor` is an object that
// represents the flavor that was retrieved.
//
// Gets a specified flavor of Joyent DataSets using the provided details
// object.
//
exports.getFlavor = function getFlavor(flavor, callback) {
var self = this,
flavorId = flavor instanceof base.Flavor ? flavor.id : flavor;
// joyent decided to add spaces to their identifiers
flavorId = encodeURIComponent(flavorId);
return this._request({
path: this.account + '/packages/' + flavorId
}, function (err, body, res) {
return err
? callback(err)
: callback(null, new compute.Flavor(self, body), res);
});
};