portainer/app/kubernetes/endpoint/converter.js

31 lines
1.1 KiB
JavaScript

import _ from 'lodash-es';
import { KubernetesEndpoint, KubernetesEndpointAnnotationLeader, KubernetesEndpointSubset } from 'Kubernetes/endpoint/models';
class KubernetesEndpointConverter {
static apiToEndpoint(data) {
const res = new KubernetesEndpoint();
res.Id = data.metadata.uid;
res.Name = data.metadata.name;
res.Namespace = data.metadata.namespace;
const leaderAnnotation = data.metadata.annotations ? data.metadata.annotations[KubernetesEndpointAnnotationLeader] : '';
if (leaderAnnotation) {
const parsedJson = JSON.parse(leaderAnnotation);
const split = _.split(parsedJson.holderIdentity, '_');
res.HolderIdentity = split[0];
}
if (data.subsets) {
res.Subsets = _.map(data.subsets, (item) => {
const subset = new KubernetesEndpointSubset();
subset.Ips = _.map(item.addresses, 'ip');
const port = _.find(item.ports, { name: 'https' });
subset.Port = port ? port.port : undefined;
return subset;
});
}
return res;
}
}
export default KubernetesEndpointConverter;