consul/ui/packages/consul-ui/app/serializers/topology.js

42 lines
1.3 KiB
JavaScript

/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import Serializer from './application';
import { PRIMARY_KEY, SLUG_KEY } from 'consul-ui/models/topology';
import { inject as service } from '@ember/service';
export default class TopologySerializer extends Serializer {
@service('store') store;
primaryKey = PRIMARY_KEY;
slugKey = SLUG_KEY;
respondForQueryRecord(respond, query) {
const intentionSerializer = this.store.serializerFor('intention');
return super.respondForQueryRecord(function (cb) {
return respond(function (headers, body) {
body.Downstreams.forEach((item) => {
item.Intention.SourceName = item.Name;
item.Intention.SourceNS = item.Namespace;
item.Intention.DestinationName = query.id;
item.Intention.DestinationNS = query.ns || 'default';
intentionSerializer.ensureID(item.Intention);
});
body.Upstreams.forEach((item) => {
item.Intention.SourceName = query.id;
item.Intention.SourceNS = query.ns || 'default';
item.Intention.DestinationName = item.Name;
item.Intention.DestinationNS = item.Namespace;
intentionSerializer.ensureID(item.Intention);
});
return cb(headers, {
...body,
[SLUG_KEY]: query.id,
});
});
}, query);
}
}