41 lines
1.0 KiB
Go
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)
|
|
}
|
|
}
|