open-consul/ui/packages/consul-ui/app/routes/dc/services/show/index.js

36 lines
1015 B
JavaScript

import Route from '@ember/routing/route';
import { get } from '@ember/object';
export default class IndexRoute extends Route {
async afterModel(model, transition) {
const parent = this.routeName
.split('.')
.slice(0, -1)
.join('.');
let to = 'topology';
const parentModel = this.modelFor(parent);
const hasProxy = get(parentModel, 'proxies.length') !== 0;
const item = get(parentModel, 'items.firstObject');
const kind = get(item, 'Service.Kind');
const hasTopology = get(parentModel, 'dc.MeshEnabled') && get(item, 'IsMeshOrigin');
switch (kind) {
case 'ingress-gateway':
if (!hasTopology) {
to = 'upstreams';
}
break;
case 'terminating-gateway':
to = 'services';
break;
case 'mesh-gateway':
to = 'instances';
break;
default:
if (!hasProxy || !hasTopology) {
to = 'instances';
}
}
this.replaceWith(`${parent}.${to}`, parentModel);
}
}