mirror of https://github.com/portainer/portainer
fix(app): remove duplicate values for multinode cluster [EE-6386] (#10947)
parent
3a959208a8
commit
ae6333bf7c
|
@ -122,15 +122,24 @@ function useNodeLabels(): NodeLabels {
|
||||||
}))
|
}))
|
||||||
) || [];
|
) || [];
|
||||||
|
|
||||||
// get unique node labels with each label's possible values
|
// create a NodeLabels object with each label key's possible values, without duplicate keys or values. e.g. { 'beta.kubernetes.io/arch': ['amd64', 'arm64'] }
|
||||||
const uniqueLabels = new Set(nodeLabelPairs.map((pair) => pair.key));
|
// in multinode clusters, there can be multiple nodes with the same label key
|
||||||
// create a NodeLabels object with each label's possible values
|
const allNodesLabels = nodeLabelPairs.map((pair) => pair.key);
|
||||||
const nodesLabels = Array.from(uniqueLabels).reduce((acc, key) => {
|
const uniqueNodesLabels = new Set(allNodesLabels);
|
||||||
acc[key] = nodeLabelPairs
|
const nodesLabels: NodeLabels = Array.from(uniqueNodesLabels).reduce(
|
||||||
.filter((pair) => pair.key === key)
|
(acc: NodeLabels, key) => {
|
||||||
.map((pair) => pair.value);
|
// get all possible values for a given node label key
|
||||||
return acc;
|
const allNodeValuesForKey = nodeLabelPairs
|
||||||
}, {} as NodeLabels);
|
.filter((pair) => pair.key === key)
|
||||||
|
.map((pair) => pair.value);
|
||||||
|
// in multinode clusters, there can be duplicate values for a given key, so remove them
|
||||||
|
const uniqueValues = Array.from(new Set(allNodeValuesForKey));
|
||||||
|
|
||||||
|
acc[key] = uniqueValues;
|
||||||
|
return acc;
|
||||||
|
},
|
||||||
|
{} as NodeLabels
|
||||||
|
);
|
||||||
|
|
||||||
return nodesLabels;
|
return nodesLabels;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue