2dec484724
* ui: Reduce discovery-chain log spam Currently the only way that the UI can know whether connect is enabled or not is whether we get 500 errors from certain endpoints. One of these endpoints we already use, so aswell as recovering from a 500 error, we also remember that connect is disabled for the rest of the page 'session' (so until the page is refreshed), and make no further http requests to the endpoint for that specific datacenter. This means that log spam is reduced to only 1 log per page refresh/dc instead of 1 log per service navigation. Longer term we'll need some way to dynamically discover whether connect is enabled per datacenter without relying on something that will add error logs to consul.
32 lines
1 KiB
JavaScript
32 lines
1 KiB
JavaScript
import { inject as service } from '@ember/service';
|
|
import { get, set } from '@ember/object';
|
|
import RepositoryService from 'consul-ui/services/repository';
|
|
|
|
const modelName = 'discovery-chain';
|
|
const ERROR_MESH_DISABLED = 'Connect must be enabled in order to use this endpoint';
|
|
export default RepositoryService.extend({
|
|
dcs: service('repository/dc'),
|
|
getModelName: function() {
|
|
return modelName;
|
|
},
|
|
findBySlug: function(slug, dc, nspace, configuration = {}) {
|
|
const datacenter = this.dcs.peekOne(dc);
|
|
if (datacenter !== null && !get(datacenter, 'MeshEnabled')) {
|
|
return Promise.resolve();
|
|
}
|
|
return this._super(...arguments).catch(e => {
|
|
const code = get(e, 'errors.firstObject.status');
|
|
const body = get(e, 'errors.firstObject.detail').trim();
|
|
switch (code) {
|
|
case '500':
|
|
if (datacenter !== null && body === ERROR_MESH_DISABLED) {
|
|
set(datacenter, 'MeshEnabled', false);
|
|
}
|
|
return;
|
|
default:
|
|
return;
|
|
}
|
|
});
|
|
},
|
|
});
|