Files
formae-plugin-proxmox/helper.go
2026-01-31 11:47:28 +01:00

51 lines
1.2 KiB
Go

package main
import (
"encoding/json"
"fmt"
"os"
)
func parseTargetConfig(data json.RawMessage) (*TargetConfig, error) {
var cfg TargetConfig
if err := json.Unmarshal(data, &cfg); err != nil {
return nil, fmt.Errorf("invalid target config: %w", err)
}
if cfg.URL == "" {
return nil, fmt.Errorf("target config missing 'url'")
}
if cfg.NODE == "" {
return nil, fmt.Errorf("target config missing 'node'")
}
return &cfg, nil
}
func getCredentials() (username, token string, err error) {
username = os.Getenv("PROXMOX_USERNAME")
token = os.Getenv("PROXMOX_TOKEN")
if username == "" {
return "", "", fmt.Errorf("PROXMOX_USERNAME not set")
}
if token == "" {
return "", "", fmt.Errorf("PROXMOX_TOKEN not set")
}
return username, token, nil
}
func parseLXCProperties(data json.RawMessage) (*LXCProperties, error) {
var props LXCProperties
if err := json.Unmarshal(data, &props); err != nil {
return nil, fmt.Errorf("invalid file properties: %w", err)
}
if props.VMID == "" {
return nil, fmt.Errorf("vmid missing")
}
if props.Hostname == "" {
return nil, fmt.Errorf("name missing")
}
if props.OSTemplate == "" {
return nil, fmt.Errorf("ostemplate missing")
}
return &props, nil
}