1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Conditionally render node taints upon value existance

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2021-10-07 16:16:07 -04:00
parent e10c13cdf4
commit 2a3802f0ba
3 changed files with 20 additions and 13 deletions

View File

@ -56,6 +56,21 @@ export interface INodeMetrics<T = IMetrics> {
fsSize: T; fsSize: T;
} }
export interface NodeTaint {
key: string;
value?: string;
effect: string;
timeAdded: string;
}
export function formatNodeTaint(taint: NodeTaint): string {
if (taint.value) {
return `${taint.key}=${taint.value}:${taint.effect}`;
}
return `${taint.key}:${taint.effect}`;
}
export interface Node { export interface Node {
spec: { spec: {
podCIDR?: string; podCIDR?: string;
@ -65,12 +80,7 @@ export interface Node {
* @deprecated see https://issues.k8s.io/61966 * @deprecated see https://issues.k8s.io/61966
*/ */
externalID?: string; externalID?: string;
taints?: { taints?: NodeTaint[];
key: string;
value: string;
effect: string;
timeAdded: string;
}[];
unschedulable?: boolean; unschedulable?: boolean;
}; };
status: { status: {

View File

@ -132,11 +132,7 @@ export class NodeDetails extends React.Component<Props> {
/> />
{taints.length > 0 && ( {taints.length > 0 && (
<DrawerItem name="Taints" labelsOnly> <DrawerItem name="Taints" labelsOnly>
{ {taints.map(taint => <Badge key={taint.key} label={formatNodeTaint(taint)} />)}
taints.map(({ key, effect, value }) => (
<Badge key={key} label={`${key}=${value}:${effect}`} />
))
}
</DrawerItem> </DrawerItem>
)} )}
{conditions && {conditions &&

View File

@ -227,6 +227,7 @@ export class Nodes extends React.Component<Props> {
]} ]}
renderTableContents={node => { renderTableContents={node => {
const tooltipId = `node-taints-${node.getId()}`; const tooltipId = `node-taints-${node.getId()}`;
const taints = node.getTaints();
return [ return [
<Badge flat key="name" label={node.getName()} tooltip={node.getName()} />, <Badge flat key="name" label={node.getName()} tooltip={node.getName()} />,
@ -235,9 +236,9 @@ export class Nodes extends React.Component<Props> {
this.renderMemoryUsage(node), this.renderMemoryUsage(node),
this.renderDiskUsage(node), this.renderDiskUsage(node),
<> <>
<span id={tooltipId}>{node.getTaints().length}</span> <span id={tooltipId}>{taints.length}</span>
<Tooltip targetId={tooltipId} tooltipOnParentHover={true} style={{ whiteSpace: "pre-line" }}> <Tooltip targetId={tooltipId} tooltipOnParentHover={true} style={{ whiteSpace: "pre-line" }}>
{node.getTaints().map(({ key, value, effect }) => `${key}=${value}:${effect}`).join("\n")} {taints.map(formatNodeTaint).join("\n")}
</Tooltip> </Tooltip>
</>, </>,
node.getRoleLabels(), node.getRoleLabels(),