14c6152361
* ui: Normal proxies line to services, sidecars to instances Following on from https://github.com/hashicorp/consul/pull/5933 we noticed that 'normal' proxies should link to the service, rather than the service instance. Additionally proxy 'searching' within the repository should take into account the name of the node that the originating service is on (sidecar proxies are generally co-located) Added an additional test here to prove that a sidecar-proxy with the same service id but on a different node does not show the sidecar proxy link.
41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
import RepositoryService from 'consul-ui/services/repository';
|
|
import { PRIMARY_KEY } from 'consul-ui/models/proxy';
|
|
import { get, set } from '@ember/object';
|
|
const modelName = 'proxy';
|
|
export default RepositoryService.extend({
|
|
getModelName: function() {
|
|
return modelName;
|
|
},
|
|
getPrimaryKey: function() {
|
|
return PRIMARY_KEY;
|
|
},
|
|
findAllBySlug: function(slug, dc, configuration = {}) {
|
|
const query = {
|
|
id: slug,
|
|
dc: dc,
|
|
};
|
|
if (typeof configuration.cursor !== 'undefined') {
|
|
query.index = configuration.cursor;
|
|
}
|
|
return this.get('store').query(this.getModelName(), query);
|
|
},
|
|
findInstanceBySlug: function(id, node, slug, dc, configuration) {
|
|
return this.findAllBySlug(slug, dc, configuration).then(function(items) {
|
|
let res = {};
|
|
if (get(items, 'length') > 0) {
|
|
let instance = items.filterBy('ServiceProxy.DestinationServiceID', id).findBy('Node', node);
|
|
if (instance) {
|
|
res = instance;
|
|
} else {
|
|
instance = items.findBy('ServiceProxy.DestinationServiceName', slug);
|
|
if (instance) {
|
|
res = instance;
|
|
}
|
|
}
|
|
}
|
|
set(res, 'meta', get(items, 'meta'));
|
|
return res;
|
|
});
|
|
},
|
|
});
|