mirror of https://github.com/portainer/portainer
31 lines
1.1 KiB
JavaScript
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;
|