in cmd/aks-node-viewer/main.go [42:101]
func main() {
flags, err := ParseFlags()
if err != nil {
if errors.Is(err, flag.ErrHelp) {
os.Exit(0)
}
log.Fatalf("cannot parse flags: %v", err)
}
if flags.ShowAttribution {
fmt.Println(attribution)
os.Exit(0)
}
if flags.Version {
fmt.Printf("aks-node-viewer version %s\n", version)
fmt.Printf("commit: %s\n", commit)
fmt.Printf("built at: %s\n", date)
fmt.Printf("built by: %s\n", builtBy)
os.Exit(0)
}
cs, err := client.Create(flags.Kubeconfig, flags.Context)
if err != nil {
log.Fatalf("creating client, %s", err)
}
ctx, cancel := context.WithCancel(context.Background())
pprov := pricing.NewProvider(ctx, pricing.NewAPI(), "westus2")
updateStarted := time.Now()
for {
if pprov.OnDemandLastUpdated().After(updateStarted) {
break
}
log.Println("waiting on pricing update...")
time.Sleep(1 * time.Second)
}
m := model.NewUIModel(strings.Split(flags.ExtraLabels, ","))
m.SetResources(strings.FieldsFunc(flags.Resources, func(r rune) bool { return r == ',' }))
var nodeSelector labels.Selector
if ns, err := labels.Parse(flags.NodeSelector); err != nil {
log.Fatalf("parsing node selector: %s", err)
} else {
nodeSelector = ns
}
monitorSettings := &monitorSettings{
clientset: cs,
model: m,
nodeSelector: nodeSelector,
pricing: pprov,
}
startMonitor(ctx, monitorSettings)
if _, err := tea.NewProgram(m, tea.WithAltScreen()).Run(); err != nil {
log.Fatalf("error running tea: %s", err)
}
cancel()
}