feat: get info system

This commit is contained in:
lorsan
2026-04-11 19:24:35 +03:00
parent 4ce5f82069
commit 3f950f37b3
4 changed files with 64 additions and 9 deletions
+7 -7
View File
@@ -27,11 +27,11 @@ func NewApp() *App {
} }
func (a *App) Run() { func (a *App) Run() {
conn, err := rpc.NewConnectAgent(a.cfg.GetGRPCAddress()) //conn, err := rpc.NewConnectAgent(a.cfg.GetGRPCAddress())
if err != nil { //if err != nil {
a.log.Error().Err(err) // a.log.Error().Err(err)
return // return
} //}
//
a.hubConn = conn //a.hubConn = conn
} }
@@ -1 +1,45 @@
package collector 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
}
@@ -3,6 +3,7 @@ package docker_service
import ( import (
"context" "context"
"github.com/lorsanstand/HomeOps-Hub/internal/agent/domain"
"github.com/moby/moby/api/types" "github.com/moby/moby/api/types"
"github.com/moby/moby/api/types/container" "github.com/moby/moby/api/types/container"
"github.com/rs/zerolog" "github.com/rs/zerolog"
@@ -36,3 +37,12 @@ func (d *DockerService) ContainersList(ctx context.Context) ([]container.Summary
d.log.Debug().Msg("get container list") d.log.Debug().Msg("get container list")
return ContainersList, err return ContainersList, err
} }
func (d *DockerService) Capability() domain.Capability {
return domain.Capability{
Available: true,
Version: "0",
Name: "docker",
Reason: "",
}
}
@@ -7,6 +7,7 @@ import (
"github.com/moby/moby/api/types" "github.com/moby/moby/api/types"
"github.com/moby/moby/api/types/container" "github.com/moby/moby/api/types/container"
"github.com/rs/zerolog"
) )
var testError error = errors.New("test") var testError error = errors.New("test")
@@ -58,7 +59,7 @@ func TestCheckDockerDaemon(t *testing.T) {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
t.Parallel() t.Parallel()
svc := NewDockerService(tt.mock) svc := NewDockerService(tt.mock, zerolog.Logger{})
err := svc.CheckDockerDaemon(context.Background()) err := svc.CheckDockerDaemon(context.Background())
if !errors.Is(err, tt.wantErr) { if !errors.Is(err, tt.wantErr) {
@@ -119,7 +120,7 @@ func TestContainersList(t *testing.T) {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
t.Parallel() t.Parallel()
svc := NewDockerService(tt.mock) svc := NewDockerService(tt.mock, zerolog.Logger{})
got, err := svc.ContainersList(context.Background()) got, err := svc.ContainersList(context.Background())
if !errors.Is(err, tt.wantErr) { if !errors.Is(err, tt.wantErr) {