in pkg/model/uimodel.go [87:148]
func (u *UIModel) writeNodeInfo(n *Node, w io.Writer, resources []v1.ResourceName) {
allocatable := n.Allocatable()
used := n.Used()
firstLine := true
resNameLen := 0
for _, res := range resources {
if len(res) > resNameLen {
resNameLen = len(res)
}
}
for _, res := range resources {
usedRes := used[res]
allocatableRes := allocatable[res]
pct := usedRes.AsApproximateFloat64() / allocatableRes.AsApproximateFloat64()
if allocatableRes.AsApproximateFloat64() == 0 {
pct = 0
}
if firstLine {
priceLabel := fmt.Sprintf("/$%0.3f", n.Price)
if n.Price != n.Price {
priceLabel = ""
}
fmt.Fprintf(w, "%s\t%s\t%s\t(%d pods)\t%s%s", n.Name(), res, u.progress.ViewAs(pct), n.NumPods(), n.InstanceType(), priceLabel)
if n.IsOnDemand() {
fmt.Fprintf(w, "\tOn-Demand")
} else if n.IsSpot() {
fmt.Fprintf(w, "\tSpot")
} else {
fmt.Fprintf(w, "\t-")
}
if n.Cordoned() && n.Deleting() {
fmt.Fprintf(w, "\tCordoned/Deleting")
} else if n.Deleting() {
fmt.Fprintf(w, "\tDeleting")
} else if n.Cordoned() {
fmt.Fprintf(w, "\tCordoned")
} else {
fmt.Fprintf(w, "\t-")
}
if n.Ready() {
fmt.Fprintf(w, "\tReady")
} else {
fmt.Fprintf(w, "\t%s", time.Since(n.Created()).Round(time.Millisecond).String())
}
for _, label := range u.extraLabels {
fmt.Fprintf(w, "\t%s", n.node.Labels[label])
}
} else {
fmt.Fprintf(w, " \t%s\t%s\t\t\t\t\t", res, u.progress.ViewAs(pct))
for range u.extraLabels {
fmt.Fprintf(w, "\t")
}
}
fmt.Fprintln(w)
firstLine = false
}
}