move node drivers to engine

This commit is contained in:
Westly Wright 2018-08-10 16:35:58 -07:00
parent 68788a8209
commit dfb90c4796
No known key found for this signature in database
GPG Key ID: 4FAB3D8673DC54A3
70 changed files with 618 additions and 449 deletions

View File

@ -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: [

View File

@ -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');
},
},
});

View File

@ -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'), });
},
});

View File

@ -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

View File

@ -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>

View File

@ -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',
},

View File

@ -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

View File

@ -1,4 +0,0 @@
import Ember from 'ember';
export default Ember.Route.extend({
});

View File

@ -1 +0,0 @@
module.exports = require('../../node_modules/ember-cli-legacy-blueprints/blueprints/route/index.js');

View File

@ -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: '/' });

View File

@ -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(),

51
lib/nodes/addon/engine.js Normal file
View File

@ -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;

View File

@ -1,16 +1,9 @@
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';
export default Controller.extend({
growl: service(),
settings: service(),
globalStore: service(),
modalService: service('modal'),
application: controller(),
headers: [
const HEADERS = [
{
name: 'state',
sort: ['sortState', 'displayName'],
@ -25,7 +18,14 @@ export default Controller.extend({
translationKey: 'generic.name',
},
],
];
export default Controller.extend({
growl: service(),
settings: service(),
globalStore: service(),
modalService: service('modal'),
headers: HEADERS,
actions: {
addNewDriver() {

View File

@ -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');
},
},
});

View File

@ -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') });
},
});

View File

@ -0,0 +1,3 @@
import Resolver from 'ember-resolver';
export default Resolver;

View File

@ -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');
});

View File

@ -0,0 +1 @@
{{outlet}}

View File

@ -0,0 +1 @@
export { default } from 'nodes/components/modal-edit-node-template/component';

View File

@ -0,0 +1 @@
export { default } from 'nodes/components/node-driver/driver-aliyunecs/component';

View File

@ -0,0 +1 @@
export { default } from 'nodes/components/node-driver/driver-amazonec2/component';

View File

@ -0,0 +1 @@
export { default } from 'nodes/components/node-driver/driver-azure/component';

View File

@ -0,0 +1 @@
export { default } from 'nodes/components/node-driver/driver-digitalocean/component';

View File

@ -0,0 +1 @@
export { default } from 'nodes/components/node-driver/driver-exoscale/component';

View File

@ -0,0 +1 @@
export { default } from 'nodes/components/node-driver/driver-other/component';

View File

@ -0,0 +1 @@
export { default } from 'nodes/components/node-driver/driver-packet/component';

View File

@ -0,0 +1 @@
export { default } from 'nodes/components/node-driver/driver-rackspace/component';

View File

@ -0,0 +1 @@
export { default } from 'nodes/components/node-driver/driver-vmwarevsphere/component';

View File

@ -0,0 +1,11 @@
/* eslint-env node */
'use strict';
module.exports = function(environment) {
let ENV = {
modulePrefix: 'nodes',
environment
};
return ENV;
};

16
lib/nodes/index.js Normal file
View File

@ -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;
}
});

28
lib/nodes/package.json Normal file
View File

@ -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"
]
}
}

View File

@ -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';

View File

@ -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,
}

View File

@ -0,0 +1 @@
export { default } from 'shared/amazon/util';

View File

@ -1 +0,0 @@
export { default } from 'shared/components/modal-edit-node-template/component';

View File

@ -1 +0,0 @@
export { default } from 'shared/components/node-driver/driver-aliyunecs/component';

View File

@ -1 +0,0 @@
export { default } from 'shared/components/node-driver/driver-amazonec2/component';

View File

@ -1 +0,0 @@
export { default } from 'shared/components/node-driver/driver-azure/component';

View File

@ -1 +0,0 @@
export { default } from 'shared/components/node-driver/driver-digitalocean/component';

View File

@ -1 +0,0 @@
export { default } from 'shared/components/node-driver/driver-exoscale/component';

View File

@ -1 +0,0 @@
export { default } from 'shared/components/node-driver/driver-other/component';

View File

@ -1 +0,0 @@
export { default } from 'shared/components/node-driver/driver-packet/component';

View File

@ -1 +0,0 @@
export { default } from 'shared/components/node-driver/driver-rackspace/component';

View File

@ -1 +0,0 @@
export { default } from 'shared/components/node-driver/driver-vmwarevsphere/component';

View File

@ -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"
]
}
}