mirror of https://github.com/rancher/ui.git
move node drivers to engine
This commit is contained in:
parent
68788a8209
commit
dfb90c4796
38
app/app.js
38
app/app.js
|
|
@ -33,6 +33,44 @@ const App = Application.extend({
|
|||
}
|
||||
}
|
||||
},
|
||||
nodes: {
|
||||
dependencies: {
|
||||
services: [
|
||||
'app',
|
||||
'access',
|
||||
'clusterStore',
|
||||
'catalog',
|
||||
'endpoint',
|
||||
'azureAd',
|
||||
'github',
|
||||
'globalStore',
|
||||
'intl',
|
||||
'modal',
|
||||
'router',
|
||||
'resource-actions',
|
||||
'scope',
|
||||
'session',
|
||||
'settings',
|
||||
'store',
|
||||
'tooltip',
|
||||
'user-language',
|
||||
'user-theme',
|
||||
],
|
||||
externalRoutes: {
|
||||
index: 'index',
|
||||
failWhale: 'failWhale',
|
||||
authenticated: 'authenticated',
|
||||
'authenticated.cluster': 'authenticated.cluster',
|
||||
'authenticated.cluster.projects': 'authenticated.cluster.projects',
|
||||
'authenticated.project': 'authenticated.project',
|
||||
'authenticated.prefs': 'authenticated.prefs',
|
||||
'authenticated.cluster.nodes': 'authenticated.cluster.nodes',
|
||||
'authenticated.cluster.nodes.node': 'authenticated.cluster.nodes.node',
|
||||
'authenticated.cluster.security.members.index': 'authenticated.cluster.security.members.index',
|
||||
'logout': 'logout'
|
||||
}
|
||||
}
|
||||
},
|
||||
globalAdmin: {
|
||||
dependencies: {
|
||||
services: [
|
||||
|
|
|
|||
|
|
@ -1,46 +0,0 @@
|
|||
import { inject as service } from '@ember/service';
|
||||
import Controller from '@ember/controller';
|
||||
import { get } from '@ember/object';
|
||||
|
||||
export default Controller.extend({
|
||||
modalService: service('modal'),
|
||||
|
||||
sortBy: 'name',
|
||||
headers: [
|
||||
{
|
||||
name: 'state',
|
||||
sort: ['sortState', 'name', 'id'],
|
||||
translationKey: 'nodeTemplatesPage.table.state',
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
name: 'name',
|
||||
sort: ['name', 'id'],
|
||||
translationKey: 'nodeTemplatesPage.table.name',
|
||||
},
|
||||
{
|
||||
name: 'provider',
|
||||
sort: ['displayProvider', 'name', 'id'],
|
||||
translationKey: 'nodeTemplatesPage.table.provider',
|
||||
width: 150,
|
||||
},
|
||||
{
|
||||
name: 'location',
|
||||
sort: ['displayLocation', 'name', 'id'],
|
||||
translationKey: 'nodeTemplatesPage.table.location',
|
||||
width: 150,
|
||||
},
|
||||
{
|
||||
name: 'size',
|
||||
sort: ['displaySize', 'name', 'id'],
|
||||
translationKey: 'nodeTemplatesPage.table.size',
|
||||
width: 150,
|
||||
},
|
||||
],
|
||||
|
||||
actions: {
|
||||
newTemplate() {
|
||||
get(this, 'modalService').toggleModal('modal-edit-node-template');
|
||||
},
|
||||
},
|
||||
});
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
import { hash } from 'rsvp';
|
||||
import Route from '@ember/routing/route';
|
||||
|
||||
export default Route.extend({
|
||||
model() {
|
||||
return hash({ nodeTemplates: this.get('globalStore').findAll('nodeTemplate'), });
|
||||
},
|
||||
});
|
||||
|
|
@ -282,7 +282,7 @@ export default Route.extend(Preload, {
|
|||
this._gotoRoute('authenticated.prefs', 'global');
|
||||
},
|
||||
gotoT() {
|
||||
this._gotoRoute('authenticated.node-templates', 'global');
|
||||
this._gotoRoute('nodes.node-templates', 'global');
|
||||
},
|
||||
|
||||
// Cluster or Project
|
||||
|
|
|
|||
|
|
@ -132,7 +132,7 @@
|
|||
|
||||
<li role="separator" class="divider"></li>
|
||||
<li>{{#link-to "authenticated.apikeys"}}{{t 'nav.api.link'}} <i class="icon icon-key icon-fw"/>{{/link-to}}</li>
|
||||
<li>{{#link-to "authenticated.node-templates"}}{{t 'nav.nodeTemplates.link'}} <i class="icon icon-host icon-fw"/>{{/link-to}}</li>
|
||||
<li>{{#link-to "nodes.node-templates"}}{{t 'nav.nodeTemplates.link'}} <i class="icon icon-host icon-fw"/>{{/link-to}}</li>
|
||||
<li role="separator" class="divider"></li>
|
||||
<li>{{#link-to "authenticated.prefs"}}{{t 'nav.userPreferences.link'}} <i class="icon icon-gear icon-fw"/>{{/link-to}}</li>
|
||||
<li role="separator" class="divider"></li>
|
||||
|
|
|
|||
|
|
@ -245,9 +245,9 @@ const rootNav = [
|
|||
},
|
||||
{
|
||||
scope: 'global',
|
||||
id: 'global-node-drivers',
|
||||
id: 'nodes-node-drivers',
|
||||
localizedLabel: 'nav.admin.nodeDrivers',
|
||||
route: 'global-admin.node-drivers',
|
||||
route: 'nodes.node-drivers',
|
||||
resource: ['nodedriver'],
|
||||
resourceScope: 'global',
|
||||
},
|
||||
|
|
|
|||
|
|
@ -37,6 +37,10 @@ Router.map(function() {
|
|||
this.route('update-critical-settings', { path: '/update-setting' });
|
||||
|
||||
this.route('authenticated', { path: '/' }, function() {
|
||||
this.mount('nodes', {
|
||||
path: '/n',
|
||||
resetNamespace: true
|
||||
});
|
||||
// Global
|
||||
this.mount('global-admin', {
|
||||
path: '/g',
|
||||
|
|
@ -45,7 +49,7 @@ Router.map(function() {
|
|||
this.route('dummy-dev', { path: '/dev' });
|
||||
|
||||
this.route('apikeys');
|
||||
this.route('node-templates');
|
||||
// this.route('node-templates');
|
||||
this.route('prefs');
|
||||
|
||||
// Per-Cluster
|
||||
|
|
|
|||
|
|
@ -1,4 +0,0 @@
|
|||
import Ember from 'ember';
|
||||
|
||||
export default Ember.Route.extend({
|
||||
});
|
||||
|
|
@ -1 +0,0 @@
|
|||
{{outlet}}
|
||||
|
|
@ -1 +0,0 @@
|
|||
module.exports = require('../../node_modules/ember-cli-legacy-blueprints/blueprints/route/index.js');
|
||||
|
|
@ -15,7 +15,7 @@ export default buildRoutes(function() {
|
|||
|
||||
this.route('catalog');
|
||||
|
||||
this.route('node-drivers', { path: '/node-drivers' });
|
||||
// this.route('node-drivers', { path: '/node-drivers' });
|
||||
|
||||
this.route('settings', function() {
|
||||
this.route('index', { path: '/' });
|
||||
|
|
|
|||
|
|
@ -8,357 +8,10 @@ import { inject as service } from '@ember/service';
|
|||
import Component from '@ember/component';
|
||||
import NodeDriver from 'shared/mixins/node-driver';
|
||||
import layout from './template';
|
||||
import { INSTANCE_TYPES, nameFromResource, tagsFromResource, REGIONS } from 'shared/utils/amazon';
|
||||
|
||||
let RANCHER_GROUP = 'rancher-nodes';
|
||||
|
||||
export const INSTANCE_TYPES = [
|
||||
{
|
||||
group: 'T2 - Burstable',
|
||||
name: 't2.nano'
|
||||
},
|
||||
{
|
||||
group: 'T2 - Burstable',
|
||||
name: 't2.micro'
|
||||
},
|
||||
{
|
||||
group: 'T2 - Burstable',
|
||||
name: 't2.small'
|
||||
},
|
||||
{
|
||||
group: 'T2 - Burstable',
|
||||
name: 't2.medium'
|
||||
},
|
||||
{
|
||||
group: 'T2 - Burstable',
|
||||
name: 't2.large'
|
||||
},
|
||||
{
|
||||
group: 'T2 - Burstable',
|
||||
name: 't2.xlarge'
|
||||
},
|
||||
{
|
||||
group: 'T2 - Burstable',
|
||||
name: 't2.2xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'M5 - General Purpose',
|
||||
name: 'm5.large'
|
||||
},
|
||||
{
|
||||
group: 'M5 - General Purpose',
|
||||
name: 'm5.xlarge'
|
||||
},
|
||||
{
|
||||
group: 'M5 - General Purpose',
|
||||
name: 'm5.2xlarge'
|
||||
},
|
||||
{
|
||||
group: 'M5 - General Purpose',
|
||||
name: 'm5.4xlarge'
|
||||
},
|
||||
{
|
||||
group: 'M5 - General Purpose',
|
||||
name: 'm5.12xlarge'
|
||||
},
|
||||
{
|
||||
group: 'M5 - General Purpose',
|
||||
name: 'm5.24xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'M4 - General Purpose',
|
||||
name: 'm4.large'
|
||||
},
|
||||
{
|
||||
group: 'M4 - General Purpose',
|
||||
name: 'm4.xlarge'
|
||||
},
|
||||
{
|
||||
group: 'M4 - General Purpose',
|
||||
name: 'm4.2xlarge'
|
||||
},
|
||||
{
|
||||
group: 'M4 - General Purpose',
|
||||
name: 'm4.4xlarge'
|
||||
},
|
||||
{
|
||||
group: 'M4 - General Purpose',
|
||||
name: 'm4.10xlarge'
|
||||
},
|
||||
{
|
||||
group: 'M4 - General Purpose',
|
||||
name: 'm4.16xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'M3 - General Purpose',
|
||||
name: 'm3.medium'
|
||||
},
|
||||
{
|
||||
group: 'M3 - General Purpose',
|
||||
name: 'm3.large'
|
||||
},
|
||||
{
|
||||
group: 'M3 - General Purpose',
|
||||
name: 'm3.xlarge'
|
||||
},
|
||||
{
|
||||
group: 'M3 - General Purpose',
|
||||
name: 'm3.2xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'C5 - High CPU',
|
||||
name: 'c5.large'
|
||||
},
|
||||
{
|
||||
group: 'C5 - High CPU',
|
||||
name: 'c5.xlarge'
|
||||
},
|
||||
{
|
||||
group: 'C5 - High CPU',
|
||||
name: 'c5.2xlarge'
|
||||
},
|
||||
{
|
||||
group: 'C5 - High CPU',
|
||||
name: 'c5.4xlarge'
|
||||
},
|
||||
{
|
||||
group: 'C5 - High CPU',
|
||||
name: 'c5.9xlarge'
|
||||
},
|
||||
{
|
||||
group: 'C5 - High CPU',
|
||||
name: 'c5.18xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'C4 - High CPU',
|
||||
name: 'c4.large'
|
||||
},
|
||||
{
|
||||
group: 'C4 - High CPU',
|
||||
name: 'c4.xlarge'
|
||||
},
|
||||
{
|
||||
group: 'C4 - High CPU',
|
||||
name: 'c4.2xlarge'
|
||||
},
|
||||
{
|
||||
group: 'C4 - High CPU',
|
||||
name: 'c4.4xlarge'
|
||||
},
|
||||
{
|
||||
group: 'C4 - High CPU',
|
||||
name: 'c4.8xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'C3 - High CPU',
|
||||
name: 'c3.large'
|
||||
},
|
||||
{
|
||||
group: 'C3 - High CPU',
|
||||
name: 'c3.xlarge'
|
||||
},
|
||||
{
|
||||
group: 'C3 - High CPU',
|
||||
name: 'c3.2xlarge'
|
||||
},
|
||||
{
|
||||
group: 'C3 - High CPU',
|
||||
name: 'c3.4xlarge'
|
||||
},
|
||||
{
|
||||
group: 'C3 - High CPU',
|
||||
name: 'c3.8xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'R4 - High Memory',
|
||||
name: 'r4.large'
|
||||
},
|
||||
{
|
||||
group: 'R4 - High Memory',
|
||||
name: 'r4.xlarge'
|
||||
},
|
||||
{
|
||||
group: 'R4 - High Memory',
|
||||
name: 'r4.2xlarge'
|
||||
},
|
||||
{
|
||||
group: 'R4 - High Memory',
|
||||
name: 'r4.4xlarge'
|
||||
},
|
||||
{
|
||||
group: 'R4 - High Memory',
|
||||
name: 'r4.8xlarge'
|
||||
},
|
||||
{
|
||||
group: 'R4 - High Memory',
|
||||
name: 'r4.16xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'R3 - High Memory',
|
||||
name: 'r3.large'
|
||||
},
|
||||
{
|
||||
group: 'R3 - High Memory',
|
||||
name: 'r3.xlarge'
|
||||
},
|
||||
{
|
||||
group: 'R3 - High Memory',
|
||||
name: 'r3.2xlarge'
|
||||
},
|
||||
{
|
||||
group: 'R3 - High Memory',
|
||||
name: 'r3.4xlarge'
|
||||
},
|
||||
{
|
||||
group: 'R3 - High Memory',
|
||||
name: 'r3.8xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'D2 - High Density Storage',
|
||||
name: 'd2.xlarge'
|
||||
},
|
||||
{
|
||||
group: 'D2 - High Density Storage',
|
||||
name: 'd2.2xlarge'
|
||||
},
|
||||
{
|
||||
group: 'D2 - High Density Storage',
|
||||
name: 'd2.4xlarge'
|
||||
},
|
||||
{
|
||||
group: 'D2 - High Density Storage',
|
||||
name: 'd2.8xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'I3 - High I/O Storage',
|
||||
name: 'i3.large'
|
||||
},
|
||||
{
|
||||
group: 'I3 - High I/O Storage',
|
||||
name: 'i3.xlarge'
|
||||
},
|
||||
{
|
||||
group: 'I3 - High I/O Storage',
|
||||
name: 'i3.2xlarge'
|
||||
},
|
||||
{
|
||||
group: 'I3 - High I/O Storage',
|
||||
name: 'i3.4xlarge'
|
||||
},
|
||||
{
|
||||
group: 'I3 - High I/O Storage',
|
||||
name: 'i3.8xlarge'
|
||||
},
|
||||
{
|
||||
group: 'I3 - High I/O Storage',
|
||||
name: 'i3.16xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'F1 - FPGA',
|
||||
name: 'f1.2xlarge'
|
||||
},
|
||||
{
|
||||
group: 'F1 - FPGA',
|
||||
name: 'f1.16xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'G3 - GPU',
|
||||
name: 'g3.4xlarge'
|
||||
},
|
||||
{
|
||||
group: 'G3 - GPU',
|
||||
name: 'g3.8xlarge'
|
||||
},
|
||||
{
|
||||
group: 'G3 - GPU',
|
||||
name: 'g3.16xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'P2 - GPU',
|
||||
name: 'p2.xlarge'
|
||||
},
|
||||
{
|
||||
group: 'P2 - GPU',
|
||||
name: 'p2.8xlarge'
|
||||
},
|
||||
{
|
||||
group: 'P2 - GPU',
|
||||
name: 'p2.16xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'X1 - Really High Memory',
|
||||
name: 'x1.16xlarge'
|
||||
},
|
||||
{
|
||||
group: 'X1 - Really High Memory',
|
||||
name: 'x1.32xlarge'
|
||||
},
|
||||
];
|
||||
|
||||
// These need to match the supported list in docker-machine:
|
||||
// https://github.com/docker/machine/blob/master/drivers/amazonec2/region.go
|
||||
export const REGIONS = [
|
||||
'ap-northeast-1',
|
||||
'ap-northeast-2',
|
||||
'ap-southeast-1',
|
||||
'ap-southeast-2',
|
||||
'ap-south-1',
|
||||
'ca-central-1',
|
||||
'cn-north-1',
|
||||
'cn-northwest-1',
|
||||
'eu-west-1',
|
||||
'eu-west-2',
|
||||
'eu-west-3',
|
||||
'eu-central-1',
|
||||
'sa-east-1',
|
||||
'us-east-1',
|
||||
'us-east-2',
|
||||
'us-west-1',
|
||||
'us-west-2',
|
||||
'us-gov-west-1',
|
||||
];
|
||||
|
||||
export function nameFromResource(r, idField) {
|
||||
let id = r[idField];
|
||||
let out = id;
|
||||
|
||||
if ( r && r.Tags && r.Tags.length ) {
|
||||
let match = r.Tags.filterBy('Key', 'Name')[0];
|
||||
|
||||
if ( match ) {
|
||||
out = `${ match.Value } (${ id })`;
|
||||
}
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
export function tagsFromResource(r) {
|
||||
let out = [];
|
||||
|
||||
if ( r && r.Tags && r.Tags.length ) {
|
||||
r.Tags.forEach((tag) => {
|
||||
if ( tag.Key !== 'Name' ) {
|
||||
out.push(`${ tag.Key }=${ tag.Value }`)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
export default Component.extend(NodeDriver, {
|
||||
prefs: service(),
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
import Engine from 'ember-engines/engine';
|
||||
import loadInitializers from 'ember-load-initializers';
|
||||
import Resolver from './resolver';
|
||||
import config from './config/environment';
|
||||
|
||||
const { modulePrefix } = config;
|
||||
|
||||
const Eng = Engine.extend({
|
||||
modulePrefix,
|
||||
Resolver,
|
||||
dependencies: {
|
||||
services: [
|
||||
'access',
|
||||
'app',
|
||||
'catalog',
|
||||
'clusterStore',
|
||||
'endpoint',
|
||||
'azureAd',
|
||||
'github',
|
||||
'globalStore',
|
||||
'intl',
|
||||
'modal',
|
||||
'resource-actions',
|
||||
'router',
|
||||
'scope',
|
||||
'session',
|
||||
'settings',
|
||||
'store',
|
||||
'tooltip',
|
||||
'user-language',
|
||||
'user-theme',
|
||||
],
|
||||
externalRoutes: [
|
||||
'index',
|
||||
'failWhale',
|
||||
'authenticated',
|
||||
'authenticated.cluster',
|
||||
'authenticated.cluster.projects',
|
||||
'authenticated.project',
|
||||
'authenticated.prefs',
|
||||
'authenticated.cluster.nodes',
|
||||
'authenticated.cluster.nodes.node',
|
||||
'authenticated.cluster.security.members.index',
|
||||
'logout'
|
||||
]
|
||||
}
|
||||
});
|
||||
|
||||
loadInitializers(Eng, modulePrefix);
|
||||
|
||||
export default Eng;
|
||||
|
|
@ -1,31 +1,31 @@
|
|||
import { computed } from '@ember/object';
|
||||
import { inject as service } from '@ember/service';
|
||||
import Controller, { inject as controller } from '@ember/controller';
|
||||
import Controller from '@ember/controller';
|
||||
import C from 'ui/utils/constants';
|
||||
|
||||
const HEADERS = [
|
||||
{
|
||||
name: 'state',
|
||||
sort: ['sortState', 'displayName'],
|
||||
searchField: 'displayState',
|
||||
translationKey: 'generic.state',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
name: 'name',
|
||||
sort: ['displayName'],
|
||||
searchField: 'displayName',
|
||||
translationKey: 'generic.name',
|
||||
|
||||
},
|
||||
];
|
||||
|
||||
export default Controller.extend({
|
||||
growl: service(),
|
||||
settings: service(),
|
||||
globalStore: service(),
|
||||
modalService: service('modal'),
|
||||
|
||||
application: controller(),
|
||||
headers: [
|
||||
{
|
||||
name: 'state',
|
||||
sort: ['sortState', 'displayName'],
|
||||
searchField: 'displayState',
|
||||
translationKey: 'generic.state',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
name: 'name',
|
||||
sort: ['displayName'],
|
||||
searchField: 'displayName',
|
||||
translationKey: 'generic.name',
|
||||
|
||||
},
|
||||
],
|
||||
headers: HEADERS,
|
||||
|
||||
actions: {
|
||||
addNewDriver() {
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
import { inject as service } from '@ember/service';
|
||||
import Controller from '@ember/controller';
|
||||
import { get } from '@ember/object';
|
||||
|
||||
const HEADERS = [
|
||||
{
|
||||
name: 'state',
|
||||
sort: ['sortState', 'name', 'id'],
|
||||
translationKey: 'nodeTemplatesPage.table.state',
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
name: 'name',
|
||||
sort: ['name', 'id'],
|
||||
translationKey: 'nodeTemplatesPage.table.name',
|
||||
},
|
||||
{
|
||||
name: 'provider',
|
||||
sort: ['displayProvider', 'name', 'id'],
|
||||
translationKey: 'nodeTemplatesPage.table.provider',
|
||||
width: 150,
|
||||
},
|
||||
{
|
||||
name: 'location',
|
||||
sort: ['displayLocation', 'name', 'id'],
|
||||
translationKey: 'nodeTemplatesPage.table.location',
|
||||
width: 150,
|
||||
},
|
||||
{
|
||||
name: 'size',
|
||||
sort: ['displaySize', 'name', 'id'],
|
||||
translationKey: 'nodeTemplatesPage.table.size',
|
||||
width: 150,
|
||||
},
|
||||
];
|
||||
|
||||
export default Controller.extend({
|
||||
modalService: service('modal'),
|
||||
sortBy: 'name',
|
||||
headers: HEADERS,
|
||||
|
||||
actions: {
|
||||
newTemplate() {
|
||||
get(this, 'modalService').toggleModal('modal-edit-node-template');
|
||||
},
|
||||
},
|
||||
});
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
import { hash } from 'rsvp';
|
||||
import Route from '@ember/routing/route';
|
||||
import { inject as service } from '@ember/service';
|
||||
import { get } from '@ember/object';
|
||||
|
||||
export default Route.extend({
|
||||
globalStore: service(),
|
||||
|
||||
model() {
|
||||
return hash({ nodeTemplates: get(this, 'globalStore').findAll('nodeTemplate') });
|
||||
},
|
||||
});
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
import Resolver from 'ember-resolver';
|
||||
|
||||
export default Resolver;
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
import buildRoutes from 'ember-engines/routes';
|
||||
|
||||
export default buildRoutes(function() {
|
||||
// Define your engine's route map here
|
||||
this.route('node-drivers', { path: '/node-drivers' });
|
||||
this.route('node-templates');
|
||||
});
|
||||
|
|
@ -0,0 +1 @@
|
|||
{{outlet}}
|
||||
|
|
@ -0,0 +1 @@
|
|||
export { default } from 'nodes/components/modal-edit-node-template/component';
|
||||
|
|
@ -0,0 +1 @@
|
|||
export { default } from 'nodes/components/node-driver/driver-aliyunecs/component';
|
||||
|
|
@ -0,0 +1 @@
|
|||
export { default } from 'nodes/components/node-driver/driver-amazonec2/component';
|
||||
|
|
@ -0,0 +1 @@
|
|||
export { default } from 'nodes/components/node-driver/driver-azure/component';
|
||||
|
|
@ -0,0 +1 @@
|
|||
export { default } from 'nodes/components/node-driver/driver-digitalocean/component';
|
||||
|
|
@ -0,0 +1 @@
|
|||
export { default } from 'nodes/components/node-driver/driver-exoscale/component';
|
||||
|
|
@ -0,0 +1 @@
|
|||
export { default } from 'nodes/components/node-driver/driver-other/component';
|
||||
|
|
@ -0,0 +1 @@
|
|||
export { default } from 'nodes/components/node-driver/driver-packet/component';
|
||||
|
|
@ -0,0 +1 @@
|
|||
export { default } from 'nodes/components/node-driver/driver-rackspace/component';
|
||||
|
|
@ -0,0 +1 @@
|
|||
export { default } from 'nodes/components/node-driver/driver-vmwarevsphere/component';
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
/* eslint-env node */
|
||||
'use strict';
|
||||
|
||||
module.exports = function(environment) {
|
||||
let ENV = {
|
||||
modulePrefix: 'nodes',
|
||||
environment
|
||||
};
|
||||
|
||||
return ENV;
|
||||
};
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
/* eslint-env node */
|
||||
'use strict';
|
||||
|
||||
const EngineAddon = require('ember-engines/lib/engine-addon');
|
||||
|
||||
module.exports = EngineAddon.extend({
|
||||
name: 'nodes',
|
||||
|
||||
lazyLoading: {
|
||||
enabled: false
|
||||
},
|
||||
|
||||
isDevelopingAddon() {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
{
|
||||
"name": "nodes",
|
||||
"keywords": [
|
||||
"ember-addon",
|
||||
"ember-engine"
|
||||
],
|
||||
"dependencies": {
|
||||
"async": "*",
|
||||
"jgrowl": "*",
|
||||
"momentjs": "*",
|
||||
"card": "*",
|
||||
"d3": "*",
|
||||
"ember-basic-dropdown": "*",
|
||||
"ember-math-helpers": "*",
|
||||
"ember-truth-helpers": "*",
|
||||
"ember-cli-htmlbars": "*",
|
||||
"ember-cli-babel": "*",
|
||||
"ember-cli-clipboard": "*",
|
||||
"ember-href-to": "*",
|
||||
"ember-concurrency": "*",
|
||||
"marked": "*"
|
||||
},
|
||||
"ember-addon": {
|
||||
"paths": [
|
||||
"../shared"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
import ClusterDriver from 'shared/mixins/cluster-driver';
|
||||
import Component from '@ember/component'
|
||||
import layout from './template';
|
||||
import { INSTANCE_TYPES, nameFromResource, tagsFromResource } from 'shared/components/node-driver/driver-amazonec2/component';
|
||||
import { INSTANCE_TYPES, nameFromResource, tagsFromResource } from 'shared/utils/amazon';
|
||||
import {
|
||||
get, set, setProperties, computed, observer
|
||||
} from '@ember/object';
|
||||
|
|
|
|||
|
|
@ -0,0 +1,356 @@
|
|||
export const INSTANCE_TYPES = [
|
||||
{
|
||||
group: 'T2 - Burstable',
|
||||
name: 't2.nano'
|
||||
},
|
||||
{
|
||||
group: 'T2 - Burstable',
|
||||
name: 't2.micro'
|
||||
},
|
||||
{
|
||||
group: 'T2 - Burstable',
|
||||
name: 't2.small'
|
||||
},
|
||||
{
|
||||
group: 'T2 - Burstable',
|
||||
name: 't2.medium'
|
||||
},
|
||||
{
|
||||
group: 'T2 - Burstable',
|
||||
name: 't2.large'
|
||||
},
|
||||
{
|
||||
group: 'T2 - Burstable',
|
||||
name: 't2.xlarge'
|
||||
},
|
||||
{
|
||||
group: 'T2 - Burstable',
|
||||
name: 't2.2xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'M5 - General Purpose',
|
||||
name: 'm5.large'
|
||||
},
|
||||
{
|
||||
group: 'M5 - General Purpose',
|
||||
name: 'm5.xlarge'
|
||||
},
|
||||
{
|
||||
group: 'M5 - General Purpose',
|
||||
name: 'm5.2xlarge'
|
||||
},
|
||||
{
|
||||
group: 'M5 - General Purpose',
|
||||
name: 'm5.4xlarge'
|
||||
},
|
||||
{
|
||||
group: 'M5 - General Purpose',
|
||||
name: 'm5.12xlarge'
|
||||
},
|
||||
{
|
||||
group: 'M5 - General Purpose',
|
||||
name: 'm5.24xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'M4 - General Purpose',
|
||||
name: 'm4.large'
|
||||
},
|
||||
{
|
||||
group: 'M4 - General Purpose',
|
||||
name: 'm4.xlarge'
|
||||
},
|
||||
{
|
||||
group: 'M4 - General Purpose',
|
||||
name: 'm4.2xlarge'
|
||||
},
|
||||
{
|
||||
group: 'M4 - General Purpose',
|
||||
name: 'm4.4xlarge'
|
||||
},
|
||||
{
|
||||
group: 'M4 - General Purpose',
|
||||
name: 'm4.10xlarge'
|
||||
},
|
||||
{
|
||||
group: 'M4 - General Purpose',
|
||||
name: 'm4.16xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'M3 - General Purpose',
|
||||
name: 'm3.medium'
|
||||
},
|
||||
{
|
||||
group: 'M3 - General Purpose',
|
||||
name: 'm3.large'
|
||||
},
|
||||
{
|
||||
group: 'M3 - General Purpose',
|
||||
name: 'm3.xlarge'
|
||||
},
|
||||
{
|
||||
group: 'M3 - General Purpose',
|
||||
name: 'm3.2xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'C5 - High CPU',
|
||||
name: 'c5.large'
|
||||
},
|
||||
{
|
||||
group: 'C5 - High CPU',
|
||||
name: 'c5.xlarge'
|
||||
},
|
||||
{
|
||||
group: 'C5 - High CPU',
|
||||
name: 'c5.2xlarge'
|
||||
},
|
||||
{
|
||||
group: 'C5 - High CPU',
|
||||
name: 'c5.4xlarge'
|
||||
},
|
||||
{
|
||||
group: 'C5 - High CPU',
|
||||
name: 'c5.9xlarge'
|
||||
},
|
||||
{
|
||||
group: 'C5 - High CPU',
|
||||
name: 'c5.18xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'C4 - High CPU',
|
||||
name: 'c4.large'
|
||||
},
|
||||
{
|
||||
group: 'C4 - High CPU',
|
||||
name: 'c4.xlarge'
|
||||
},
|
||||
{
|
||||
group: 'C4 - High CPU',
|
||||
name: 'c4.2xlarge'
|
||||
},
|
||||
{
|
||||
group: 'C4 - High CPU',
|
||||
name: 'c4.4xlarge'
|
||||
},
|
||||
{
|
||||
group: 'C4 - High CPU',
|
||||
name: 'c4.8xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'C3 - High CPU',
|
||||
name: 'c3.large'
|
||||
},
|
||||
{
|
||||
group: 'C3 - High CPU',
|
||||
name: 'c3.xlarge'
|
||||
},
|
||||
{
|
||||
group: 'C3 - High CPU',
|
||||
name: 'c3.2xlarge'
|
||||
},
|
||||
{
|
||||
group: 'C3 - High CPU',
|
||||
name: 'c3.4xlarge'
|
||||
},
|
||||
{
|
||||
group: 'C3 - High CPU',
|
||||
name: 'c3.8xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'R4 - High Memory',
|
||||
name: 'r4.large'
|
||||
},
|
||||
{
|
||||
group: 'R4 - High Memory',
|
||||
name: 'r4.xlarge'
|
||||
},
|
||||
{
|
||||
group: 'R4 - High Memory',
|
||||
name: 'r4.2xlarge'
|
||||
},
|
||||
{
|
||||
group: 'R4 - High Memory',
|
||||
name: 'r4.4xlarge'
|
||||
},
|
||||
{
|
||||
group: 'R4 - High Memory',
|
||||
name: 'r4.8xlarge'
|
||||
},
|
||||
{
|
||||
group: 'R4 - High Memory',
|
||||
name: 'r4.16xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'R3 - High Memory',
|
||||
name: 'r3.large'
|
||||
},
|
||||
{
|
||||
group: 'R3 - High Memory',
|
||||
name: 'r3.xlarge'
|
||||
},
|
||||
{
|
||||
group: 'R3 - High Memory',
|
||||
name: 'r3.2xlarge'
|
||||
},
|
||||
{
|
||||
group: 'R3 - High Memory',
|
||||
name: 'r3.4xlarge'
|
||||
},
|
||||
{
|
||||
group: 'R3 - High Memory',
|
||||
name: 'r3.8xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'D2 - High Density Storage',
|
||||
name: 'd2.xlarge'
|
||||
},
|
||||
{
|
||||
group: 'D2 - High Density Storage',
|
||||
name: 'd2.2xlarge'
|
||||
},
|
||||
{
|
||||
group: 'D2 - High Density Storage',
|
||||
name: 'd2.4xlarge'
|
||||
},
|
||||
{
|
||||
group: 'D2 - High Density Storage',
|
||||
name: 'd2.8xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'I3 - High I/O Storage',
|
||||
name: 'i3.large'
|
||||
},
|
||||
{
|
||||
group: 'I3 - High I/O Storage',
|
||||
name: 'i3.xlarge'
|
||||
},
|
||||
{
|
||||
group: 'I3 - High I/O Storage',
|
||||
name: 'i3.2xlarge'
|
||||
},
|
||||
{
|
||||
group: 'I3 - High I/O Storage',
|
||||
name: 'i3.4xlarge'
|
||||
},
|
||||
{
|
||||
group: 'I3 - High I/O Storage',
|
||||
name: 'i3.8xlarge'
|
||||
},
|
||||
{
|
||||
group: 'I3 - High I/O Storage',
|
||||
name: 'i3.16xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'F1 - FPGA',
|
||||
name: 'f1.2xlarge'
|
||||
},
|
||||
{
|
||||
group: 'F1 - FPGA',
|
||||
name: 'f1.16xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'G3 - GPU',
|
||||
name: 'g3.4xlarge'
|
||||
},
|
||||
{
|
||||
group: 'G3 - GPU',
|
||||
name: 'g3.8xlarge'
|
||||
},
|
||||
{
|
||||
group: 'G3 - GPU',
|
||||
name: 'g3.16xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'P2 - GPU',
|
||||
name: 'p2.xlarge'
|
||||
},
|
||||
{
|
||||
group: 'P2 - GPU',
|
||||
name: 'p2.8xlarge'
|
||||
},
|
||||
{
|
||||
group: 'P2 - GPU',
|
||||
name: 'p2.16xlarge'
|
||||
},
|
||||
|
||||
{
|
||||
group: 'X1 - Really High Memory',
|
||||
name: 'x1.16xlarge'
|
||||
},
|
||||
{
|
||||
group: 'X1 - Really High Memory',
|
||||
name: 'x1.32xlarge'
|
||||
},
|
||||
];
|
||||
|
||||
// These need to match the supported list in docker-machine:
|
||||
// https://github.com/docker/machine/blob/master/drivers/amazonec2/region.go
|
||||
export const REGIONS = [
|
||||
'ap-northeast-1',
|
||||
'ap-northeast-2',
|
||||
'ap-southeast-1',
|
||||
'ap-southeast-2',
|
||||
'ap-south-1',
|
||||
'ca-central-1',
|
||||
'cn-north-1',
|
||||
'cn-northwest-1',
|
||||
'eu-west-1',
|
||||
'eu-west-2',
|
||||
'eu-west-3',
|
||||
'eu-central-1',
|
||||
'sa-east-1',
|
||||
'us-east-1',
|
||||
'us-east-2',
|
||||
'us-west-1',
|
||||
'us-west-2',
|
||||
'us-gov-west-1',
|
||||
];
|
||||
|
||||
|
||||
export const nameFromResource = function(r, idField) {
|
||||
let id = r[idField];
|
||||
let out = id;
|
||||
|
||||
if ( r && r.Tags && r.Tags.length ) {
|
||||
let match = r.Tags.filterBy('Key', 'Name')[0];
|
||||
|
||||
if ( match ) {
|
||||
out = `${ match.Value } (${ id })`;
|
||||
}
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
export const tagsFromResource = function(r) {
|
||||
let out = [];
|
||||
|
||||
if ( r && r.Tags && r.Tags.length ) {
|
||||
r.Tags.forEach((tag) => {
|
||||
if ( tag.Key !== 'Name' ) {
|
||||
out.push(`${ tag.Key }=${ tag.Value }`)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
|
||||
export default {
|
||||
instanceTypes: INSTANCE_TYPES,
|
||||
nameFromResource,
|
||||
tagsFromResource,
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
export { default } from 'shared/amazon/util';
|
||||
|
|
@ -1 +0,0 @@
|
|||
export { default } from 'shared/components/modal-edit-node-template/component';
|
||||
|
|
@ -1 +0,0 @@
|
|||
export { default } from 'shared/components/node-driver/driver-aliyunecs/component';
|
||||
|
|
@ -1 +0,0 @@
|
|||
export { default } from 'shared/components/node-driver/driver-amazonec2/component';
|
||||
|
|
@ -1 +0,0 @@
|
|||
export { default } from 'shared/components/node-driver/driver-azure/component';
|
||||
|
|
@ -1 +0,0 @@
|
|||
export { default } from 'shared/components/node-driver/driver-digitalocean/component';
|
||||
|
|
@ -1 +0,0 @@
|
|||
export { default } from 'shared/components/node-driver/driver-exoscale/component';
|
||||
|
|
@ -1 +0,0 @@
|
|||
export { default } from 'shared/components/node-driver/driver-other/component';
|
||||
|
|
@ -1 +0,0 @@
|
|||
export { default } from 'shared/components/node-driver/driver-packet/component';
|
||||
|
|
@ -1 +0,0 @@
|
|||
export { default } from 'shared/components/node-driver/driver-rackspace/component';
|
||||
|
|
@ -1 +0,0 @@
|
|||
export { default } from 'shared/components/node-driver/driver-vmwarevsphere/component';
|
||||
11
package.json
11
package.json
|
|
@ -105,12 +105,13 @@
|
|||
},
|
||||
"ember-addon": {
|
||||
"paths": [
|
||||
"lib/global-admin",
|
||||
"lib/login",
|
||||
"lib/shared",
|
||||
"lib/logging",
|
||||
"lib/alert",
|
||||
"lib/pipeline"
|
||||
"lib/global-admin",
|
||||
"lib/logging",
|
||||
"lib/login",
|
||||
"lib/nodes",
|
||||
"lib/pipeline",
|
||||
"lib/shared"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue