diff --git a/internal/agent/app/app.go b/internal/agent/app/app.go index 18f4f60..2ff3ba4 100644 --- a/internal/agent/app/app.go +++ b/internal/agent/app/app.go @@ -27,11 +27,11 @@ func NewApp() *App { } func (a *App) Run() { - conn, err := rpc.NewConnectAgent(a.cfg.GetGRPCAddress()) - if err != nil { - a.log.Error().Err(err) - return - } - - a.hubConn = conn + //conn, err := rpc.NewConnectAgent(a.cfg.GetGRPCAddress()) + //if err != nil { + // a.log.Error().Err(err) + // return + //} + // + //a.hubConn = conn } diff --git a/internal/agent/service/collector/collector.go b/internal/agent/service/collector/collector.go index 66f94de..fdd4e67 100644 --- a/internal/agent/service/collector/collector.go +++ b/internal/agent/service/collector/collector.go @@ -1 +1,45 @@ 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 +} diff --git a/internal/agent/service/docker_service/docker.go b/internal/agent/service/docker_service/docker.go index d27e768..680b39b 100644 --- a/internal/agent/service/docker_service/docker.go +++ b/internal/agent/service/docker_service/docker.go @@ -3,6 +3,7 @@ package docker_service import ( "context" + "github.com/lorsanstand/HomeOps-Hub/internal/agent/domain" "github.com/moby/moby/api/types" "github.com/moby/moby/api/types/container" "github.com/rs/zerolog" @@ -36,3 +37,12 @@ func (d *DockerService) ContainersList(ctx context.Context) ([]container.Summary d.log.Debug().Msg("get container list") return ContainersList, err } + +func (d *DockerService) Capability() domain.Capability { + return domain.Capability{ + Available: true, + Version: "0", + Name: "docker", + Reason: "", + } +} diff --git a/internal/agent/service/docker_service/docker_test.go b/internal/agent/service/docker_service/docker_test.go index 1c46838..4813c6b 100644 --- a/internal/agent/service/docker_service/docker_test.go +++ b/internal/agent/service/docker_service/docker_test.go @@ -7,6 +7,7 @@ import ( "github.com/moby/moby/api/types" "github.com/moby/moby/api/types/container" + "github.com/rs/zerolog" ) var testError error = errors.New("test") @@ -58,7 +59,7 @@ func TestCheckDockerDaemon(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - svc := NewDockerService(tt.mock) + svc := NewDockerService(tt.mock, zerolog.Logger{}) err := svc.CheckDockerDaemon(context.Background()) if !errors.Is(err, tt.wantErr) { @@ -119,7 +120,7 @@ func TestContainersList(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - svc := NewDockerService(tt.mock) + svc := NewDockerService(tt.mock, zerolog.Logger{}) got, err := svc.ContainersList(context.Background()) if !errors.Is(err, tt.wantErr) {