This commit is contained in:
Vincent Fiduccia 2016-04-28 10:47:00 -07:00
parent 2a10611de9
commit 6633ec0500
6 changed files with 33 additions and 40 deletions

View File

@ -9,43 +9,12 @@ export default Ember.Route.extend({
store.findAllUnremoved('environment'), store.findAllUnremoved('environment'),
store.findAllUnremoved('service'), store.findAllUnremoved('service'),
store.findAllUnremoved('serviceconsumemap'), store.findAllUnremoved('serviceconsumemap'),
store.findAllUnremoved('host'),
]).then((results) => { ]).then((results) => {
return Ember.Object.create({ return Ember.Object.create({
environments: results[0], environments: results[0],
services: results[1], services: results[1],
consumeMaps: results[2], consumeMaps: results[2],
hosts: results[3],
}); });
}); });
}, },
afterModel: function(model /*, transition*/) {
var ready = !!model.get('services.length') && !!model.get('hosts.length');
var hasKubernetes = this.controllerFor('authenticated').get('hasKubernetes');
var hasSwarm = this.controllerFor('authenticated').get('hasSwarm');
if ( ready )
{
if ( this.controllerFor('authenticated').get('hasKubernetes') )
{
this.transitionTo('environments', this.get('projects.current.id'), {queryParams: {which: 'not-kubernetes'}});
}
}
else
{
if ( hasSwarm )
{
this.transitionTo('swarm-tab.waiting');
}
else if ( hasKubernetes )
{
this.transitionTo('k8s-tab.waiting', this.get('projects.current.id'));
}
else
{
this.transitionTo('splash');
}
}
}
}); });

View File

@ -27,7 +27,7 @@ export default Ember.Route.extend({
return project.updateOrchestrationState().then(done); return project.updateOrchestrationState().then(done);
} }
done(); return done();
function done() { function done() {
return Ember.Object.create({ return Ember.Object.create({
@ -39,10 +39,12 @@ export default Ember.Route.extend({
}); });
}, },
afterModel(model, transition) { afterModel(model/*, transition*/) {
var project = model.get('project'); var project = model.get('project');
var state = model.get('project.orchestrationState'); if ( !project.get('isReady') )
debugger; {
this.replaceWith('authenticated.project.waiting', project.get('id'));
}
}, },
loadingError(err, transition, ret) { loadingError(err, transition, ret) {

View File

@ -6,9 +6,10 @@ export default Ember.Controller.extend({
settings: Ember.inject.service(), settings: Ember.inject.service(),
docsBase: C.EXT_REFERENCES.DOCS, docsBase: C.EXT_REFERENCES.DOCS,
/*
thingsChanged: function() { thingsChanged: function() {
//console.log(this.get('application.currentRouteName'),this.get('model.hosts.length'),this.get('model.services.length')); //console.log(this.get('application.currentRouteName'),this.get('model.hosts.length'),this.get('model.services.length'));
if ( this.get('application.currentRouteName') === 'splash') if ( this.get('application.currentRouteName') === 'authenticated.project.waiting')
{ {
if ( this.get('model.hosts.length') && this.get('model.services.length') ) if ( this.get('model.hosts.length') && this.get('model.services.length') )
{ {
@ -16,6 +17,7 @@ export default Ember.Controller.extend({
} }
} }
}.observes('model.hosts.length','model.services.length'), }.observes('model.hosts.length','model.services.length'),
*/
actions: { actions: {
newService() { newService() {

View File

@ -1,6 +1,7 @@
import Ember from 'ember'; import Ember from 'ember';
export default Ember.Route.extend({ export default Ember.Route.extend({
/*
redirect: function() { redirect: function() {
var main = this.modelFor('applications-tab'); var main = this.modelFor('applications-tab');
if ( main.get('hosts.length') && main.get('services.length') ) if ( main.get('hosts.length') && main.get('services.length') )
@ -22,4 +23,5 @@ export default Ember.Route.extend({
return main; return main;
} }
*/
}); });

View File

@ -1,3 +1,4 @@
Welcome, You've got Mail
{{#unless model.hosts.length}} {{#unless model.hosts.length}}
<section class="welcome well"> <section class="welcome well">
<i class="icon icon-host"></i> <i class="icon icon-host"></i>

View File

@ -3,6 +3,8 @@ import PolledResource from 'ui/mixins/cattle-polled-resource';
import Ember from 'ember'; import Ember from 'ember';
import C from 'ui/utils/constants'; import C from 'ui/utils/constants';
const { getOwner } = Ember;
var Project = Resource.extend(PolledResource, { var Project = Resource.extend(PolledResource, {
prefs: Ember.inject.service(), prefs: Ember.inject.service(),
projects: Ember.inject.service(), projects: Ember.inject.service(),
@ -164,8 +166,8 @@ var Project = Resource.extend(PolledResource, {
}; };
} }
let projectStore = getOwner(this).lookup('store:main');
var promises = []; let promises = [];
function _hasSystem(stacks) { function _hasSystem(stacks) {
stacks.forEach((stack) => { stacks.forEach((stack) => {
@ -183,7 +185,7 @@ var Project = Resource.extend(PolledResource, {
} }
else else
{ {
promises.push(this.get('store').findAllUnremoved('environment').then((stacks) => { promises.push(projectStore.findAllUnremoved('environment').then((stacks) => {
this.set('_stacks', stacks); this.set('_stacks', stacks);
_hasSystem(stacks); _hasSystem(stacks);
})); }));
@ -195,7 +197,7 @@ var Project = Resource.extend(PolledResource, {
} }
else else
{ {
promises.push(this.get('store').findAllActive('host').then((hosts) => { promises.push(projectStore.findAllActive('host').then((hosts) => {
hash.hasHost = hosts.get('length') > 0; hash.hasHost = hosts.get('length') > 0;
})); }));
} }
@ -243,6 +245,21 @@ var Project = Resource.extend(PolledResource, {
this.updateOrchestrationState(false); this.updateOrchestrationState(false);
} }
}.observes('_stacks.@each.externalId','_hosts.[]'), }.observes('_stacks.@each.externalId','_hosts.[]'),
isReady: function() {
var state = this.get('orchestrationState');
if ( !state )
{
return false;
}
return ( state.hasHost &&
(!state.hasKubernetes || state.kubernetesReady) &&
(!state.hasSwarm || state.swarmReady) &&
(!state.hasMesos || state.mesosReady)
);
}.property('orchestrationState'), // The state object is always completely replaced, so this is ok
}); });
// Projects don't get pushed by /subscribe WS, so refresh more often // Projects don't get pushed by /subscribe WS, so refresh more often