diff --git a/ui-v2/app/instance-initializers/nspace.js b/ui-v2/app/instance-initializers/nspace.js index a54e6fcc3a1b..06a18d33a377 100644 --- a/ui-v2/app/instance-initializers/nspace.js +++ b/ui-v2/app/instance-initializers/nspace.js @@ -1,7 +1,7 @@ import config from 'consul-ui/config/environment'; export function initialize(container) { if (config.CONSUL_NSPACES_ENABLED) { - ['dc', 'dc.intentions.edit', 'dc.intentions.create'].forEach(function(item) { + ['dc', 'settings', 'dc.intentions.edit', 'dc.intentions.create'].forEach(function(item) { container.inject(`route:${item}`, 'nspaceRepo', 'service:repository/nspace/enabled'); container.inject(`route:nspace.${item}`, 'nspaceRepo', 'service:repository/nspace/enabled'); }); diff --git a/ui-v2/app/routes/dc.js b/ui-v2/app/routes/dc.js index 3fab8471cefd..e54bfea93bd7 100644 --- a/ui-v2/app/routes/dc.js +++ b/ui-v2/app/routes/dc.js @@ -9,10 +9,10 @@ export default Route.extend({ model: function(params) { const repo = this.repo; const nspaceRepo = this.nspaceRepo; - const nspace = this.nspaceRepo.getActive(); return hash({ dcs: repo.findAll(), nspaces: nspaceRepo.findAll(), + nspace: this.nspaceRepo.getActive(), }).then(function(model) { return hash({ ...model, @@ -24,7 +24,7 @@ export default Route.extend({ nspace: model.nspaces.length > 1 ? model.nspaces.find(function(item) { - return item.Name === nspace.Name; + return item.Name === model.nspace.Name; }) : model.nspaces.firstObject, }, diff --git a/ui-v2/app/routes/settings.js b/ui-v2/app/routes/settings.js index f2d43bf924f2..3abda35e8599 100644 --- a/ui-v2/app/routes/settings.js +++ b/ui-v2/app/routes/settings.js @@ -7,10 +7,14 @@ export default Route.extend({ client: service('client/http'), repo: service('settings'), dcRepo: service('repository/dc'), + nspaceRepo: service('repository/nspace/disabled'), model: function(params) { + const nspace = this.nspaceRepo.getActive(); return hash({ item: this.repo.findAll(), dcs: this.dcRepo.findAll(), + nspaces: this.nspaceRepo.findAll(), + nspace: this.nspaceRepo.getActive(), }).then(model => { if (typeof get(model.item, 'client.blocking') === 'undefined') { set(model, 'item.client', { blocking: true }); diff --git a/ui-v2/app/services/repository/dc.js b/ui-v2/app/services/repository/dc.js index 74c9f6b756cf..09654c76818f 100644 --- a/ui-v2/app/services/repository/dc.js +++ b/ui-v2/app/services/repository/dc.js @@ -2,6 +2,7 @@ import RepositoryService from 'consul-ui/services/repository'; import { inject as service } from '@ember/service'; import { get } from '@ember/object'; import Error from '@ember/error'; +import { Promise } from 'rsvp'; const modelName = 'dc'; export default RepositoryService.extend({ diff --git a/ui-v2/app/services/repository/nspace/enabled.js b/ui-v2/app/services/repository/nspace/enabled.js index 08f16d6f1885..78f7f9d765df 100644 --- a/ui-v2/app/services/repository/nspace/enabled.js +++ b/ui-v2/app/services/repository/nspace/enabled.js @@ -1,5 +1,6 @@ import { inject as service } from '@ember/service'; import { get } from '@ember/object'; +import { Promise } from 'rsvp'; import config from 'consul-ui/config/environment'; import RepositoryService from 'consul-ui/services/repository'; @@ -44,9 +45,19 @@ export default RepositoryService.extend({ } } } - // If we can't figure out the nspace from the URL just use default - return { - Name: (routeParams.nspace || `~default`).substr(1), - }; + return this.settings + .findBySlug('nspace') + .then(function(nspace) { + // If we can't figure out the nspace from the URL use + // the previously saved nspace and if thats not there + // then just use default + return routeParams.nspace || nspace || '~default'; + }) + .then(nspace => this.settings.persist({ nspace: nspace })) + .then(function(item) { + return { + Name: item.nspace.substr(1), + }; + }); }, }); diff --git a/ui-v2/app/templates/dc.hbs b/ui-v2/app/templates/dc.hbs index 1580ccc3c4d5..0c3612234df7 100644 --- a/ui-v2/app/templates/dc.hbs +++ b/ui-v2/app/templates/dc.hbs @@ -1,3 +1,3 @@ {{#hashicorp-consul id="wrapper" dcs=dcs dc=dc nspaces=nspaces nspace=nspace}} - {{outlet}} + {{outlet}} {{/hashicorp-consul}}