27 lines
1,019 B
Go
27 lines
1,019 B
Go
package ui
|
|
|
|
import (
|
|
"bufio"
|
|
"fmt"
|
|
|
|
"github.com/Pingu-Studio/MaidnCLI/internal/config"
|
|
"github.com/Pingu-Studio/MaidnCLI/internal/proxmox"
|
|
)
|
|
|
|
func discoverProxmox(reader *bufio.Reader, cfg config.Config) ([]proxmox.NodeInfo, error) {
|
|
for {
|
|
discovered, err := proxmox.New(cfg.Talos.Proxmox.APIURL, cfg.Talos.Proxmox.APITokenID, cfg.Talos.Proxmox.APITokenSecret, cfg.Talos.Proxmox.Insecure).Discover()
|
|
if err == nil {
|
|
return discovered, nil
|
|
}
|
|
fmt.Printf("[WARN] Proxmox discovery failed: %v\n", err)
|
|
fmt.Println("[WARN] Required token perms for discovery: Sys.Audit on nodes/storage/network you want listed.")
|
|
if !promptBool(reader, "Retry Proxmox discovery", true) {
|
|
return nil, err
|
|
}
|
|
cfg.Talos.Proxmox.APIURL = prompt(reader, "Proxmox API URL", cfg.Talos.Proxmox.APIURL)
|
|
cfg.Talos.Proxmox.APITokenID = prompt(reader, "Proxmox API token ID", cfg.Talos.Proxmox.APITokenID)
|
|
cfg.Talos.Proxmox.APITokenSecret = prompt(reader, "Proxmox API token secret", cfg.Talos.Proxmox.APITokenSecret)
|
|
}
|
|
}
|