Files
jagacloud/cmd/node-agent/main.go
2025-11-23 11:29:12 +07:00

41 lines
1.0 KiB
Go

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)
}
}