text: /*
   * flavor.js: AWS Cloud Package
   *
   * (C) 2012 Nodejitsu Inc.
   *
   */
  
  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' ]);
  };