mirror of https://github.com/rancher/ui.git
82 lines
1.8 KiB
JavaScript
82 lines
1.8 KiB
JavaScript
import { alias } from '@ember/object/computed';
|
|
import Component from '@ember/component';
|
|
import NodeDriver from 'shared/mixins/node-driver';
|
|
import Flavors from 'ui/utils/rackspace-choices';
|
|
import layout from './template';
|
|
|
|
let flavorChoices = [];
|
|
|
|
Flavors.forEach(function(flavor) {
|
|
let parts = flavor.name.match(/^(\d+)\s*([a-z]+)\s*(.*)$/i);
|
|
if ( parts ) {
|
|
let sizeMb = parseInt(parts[1],10);
|
|
|
|
if ( parts[2].toLowerCase() === 'gb' ) {
|
|
sizeMb *= 1024;
|
|
}
|
|
|
|
flavorChoices.push({
|
|
group : parts[3],
|
|
label : parts[3] + ' : ' + parts[1] + ' ' + parts[2],
|
|
value : flavor.id,
|
|
sizeMb : sizeMb
|
|
});
|
|
}
|
|
});
|
|
|
|
flavorChoices.sort(function(a,b) {
|
|
let ag = a.group;
|
|
let bg = b.group;
|
|
let as = a.sizeMb;
|
|
let bs = b.sizeMb;
|
|
|
|
if ( ag < bg ) {
|
|
return -1;
|
|
} else if ( ag > bg ) {
|
|
return 1;
|
|
} else {
|
|
return as - bs;
|
|
}
|
|
});
|
|
|
|
export default Component.extend(NodeDriver, {
|
|
layout,
|
|
driverName : 'rackspace',
|
|
config : alias('model.rackspaceConfig'),
|
|
flavorChoices : flavorChoices,
|
|
regionChoices : [
|
|
{label: 'Dallas (DFW)', value: 'DFW'},
|
|
{label: 'Chicago (ORD)', value: 'ORD'},
|
|
{label: 'Hong Kong (HKG)', value: 'HKG'},
|
|
{label: 'London (LON)', value: 'LON'},
|
|
{label: 'Northern Virginia (IAD)', value: 'IAD'},
|
|
{label: 'Sydney (SYD)', value: 'SYD'},
|
|
],
|
|
|
|
bootstrap: function() {
|
|
let store = this.get('globalStore');
|
|
|
|
let config = store.createRecord({
|
|
type: 'rackspaceConfig',
|
|
username: '',
|
|
apiKey: '',
|
|
region: 'DFW',
|
|
flavorId: 'general1-1',
|
|
});
|
|
|
|
this.set('model.rackspaceConfig', config);
|
|
},
|
|
|
|
validate() {
|
|
let errors = [];
|
|
|
|
if ( !this.get('model.name') ) {
|
|
errors.push('Name is required');
|
|
}
|
|
|
|
this.set('errors', errors);
|
|
return errors.length === 0;
|
|
},
|
|
|
|
});
|