Files
HomeOps-Hub/internal/agent/service/collector/collector.go
T
2026-04-11 19:24:35 +03:00

46 lines
1.0 KiB
Go

package collector
import (
"context"
"os"
"runtime"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
"github.com/lorsanstand/HomeOps-Hub/internal/agent/domain"
"github.com/rs/zerolog"
)
type Docker interface {
Ping(ctx context.Context) (types.Ping, error)
ContainerList(ctx context.Context, opts container.ListOptions) ([]container.Summary, error)
Capability() domain.Capability
}
type Collector struct {
log zerolog.Logger
docker Docker
}
func NewCollector(docker Docker, logger zerolog.Logger) *Collector {
logger = logger.With().Str("component", "agent.service.collector").Logger()
return &Collector{log: logger, docker: docker}
}
func (c *Collector) GatherInfoSystem() (domain.HostInfo, []domain.Capability) {
var host domain.HostInfo
hostname, err := os.Hostname()
if err != nil {
c.log.Warn().Msg("failed to get hostname")
}
host.Hostname = hostname
host.Arch = runtime.GOARCH
host.System = runtime.GOOS
caps := []domain.Capability{c.docker.Capability()}
return host, caps
}