package main import ( "context" "log" "net/http" "github.com/go-chi/chi/v5" "jagacloud/node-agent/pkg/api" "jagacloud/node-agent/pkg/compute/libvirt" "jagacloud/node-agent/pkg/config" "jagacloud/node-agent/pkg/containers/lxc" "jagacloud/node-agent/pkg/containers/podman" "jagacloud/node-agent/pkg/state" "jagacloud/node-agent/pkg/tasks" ) func main() { cfg := config.LoadOrExit("/etc/jagacloud/agent.yaml") store := state.NewStore(cfg.VMPath, cfg.CTPath) svc := api.Services{ Tasks: tasks.NewRegistry(), Libvirt: libvirt.NewVirshClient(cfg.LibvirtURI, "templates/libvirt/domain.xml.tmpl", "/etc/jagacloud/libvirt"), LXC: lxc.NewCmdManager(cfg.LXCPath), Podman: podman.NewCmdClient(cfg.PodmanSocket), Store: store, } go svc.Tasks.StartWorker(context.Background()) r := chi.NewRouter() api.RegisterRoutes(r, cfg, svc) log.Printf("node-agent listening on %s", cfg.ListenAddr) if err := http.ListenAndServe(cfg.ListenAddr, r); err != nil { log.Fatalf("http server failed: %v", err) } }