UNPKG

@yawetse/pkgcloud

Version:

An infrastructure-as-a-service agnostic cloud library for node.js

78 lines (67 loc) 3.33 kB
/* * flavor.js: AWS Cloud Package * * (C) 2012 Charlie Robbins, Ken Perkins, Ross Kukulinski & the Contributors. * */ var util = require('util'), base = require('../../core/compute/flavor'), _ = require('underscore'); var Flavor = exports.Flavor = function Flavor(client, details) { base.Flavor.call(this, client, details); }; util.inherits(Flavor, base.Flavor); Flavor.options = { // Previous Generation Instance Types 'm1.small': { id: 'm1.small', ram: 1.7 * 1024, disk: 160 }, 'm1.medium': { id: 'm1.medium', ram: 3.75 * 1024, disk: 410 }, 'm1.large': { id: 'm1.large', ram: 7.5 * 1024, disk: 2 * 420 }, 'm1.xlarge': { id: 'm1.xlarge', ram: 15 * 1024, disk: 4 * 420 }, 'c1.medium': { id: 'c1.medium', ram: 1.7 * 1024, disk: 350 }, 'c1.xlarge': { id: 'c1.xlarge', ram: 7 * 1024, disk: 4 * 420 }, 'cc2.8xlarge': { id: 'cc2.8xlarge', ram: 60.5 * 1024, disk: 4 * 840 }, 'm2.xlarge': { id: 'm2.xlarge', ram: 17.1 * 1024, disk: 420 }, 'm2.2xlarge': { id: 'm2.2xlarge', ram: 34.2 * 1024, disk: 850 }, 'm2.4xlarge': { id: 'm2.4xlarge', ram: 68.4 * 1024, disk: 2 * 840 }, 'cr1.8xlarge': { id: 'cr1.8xlarge', ram: 244 * 1024, disk: 2 * 120 }, 'hi1.4xlarge': { id: 'hi1.4xlarge', ram: 60.5 * 1024, disk: 2 * 1024 }, 'cg1.4xlarge': { id: 'cg1.4xlarge', ram: 22.5 * 1024, disk: 2 * 840 }, 't1.micro': { id: 't1.micro', ram: 613, disk: 0}, // Current Generation Instance Types 't2.micro': { id: 't2.micro', ram: 1024, disk: 0 }, 't2.small': { id: 't2.small', ram: 2 * 1024, disk: 0 }, 't2.medium': { id: 't2.medium', ram: 4 * 1024, disk: 0 }, 'm3.medium': { id: 'm3.medium', ram: 3.75 * 1024, disk: 4 }, 'm3.large': { id: 'm3.large', ram: 7.5 * 1024, disk: 32 }, 'm3.xlarge': { id: 'm3.xlarge', ram: 15 * 1024, disk: 2 * 40 }, 'm3.2xlarge': { id: 'm3.2xlarge', ram: 30 * 1024, disk: 2 * 80 }, 'c3.large': { id: 'c3.large', ram: 3.75 * 1024, disk: 2 * 16 }, 'c3.xlarge': { id: 'c3.xlarge', ram: 7.5 * 1024, disk: 2 * 40 }, 'c3.2xlarge': { id: 'c3.2xlarge', ram: 15 * 1024, disk: 2 * 80 }, 'c3.4xlarge': { id: 'c3.4xlarge', ram: 30 * 1024, disk: 2 * 160 }, 'c3.8xlarge': { id: 'c3.8xlarge', ram: 60 * 1024, disk: 2 * 320 }, 'g2.2xlarge': { id: 'g2.2xlarge', ram: 15 * 1024, disk: 60 }, 'r3.large': { id: 'r3.large', ram: 15.25 * 1024, disk: 32 }, 'r3.xlarge': { id: 'r3.xlarge', ram: 30.5 * 1024, disk: 80 }, 'r3.2xlarge': { id: 'r3.2xlarge', ram: 61 * 1024, disk: 160 }, 'r3.4xlarge': { id: 'r3.4xlarge', ram: 122 * 1024, disk: 320 }, 'r3.8xlarge': { id: 'r3.8xlarge', ram: 244 * 1024, disk: 2 * 320 }, 'i2.xlarge': { id: 'i2.xlarge', ram: 30.5 * 1024, disk: 800 }, 'i2.2xlarge': { id: 'i2.2xlarge', ram: 61 * 1024, disk: 2 * 800 }, 'i2.4xlarge': { id: 'i2.4xlarge', ram: 122 * 1024, disk: 4 * 800 }, 'i2.8xlarge': { id: 'i2.8xlarge', ram: 244 * 1024, disk: 8 * 800 }, 'hs1.8xlarge': { id: 'hs1.8xlarge', ram: 117 * 1024, disk: 24 * 2000 } }; Flavor.prototype._setProperties = function (details) { var id = details.name || 'm1.small'; if (!Flavor.options[id]) { throw new TypeError('No such AWS Flavor: ' + id); } this.id = id; this.name = id; this.ram = Flavor.options[id].ram; this.disk = Flavor.options[id].disk; }; Flavor.prototype.toJSON = function () { return _.pick(this, ['id', 'name', 'ram', 'disk' ]); };