dnsmasq-netbox-connector/main.go

51 lines
1.4 KiB
Go
Raw Normal View History

package main
import (
"context"
"fmt"
"os"
"git.faercol.me/faercol/dnsmasq-netbox-connector/internal/config"
"git.faercol.me/faercol/dnsmasq-netbox-connector/internal/dnsmasq"
"git.faercol.me/faercol/dnsmasq-netbox-connector/internal/healthchecks"
gohealthchecks "git.faercol.me/faercol/go-healthchecks"
)
func main() {
configPath := "/etc/dnmasq-netbox/config.json"
if len(os.Args) > 1 {
configPath = os.Args[1]
}
conf, err := config.New(configPath)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to read configuration: %s\n", err)
os.Exit(1)
}
healtchecksClt := gohealthchecks.NewPingClient(conf.HostPingAPI)
check, err := healthchecks.Start(context.Background(), conf.HealthchecksConfig, healtchecksClt)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to notify process start: %s\n", err)
}
leases, err := dnsmasq.GetLeases(conf.LeasesPath)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to parse leases: %s\n", err)
if err := healthchecks.Failure(context.Background(), conf.HealthchecksConfig, healtchecksClt, check, "failed to parse lease file"); err != nil {
fmt.Fprintf(os.Stderr, "Failed to notify failure: %s\n", err)
}
os.Exit(1)
}
for _, l := range leases {
fmt.Printf("Got lease %s\n", l)
}
if err := healthchecks.Success(context.Background(), conf.HealthchecksConfig, healtchecksClt, check); err != nil {
fmt.Fprintf(os.Stderr, "Failed to notify process success: %s\n", err)
}
}