diff --git a/app/app.js b/app/app.js
index 9d4a7f0e1..0628d722a 100644
--- a/app/app.js
+++ b/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: [
diff --git a/app/authenticated/node-templates/controller.js b/app/authenticated/node-templates/controller.js
deleted file mode 100644
index e8c62a448..000000000
--- a/app/authenticated/node-templates/controller.js
+++ /dev/null
@@ -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');
- },
- },
-});
diff --git a/app/authenticated/node-templates/route.js b/app/authenticated/node-templates/route.js
deleted file mode 100644
index 05fcd00e5..000000000
--- a/app/authenticated/node-templates/route.js
+++ /dev/null
@@ -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'), });
- },
-});
diff --git a/app/authenticated/route.js b/app/authenticated/route.js
index 7c0dc30b0..1d8bbe43a 100644
--- a/app/authenticated/route.js
+++ b/app/authenticated/route.js
@@ -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
diff --git a/app/components/page-header/template.hbs b/app/components/page-header/template.hbs
index 21084a901..dd90ea8a8 100644
--- a/app/components/page-header/template.hbs
+++ b/app/components/page-header/template.hbs
@@ -132,7 +132,7 @@
{{#link-to "authenticated.apikeys"}}{{t 'nav.api.link'}} {{/link-to}}
- {{#link-to "authenticated.node-templates"}}{{t 'nav.nodeTemplates.link'}} {{/link-to}}
+ {{#link-to "nodes.node-templates"}}{{t 'nav.nodeTemplates.link'}} {{/link-to}}
{{#link-to "authenticated.prefs"}}{{t 'nav.userPreferences.link'}} {{/link-to}}
diff --git a/app/instance-initializers/nav.js b/app/instance-initializers/nav.js
index 5e0f9252d..7a0fc93d1 100644
--- a/app/instance-initializers/nav.js
+++ b/app/instance-initializers/nav.js
@@ -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',
},
diff --git a/app/router.js b/app/router.js
index c86ea54de..306d259df 100644
--- a/app/router.js
+++ b/app/router.js
@@ -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
diff --git a/blueprints/route/files/app/__path__/__name__.js b/blueprints/route/files/app/__path__/__name__.js
deleted file mode 100644
index 26d9f3124..000000000
--- a/blueprints/route/files/app/__path__/__name__.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Route.extend({
-});
diff --git a/blueprints/route/files/app/__templatepath__/__templatename__.hbs b/blueprints/route/files/app/__templatepath__/__templatename__.hbs
deleted file mode 100644
index c24cd6895..000000000
--- a/blueprints/route/files/app/__templatepath__/__templatename__.hbs
+++ /dev/null
@@ -1 +0,0 @@
-{{outlet}}
diff --git a/blueprints/route/index.js b/blueprints/route/index.js
deleted file mode 100644
index 46c7bad4c..000000000
--- a/blueprints/route/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('../../node_modules/ember-cli-legacy-blueprints/blueprints/route/index.js');
diff --git a/lib/global-admin/addon/routes.js b/lib/global-admin/addon/routes.js
index 0254a1f3f..a27435096 100644
--- a/lib/global-admin/addon/routes.js
+++ b/lib/global-admin/addon/routes.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: '/' });
diff --git a/lib/shared/addon/components/modal-edit-node-template/component.js b/lib/nodes/addon/components/modal-edit-node-template/component.js
similarity index 100%
rename from lib/shared/addon/components/modal-edit-node-template/component.js
rename to lib/nodes/addon/components/modal-edit-node-template/component.js
diff --git a/lib/shared/addon/components/modal-edit-node-template/template.hbs b/lib/nodes/addon/components/modal-edit-node-template/template.hbs
similarity index 100%
rename from lib/shared/addon/components/modal-edit-node-template/template.hbs
rename to lib/nodes/addon/components/modal-edit-node-template/template.hbs
diff --git a/lib/shared/addon/components/node-driver/driver-aliyunecs/component.js b/lib/nodes/addon/components/node-driver/driver-aliyunecs/component.js
similarity index 100%
rename from lib/shared/addon/components/node-driver/driver-aliyunecs/component.js
rename to lib/nodes/addon/components/node-driver/driver-aliyunecs/component.js
diff --git a/lib/shared/addon/components/node-driver/driver-aliyunecs/template.hbs b/lib/nodes/addon/components/node-driver/driver-aliyunecs/template.hbs
similarity index 100%
rename from lib/shared/addon/components/node-driver/driver-aliyunecs/template.hbs
rename to lib/nodes/addon/components/node-driver/driver-aliyunecs/template.hbs
diff --git a/lib/shared/addon/components/node-driver/driver-amazonec2/component.js b/lib/nodes/addon/components/node-driver/driver-amazonec2/component.js
similarity index 66%
rename from lib/shared/addon/components/node-driver/driver-amazonec2/component.js
rename to lib/nodes/addon/components/node-driver/driver-amazonec2/component.js
index 79a010f21..cd9c2d20d 100644
--- a/lib/shared/addon/components/node-driver/driver-amazonec2/component.js
+++ b/lib/nodes/addon/components/node-driver/driver-amazonec2/component.js
@@ -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(),
diff --git a/lib/shared/addon/components/node-driver/driver-amazonec2/template.hbs b/lib/nodes/addon/components/node-driver/driver-amazonec2/template.hbs
similarity index 100%
rename from lib/shared/addon/components/node-driver/driver-amazonec2/template.hbs
rename to lib/nodes/addon/components/node-driver/driver-amazonec2/template.hbs
diff --git a/lib/shared/addon/components/node-driver/driver-azure/component.js b/lib/nodes/addon/components/node-driver/driver-azure/component.js
similarity index 100%
rename from lib/shared/addon/components/node-driver/driver-azure/component.js
rename to lib/nodes/addon/components/node-driver/driver-azure/component.js
diff --git a/lib/shared/addon/components/node-driver/driver-azure/template.hbs b/lib/nodes/addon/components/node-driver/driver-azure/template.hbs
similarity index 100%
rename from lib/shared/addon/components/node-driver/driver-azure/template.hbs
rename to lib/nodes/addon/components/node-driver/driver-azure/template.hbs
diff --git a/lib/shared/addon/components/node-driver/driver-digitalocean/component.js b/lib/nodes/addon/components/node-driver/driver-digitalocean/component.js
similarity index 100%
rename from lib/shared/addon/components/node-driver/driver-digitalocean/component.js
rename to lib/nodes/addon/components/node-driver/driver-digitalocean/component.js
diff --git a/lib/shared/addon/components/node-driver/driver-digitalocean/template.hbs b/lib/nodes/addon/components/node-driver/driver-digitalocean/template.hbs
similarity index 100%
rename from lib/shared/addon/components/node-driver/driver-digitalocean/template.hbs
rename to lib/nodes/addon/components/node-driver/driver-digitalocean/template.hbs
diff --git a/lib/shared/addon/components/node-driver/driver-exoscale/component.js b/lib/nodes/addon/components/node-driver/driver-exoscale/component.js
similarity index 100%
rename from lib/shared/addon/components/node-driver/driver-exoscale/component.js
rename to lib/nodes/addon/components/node-driver/driver-exoscale/component.js
diff --git a/lib/shared/addon/components/node-driver/driver-exoscale/template.hbs b/lib/nodes/addon/components/node-driver/driver-exoscale/template.hbs
similarity index 100%
rename from lib/shared/addon/components/node-driver/driver-exoscale/template.hbs
rename to lib/nodes/addon/components/node-driver/driver-exoscale/template.hbs
diff --git a/lib/shared/addon/components/node-driver/driver-other/component.js b/lib/nodes/addon/components/node-driver/driver-other/component.js
similarity index 100%
rename from lib/shared/addon/components/node-driver/driver-other/component.js
rename to lib/nodes/addon/components/node-driver/driver-other/component.js
diff --git a/lib/shared/addon/components/node-driver/driver-other/template.hbs b/lib/nodes/addon/components/node-driver/driver-other/template.hbs
similarity index 100%
rename from lib/shared/addon/components/node-driver/driver-other/template.hbs
rename to lib/nodes/addon/components/node-driver/driver-other/template.hbs
diff --git a/lib/shared/addon/components/node-driver/driver-packet/component.js b/lib/nodes/addon/components/node-driver/driver-packet/component.js
similarity index 100%
rename from lib/shared/addon/components/node-driver/driver-packet/component.js
rename to lib/nodes/addon/components/node-driver/driver-packet/component.js
diff --git a/lib/shared/addon/components/node-driver/driver-packet/template.hbs b/lib/nodes/addon/components/node-driver/driver-packet/template.hbs
similarity index 100%
rename from lib/shared/addon/components/node-driver/driver-packet/template.hbs
rename to lib/nodes/addon/components/node-driver/driver-packet/template.hbs
diff --git a/lib/shared/addon/components/node-driver/driver-rackspace/component.js b/lib/nodes/addon/components/node-driver/driver-rackspace/component.js
similarity index 100%
rename from lib/shared/addon/components/node-driver/driver-rackspace/component.js
rename to lib/nodes/addon/components/node-driver/driver-rackspace/component.js
diff --git a/lib/shared/addon/components/node-driver/driver-rackspace/template.hbs b/lib/nodes/addon/components/node-driver/driver-rackspace/template.hbs
similarity index 100%
rename from lib/shared/addon/components/node-driver/driver-rackspace/template.hbs
rename to lib/nodes/addon/components/node-driver/driver-rackspace/template.hbs
diff --git a/lib/shared/addon/components/node-driver/driver-vmwarevsphere/component.js b/lib/nodes/addon/components/node-driver/driver-vmwarevsphere/component.js
similarity index 100%
rename from lib/shared/addon/components/node-driver/driver-vmwarevsphere/component.js
rename to lib/nodes/addon/components/node-driver/driver-vmwarevsphere/component.js
diff --git a/lib/shared/addon/components/node-driver/driver-vmwarevsphere/template.hbs b/lib/nodes/addon/components/node-driver/driver-vmwarevsphere/template.hbs
similarity index 100%
rename from lib/shared/addon/components/node-driver/driver-vmwarevsphere/template.hbs
rename to lib/nodes/addon/components/node-driver/driver-vmwarevsphere/template.hbs
diff --git a/app/components/node-template-row/component.js b/lib/nodes/addon/components/node-template-row/component.js
similarity index 100%
rename from app/components/node-template-row/component.js
rename to lib/nodes/addon/components/node-template-row/component.js
diff --git a/app/components/node-template-row/template.hbs b/lib/nodes/addon/components/node-template-row/template.hbs
similarity index 100%
rename from app/components/node-template-row/template.hbs
rename to lib/nodes/addon/components/node-template-row/template.hbs
diff --git a/lib/nodes/addon/engine.js b/lib/nodes/addon/engine.js
new file mode 100644
index 000000000..93ad6cbe0
--- /dev/null
+++ b/lib/nodes/addon/engine.js
@@ -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;
diff --git a/lib/global-admin/addon/node-drivers/controller.js b/lib/nodes/addon/node-drivers/controller.js
similarity index 81%
rename from lib/global-admin/addon/node-drivers/controller.js
rename to lib/nodes/addon/node-drivers/controller.js
index a16a509ef..5d5fc1042 100644
--- a/lib/global-admin/addon/node-drivers/controller.js
+++ b/lib/nodes/addon/node-drivers/controller.js
@@ -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() {
diff --git a/lib/global-admin/addon/node-drivers/route.js b/lib/nodes/addon/node-drivers/route.js
similarity index 100%
rename from lib/global-admin/addon/node-drivers/route.js
rename to lib/nodes/addon/node-drivers/route.js
diff --git a/lib/global-admin/addon/node-drivers/template.hbs b/lib/nodes/addon/node-drivers/template.hbs
similarity index 100%
rename from lib/global-admin/addon/node-drivers/template.hbs
rename to lib/nodes/addon/node-drivers/template.hbs
diff --git a/lib/nodes/addon/node-templates/controller.js b/lib/nodes/addon/node-templates/controller.js
new file mode 100644
index 000000000..ba4c87f3b
--- /dev/null
+++ b/lib/nodes/addon/node-templates/controller.js
@@ -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');
+ },
+ },
+});
diff --git a/lib/nodes/addon/node-templates/route.js b/lib/nodes/addon/node-templates/route.js
new file mode 100644
index 000000000..e3c5c5f6c
--- /dev/null
+++ b/lib/nodes/addon/node-templates/route.js
@@ -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') });
+ },
+});
diff --git a/app/authenticated/node-templates/template.hbs b/lib/nodes/addon/node-templates/template.hbs
similarity index 100%
rename from app/authenticated/node-templates/template.hbs
rename to lib/nodes/addon/node-templates/template.hbs
diff --git a/lib/nodes/addon/resolver.js b/lib/nodes/addon/resolver.js
new file mode 100644
index 000000000..2fb563d6c
--- /dev/null
+++ b/lib/nodes/addon/resolver.js
@@ -0,0 +1,3 @@
+import Resolver from 'ember-resolver';
+
+export default Resolver;
diff --git a/lib/nodes/addon/routes.js b/lib/nodes/addon/routes.js
new file mode 100644
index 000000000..d8fb26bdd
--- /dev/null
+++ b/lib/nodes/addon/routes.js
@@ -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');
+});
diff --git a/lib/nodes/addon/templates/application.hbs b/lib/nodes/addon/templates/application.hbs
new file mode 100644
index 000000000..e2147cab0
--- /dev/null
+++ b/lib/nodes/addon/templates/application.hbs
@@ -0,0 +1 @@
+{{outlet}}
\ No newline at end of file
diff --git a/lib/nodes/app/components/modal-edit-node-template/component.js b/lib/nodes/app/components/modal-edit-node-template/component.js
new file mode 100644
index 000000000..3edc3e08e
--- /dev/null
+++ b/lib/nodes/app/components/modal-edit-node-template/component.js
@@ -0,0 +1 @@
+export { default } from 'nodes/components/modal-edit-node-template/component';
diff --git a/lib/nodes/app/components/node-driver/driver-aliyunecs/component.js b/lib/nodes/app/components/node-driver/driver-aliyunecs/component.js
new file mode 100644
index 000000000..a1efd5750
--- /dev/null
+++ b/lib/nodes/app/components/node-driver/driver-aliyunecs/component.js
@@ -0,0 +1 @@
+export { default } from 'nodes/components/node-driver/driver-aliyunecs/component';
diff --git a/lib/nodes/app/components/node-driver/driver-amazonec2/component.js b/lib/nodes/app/components/node-driver/driver-amazonec2/component.js
new file mode 100644
index 000000000..114d0ea5c
--- /dev/null
+++ b/lib/nodes/app/components/node-driver/driver-amazonec2/component.js
@@ -0,0 +1 @@
+export { default } from 'nodes/components/node-driver/driver-amazonec2/component';
diff --git a/lib/nodes/app/components/node-driver/driver-azure/component.js b/lib/nodes/app/components/node-driver/driver-azure/component.js
new file mode 100644
index 000000000..28c6396be
--- /dev/null
+++ b/lib/nodes/app/components/node-driver/driver-azure/component.js
@@ -0,0 +1 @@
+export { default } from 'nodes/components/node-driver/driver-azure/component';
diff --git a/lib/nodes/app/components/node-driver/driver-digitalocean/component.js b/lib/nodes/app/components/node-driver/driver-digitalocean/component.js
new file mode 100644
index 000000000..44ec0e0b9
--- /dev/null
+++ b/lib/nodes/app/components/node-driver/driver-digitalocean/component.js
@@ -0,0 +1 @@
+export { default } from 'nodes/components/node-driver/driver-digitalocean/component';
diff --git a/lib/nodes/app/components/node-driver/driver-exoscale/component.js b/lib/nodes/app/components/node-driver/driver-exoscale/component.js
new file mode 100644
index 000000000..2f4040bd0
--- /dev/null
+++ b/lib/nodes/app/components/node-driver/driver-exoscale/component.js
@@ -0,0 +1 @@
+export { default } from 'nodes/components/node-driver/driver-exoscale/component';
diff --git a/lib/nodes/app/components/node-driver/driver-other/component.js b/lib/nodes/app/components/node-driver/driver-other/component.js
new file mode 100644
index 000000000..a0f0f954f
--- /dev/null
+++ b/lib/nodes/app/components/node-driver/driver-other/component.js
@@ -0,0 +1 @@
+export { default } from 'nodes/components/node-driver/driver-other/component';
diff --git a/lib/nodes/app/components/node-driver/driver-packet/component.js b/lib/nodes/app/components/node-driver/driver-packet/component.js
new file mode 100644
index 000000000..cd8020c0d
--- /dev/null
+++ b/lib/nodes/app/components/node-driver/driver-packet/component.js
@@ -0,0 +1 @@
+export { default } from 'nodes/components/node-driver/driver-packet/component';
diff --git a/lib/nodes/app/components/node-driver/driver-rackspace/component.js b/lib/nodes/app/components/node-driver/driver-rackspace/component.js
new file mode 100644
index 000000000..d618c4b50
--- /dev/null
+++ b/lib/nodes/app/components/node-driver/driver-rackspace/component.js
@@ -0,0 +1 @@
+export { default } from 'nodes/components/node-driver/driver-rackspace/component';
diff --git a/lib/nodes/app/components/node-driver/driver-vmwarevsphere/component.js b/lib/nodes/app/components/node-driver/driver-vmwarevsphere/component.js
new file mode 100644
index 000000000..902e50335
--- /dev/null
+++ b/lib/nodes/app/components/node-driver/driver-vmwarevsphere/component.js
@@ -0,0 +1 @@
+export { default } from 'nodes/components/node-driver/driver-vmwarevsphere/component';
diff --git a/lib/nodes/config/environment.js b/lib/nodes/config/environment.js
new file mode 100644
index 000000000..4499f8937
--- /dev/null
+++ b/lib/nodes/config/environment.js
@@ -0,0 +1,11 @@
+/* eslint-env node */
+'use strict';
+
+module.exports = function(environment) {
+ let ENV = {
+ modulePrefix: 'nodes',
+ environment
+ };
+
+ return ENV;
+};
diff --git a/lib/nodes/index.js b/lib/nodes/index.js
new file mode 100644
index 000000000..d5f3ab7c4
--- /dev/null
+++ b/lib/nodes/index.js
@@ -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;
+ }
+});
diff --git a/lib/nodes/package.json b/lib/nodes/package.json
new file mode 100644
index 000000000..28d84a68e
--- /dev/null
+++ b/lib/nodes/package.json
@@ -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"
+ ]
+ }
+}
diff --git a/lib/shared/addon/components/cluster-driver/driver-amazoneks/component.js b/lib/shared/addon/components/cluster-driver/driver-amazoneks/component.js
index 0378a132c..e03a0ff5c 100644
--- a/lib/shared/addon/components/cluster-driver/driver-amazoneks/component.js
+++ b/lib/shared/addon/components/cluster-driver/driver-amazoneks/component.js
@@ -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';
diff --git a/lib/shared/addon/utils/amazon.js b/lib/shared/addon/utils/amazon.js
new file mode 100644
index 000000000..47524ada6
--- /dev/null
+++ b/lib/shared/addon/utils/amazon.js
@@ -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,
+}
diff --git a/lib/shared/app/amazon/util.js b/lib/shared/app/amazon/util.js
new file mode 100644
index 000000000..6733b6fef
--- /dev/null
+++ b/lib/shared/app/amazon/util.js
@@ -0,0 +1 @@
+export { default } from 'shared/amazon/util';
diff --git a/lib/shared/app/components/modal-edit-node-template/component.js b/lib/shared/app/components/modal-edit-node-template/component.js
deleted file mode 100644
index a3ed5f346..000000000
--- a/lib/shared/app/components/modal-edit-node-template/component.js
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from 'shared/components/modal-edit-node-template/component';
diff --git a/lib/shared/app/components/node-driver/driver-aliyunecs/component.js b/lib/shared/app/components/node-driver/driver-aliyunecs/component.js
deleted file mode 100644
index f5e04ba45..000000000
--- a/lib/shared/app/components/node-driver/driver-aliyunecs/component.js
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from 'shared/components/node-driver/driver-aliyunecs/component';
diff --git a/lib/shared/app/components/node-driver/driver-amazonec2/component.js b/lib/shared/app/components/node-driver/driver-amazonec2/component.js
deleted file mode 100644
index e1695017c..000000000
--- a/lib/shared/app/components/node-driver/driver-amazonec2/component.js
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from 'shared/components/node-driver/driver-amazonec2/component';
diff --git a/lib/shared/app/components/node-driver/driver-azure/component.js b/lib/shared/app/components/node-driver/driver-azure/component.js
deleted file mode 100644
index fe057ead5..000000000
--- a/lib/shared/app/components/node-driver/driver-azure/component.js
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from 'shared/components/node-driver/driver-azure/component';
diff --git a/lib/shared/app/components/node-driver/driver-digitalocean/component.js b/lib/shared/app/components/node-driver/driver-digitalocean/component.js
deleted file mode 100644
index b77d06227..000000000
--- a/lib/shared/app/components/node-driver/driver-digitalocean/component.js
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from 'shared/components/node-driver/driver-digitalocean/component';
diff --git a/lib/shared/app/components/node-driver/driver-exoscale/component.js b/lib/shared/app/components/node-driver/driver-exoscale/component.js
deleted file mode 100644
index db4a8bae6..000000000
--- a/lib/shared/app/components/node-driver/driver-exoscale/component.js
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from 'shared/components/node-driver/driver-exoscale/component';
diff --git a/lib/shared/app/components/node-driver/driver-other/component.js b/lib/shared/app/components/node-driver/driver-other/component.js
deleted file mode 100644
index 87e019b86..000000000
--- a/lib/shared/app/components/node-driver/driver-other/component.js
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from 'shared/components/node-driver/driver-other/component';
diff --git a/lib/shared/app/components/node-driver/driver-packet/component.js b/lib/shared/app/components/node-driver/driver-packet/component.js
deleted file mode 100644
index 476ff61c6..000000000
--- a/lib/shared/app/components/node-driver/driver-packet/component.js
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from 'shared/components/node-driver/driver-packet/component';
diff --git a/lib/shared/app/components/node-driver/driver-rackspace/component.js b/lib/shared/app/components/node-driver/driver-rackspace/component.js
deleted file mode 100644
index c658ed65a..000000000
--- a/lib/shared/app/components/node-driver/driver-rackspace/component.js
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from 'shared/components/node-driver/driver-rackspace/component';
diff --git a/lib/shared/app/components/node-driver/driver-vmwarevsphere/component.js b/lib/shared/app/components/node-driver/driver-vmwarevsphere/component.js
deleted file mode 100644
index 31d2db3cc..000000000
--- a/lib/shared/app/components/node-driver/driver-vmwarevsphere/component.js
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from 'shared/components/node-driver/driver-vmwarevsphere/component';
diff --git a/package.json b/package.json
index 9115ec007..a246f33f8 100644
--- a/package.json
+++ b/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"
]
}
}