From 4ce5f8206929ae6a61b41e461d9f2a412a1256aa Mon Sep 17 00:00:00 2001 From: lorsan Date: Sat, 11 Apr 2026 18:43:56 +0300 Subject: [PATCH 1/4] refactor: update logs --- internal/agent/rpc/client.go | 14 +++++++------- internal/agent/service/collector/collector.go | 1 + internal/agent/service/docker_service/docker.go | 11 +++++++++-- 3 files changed, 17 insertions(+), 9 deletions(-) create mode 100644 internal/agent/service/collector/collector.go diff --git a/internal/agent/rpc/client.go b/internal/agent/rpc/client.go index c7e452d..e03166c 100644 --- a/internal/agent/rpc/client.go +++ b/internal/agent/rpc/client.go @@ -2,30 +2,29 @@ package rpc import ( "context" - "fmt" pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops" "github.com/lorsanstand/HomeOps-Hub/internal/agent/domain" + "github.com/rs/zerolog" "google.golang.org/grpc" ) type Connection struct { hub pb.HubClient conn *grpc.ClientConn + log zerolog.Logger } -func NewConnectAgent(address string) (*Connection, error) { - conn, err := grpc.NewClient(address) - if err != nil { - return nil, fmt.Errorf("failed connection hub: %v", err) - } +func NewConnectAgent(conn *grpc.ClientConn, logger zerolog.Logger) *Connection { + logger = logger.With().Str("component", "agent.rpc").Logger() client := pb.NewHubClient(conn) - return &Connection{hub: client, conn: conn}, nil + return &Connection{hub: client, conn: conn, log: logger} } func (c *Connection) Close() error { + c.log.Warn().Msg("connection close") return c.conn.Close() } @@ -35,5 +34,6 @@ func (c *Connection) Hub() pb.HubClient { func (c *Connection) RegisterAgent(ctx context.Context, RegisterData domain.RegisterAgentData) (domain.RegisterAgentDataResponse, error) { ResponseData, err := c.Hub().RegisterAgent(ctx, new(toAgentRegisterRequest(RegisterData))) + c.log.Info().Msg("register agent") return toAgentRegisterDataResponse(ResponseData), err } diff --git a/internal/agent/service/collector/collector.go b/internal/agent/service/collector/collector.go new file mode 100644 index 0000000..66f94de --- /dev/null +++ b/internal/agent/service/collector/collector.go @@ -0,0 +1 @@ +package collector diff --git a/internal/agent/service/docker_service/docker.go b/internal/agent/service/docker_service/docker.go index c4052ff..d27e768 100644 --- a/internal/agent/service/docker_service/docker.go +++ b/internal/agent/service/docker_service/docker.go @@ -5,6 +5,7 @@ import ( "github.com/moby/moby/api/types" "github.com/moby/moby/api/types/container" + "github.com/rs/zerolog" ) type dockerAPI interface { @@ -14,18 +15,24 @@ type dockerAPI interface { type DockerService struct { dockerClient dockerAPI + log zerolog.Logger } -func NewDockerService(api dockerAPI) *DockerService { - return &DockerService{dockerClient: api} +func NewDockerService(api dockerAPI, logger zerolog.Logger) *DockerService { + return &DockerService{ + dockerClient: api, + log: logger.With().Str("component", "agent.serivce.docker").Logger(), + } } func (d *DockerService) CheckDockerDaemon(ctx context.Context) error { _, err := d.dockerClient.Ping(ctx) + d.log.Debug().Msg("check docker") return err } func (d *DockerService) ContainersList(ctx context.Context) ([]container.Summary, error) { ContainersList, err := d.dockerClient.ContainerList(ctx, container.ListOptions{}) + d.log.Debug().Msg("get container list") return ContainersList, err } From 3f950f37b32a24950d63d42818433af8e629526f Mon Sep 17 00:00:00 2001 From: lorsan Date: Sat, 11 Apr 2026 19:24:35 +0300 Subject: [PATCH 2/4] feat: get info system --- internal/agent/app/app.go | 14 +++--- internal/agent/service/collector/collector.go | 44 +++++++++++++++++++ .../agent/service/docker_service/docker.go | 10 +++++ .../service/docker_service/docker_test.go | 5 ++- 4 files changed, 64 insertions(+), 9 deletions(-) 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) { From 26b31221f827cb37861d00b8a9c295590be6bd4c Mon Sep 17 00:00:00 2001 From: lorsan Date: Sun, 12 Apr 2026 10:21:37 +0300 Subject: [PATCH 3/4] refactor: refactor app --- internal/agent/app/app.go | 33 +++++++++++++++---- internal/agent/service/collector/collector.go | 13 +++----- internal/agent/service/docker_service/bad.go | 20 +++++++++++ .../agent/service/docker_service/docker.go | 5 +-- 4 files changed, 53 insertions(+), 18 deletions(-) create mode 100644 internal/agent/service/docker_service/bad.go diff --git a/internal/agent/app/app.go b/internal/agent/app/app.go index 2ff3ba4..e16df09 100644 --- a/internal/agent/app/app.go +++ b/internal/agent/app/app.go @@ -3,10 +3,14 @@ package app import ( standartlog "log" + "github.com/docker/docker/client" "github.com/lorsanstand/HomeOps-Hub/internal/agent/rpc" + "github.com/lorsanstand/HomeOps-Hub/internal/agent/service/collector" + "github.com/lorsanstand/HomeOps-Hub/internal/agent/service/docker_service" "github.com/lorsanstand/HomeOps-Hub/internal/agent/utils/config_yaml" log2 "github.com/lorsanstand/HomeOps-Hub/internal/shared/log" "github.com/rs/zerolog" + "google.golang.org/grpc" ) type App struct { @@ -27,11 +31,26 @@ 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 + GRPCConn, err := grpc.NewClient(a.cfg.GetGRPCAddress()) + if err != nil { + a.log.Error().Err(err).Msg("failed to get hub connections") + return + } + + conn := rpc.NewConnectAgent(GRPCConn, a.log) + defer conn.Close() + + var DockerService collector.Docker + + DockerClient, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation()) + if err != nil { + a.log.Warn().Err(err).Msg("failed to get docker API") + DockerService = docker_service.NewBadDocker("not_installed") + } else { + DockerService = docker_service.NewDockerService(DockerClient, a.log) + } + + Collector := collector.NewCollector(DockerService, a.log) + + Collector.GatherInfoSystem() } diff --git a/internal/agent/service/collector/collector.go b/internal/agent/service/collector/collector.go index fdd4e67..4b613d9 100644 --- a/internal/agent/service/collector/collector.go +++ b/internal/agent/service/collector/collector.go @@ -1,31 +1,26 @@ 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 + log zerolog.Logger + dockerReader Docker } func NewCollector(docker Docker, logger zerolog.Logger) *Collector { logger = logger.With().Str("component", "agent.service.collector").Logger() - return &Collector{log: logger, docker: docker} + return &Collector{log: logger, dockerReader: docker} } func (c *Collector) GatherInfoSystem() (domain.HostInfo, []domain.Capability) { @@ -40,6 +35,6 @@ func (c *Collector) GatherInfoSystem() (domain.HostInfo, []domain.Capability) { host.Arch = runtime.GOARCH host.System = runtime.GOOS - caps := []domain.Capability{c.docker.Capability()} + caps := []domain.Capability{c.dockerReader.Capability()} return host, caps } diff --git a/internal/agent/service/docker_service/bad.go b/internal/agent/service/docker_service/bad.go new file mode 100644 index 0000000..bbd22ca --- /dev/null +++ b/internal/agent/service/docker_service/bad.go @@ -0,0 +1,20 @@ +package docker_service + +import "github.com/lorsanstand/HomeOps-Hub/internal/agent/domain" + +type BadDocker struct { + reason string +} + +func (d *BadDocker) Capability() domain.Capability { + return domain.Capability{ + Name: "docker", + Available: false, + Version: "", + Reason: d.reason, + } +} + +func NewBadDocker(reason string) *BadDocker { + return &BadDocker{reason: reason} +} diff --git a/internal/agent/service/docker_service/docker.go b/internal/agent/service/docker_service/docker.go index 680b39b..991d9e7 100644 --- a/internal/agent/service/docker_service/docker.go +++ b/internal/agent/service/docker_service/docker.go @@ -3,9 +3,10 @@ package docker_service import ( "context" + "github.com/docker/docker/api/types" + "github.com/docker/docker/api/types/container" "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" ) From 49a3f1b20c5a14ae331af34844eaef6e29f7731c Mon Sep 17 00:00:00 2001 From: lorsan Date: Sun, 12 Apr 2026 10:24:54 +0300 Subject: [PATCH 4/4] fix: docker test --- go.mod | 30 +++++- go.sum | 98 +++++++++++++++---- .../service/docker_service/docker_test.go | 4 +- 3 files changed, 106 insertions(+), 26 deletions(-) diff --git a/go.mod b/go.mod index 00638e0..0ea2513 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module github.com/lorsanstand/HomeOps-Hub go 1.26.1 require ( + github.com/docker/docker v28.5.2+incompatible github.com/ilyakaznacheev/cleanenv v1.5.0 github.com/moby/moby v28.5.2+incompatible github.com/rs/zerolog v1.35.0 @@ -13,19 +14,38 @@ require ( require ( github.com/BurntSushi/toml v1.2.1 // indirect - github.com/docker/docker v28.5.2+incompatible // indirect + github.com/Microsoft/go-winio v0.4.21 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/containerd/errdefs v1.0.0 // indirect + github.com/containerd/errdefs/pkg v0.3.0 // indirect + github.com/containerd/log v0.1.0 // indirect + github.com/distribution/reference v0.6.0 // indirect github.com/docker/go-connections v0.6.0 // indirect github.com/docker/go-units v0.5.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/go-logr/logr v1.4.3 // indirect + github.com/go-logr/stdr v1.2.2 // indirect github.com/joho/godotenv v1.5.1 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect + github.com/moby/sys/atomicwriter v0.1.0 // indirect + github.com/moby/term v0.5.2 // indirect + github.com/morikuni/aec v1.1.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.33.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 // indirect + github.com/pkg/errors v0.9.1 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0 // indirect + go.opentelemetry.io/otel v1.43.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 // indirect + go.opentelemetry.io/otel/metric v1.43.0 // indirect + go.opentelemetry.io/otel/trace v1.43.0 // indirect + golang.org/x/net v0.52.0 // indirect + golang.org/x/sys v0.42.0 // indirect + golang.org/x/text v0.35.0 // indirect + golang.org/x/time v0.15.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 // indirect gotest.tools/v3 v3.5.2 // indirect olympos.io/encoding/edn v0.0.0-20201019073823-d3554ca0b0a3 // indirect ) diff --git a/go.sum b/go.sum index 0a2549b..3ab14ab 100644 --- a/go.sum +++ b/go.sum @@ -1,13 +1,32 @@ +github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg= +github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/Microsoft/go-winio v0.4.21 h1:+6mVbXh4wPzUrl1COX9A+ZCvEpYsOBZ6/+kwDnvLyro= +github.com/Microsoft/go-winio v0.4.21/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= +github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= +github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= +github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= +github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk= +github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= +github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= +github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/docker/docker v28.5.2+incompatible h1:DBX0Y0zAjZbSrm1uzOkdr1onVghKaftjlSWt4AFexzM= github.com/docker/docker v28.5.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.6.0 h1:LlMG9azAe1TqfR7sO+NJttz1gy6KO7VJBh+pMmjSD94= github.com/docker/go-connections v0.6.0/go.mod h1:AahvXYshr6JgfUJGdDCs2b5EZG/vmaMAntpSFH5BFKE= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= @@ -18,10 +37,16 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= github.com/ilyakaznacheev/cleanenv v1.5.0 h1:0VNZXggJE2OYdXE87bfSSwGxeiGt9moSR2lOrsHHvr4= github.com/ilyakaznacheev/cleanenv v1.5.0/go.mod h1:a5aDzaJrLCQZsazHol1w8InnDcOX0OColm64SlIi6gk= github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= @@ -30,41 +55,76 @@ github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3N github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/moby v28.5.2+incompatible h1:hIn6qcenb3JY1E3STwqEbBvJ8bha+u1LpqjX4CBvNCk= github.com/moby/moby v28.5.2+incompatible/go.mod h1:fDXVQ6+S340veQPv35CzDahGBmHsiclFwfEygB/TWMc= +github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw= +github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs= +github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= +github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko= +github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ= +github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc= +github.com/morikuni/aec v1.1.0 h1:vBBl0pUnvi/Je71dsRrhMBtreIqNMYErSAbEeb8jrXQ= +github.com/morikuni/aec v1.1.0/go.mod h1:xDRgiq/iw5l+zkao76YTKzKttOp2cwPEne25HDkJnBw= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/rs/zerolog v1.35.0 h1:VD0ykx7HMiMJytqINBsKcbLS+BJ4WYjz+05us+LRTdI= github.com/rs/zerolog v1.35.0/go.mod h1:EjML9kdfa/RMA7h/6z6pYmq1ykOuA8/mjWaEvGI+jcw= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= -go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= -go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= -go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= -go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= -go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= -go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= -go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= -go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= -go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0 h1:CqXxU8VOmDefoh0+ztfGaymYbhdB/tT3zs79QaZTNGY= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0/go.mod h1:BuhAPThV8PBHBvg8ZzZ/Ok3idOdhWIodywz2xEcRbJo= +go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= +go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 h1:3iZJKlCZufyRzPzlQhUIWVmfltrXuGyfjREgGP3UUjc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0/go.mod h1:/G+nUPfhq2e+qiXMGxMwumDrP5jtzU+mWN7/sjT2rak= +go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= +go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= +go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= +go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= +go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= +go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= +go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= +go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= +go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g= +go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= +golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 h1:sNrWoksmOyF5bvJUcnmbeAmQi8baNhqg5IWaI3llQqU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 h1:VPWxll4HlMw1Vs/qXtN7BvhZqsS9cdAittCNvVENElA= +google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:7QBABkRtR8z+TEnmXTqIqwJLlzrZKVfAUm7tY3yGv0M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 h1:m8qni9SQFH0tJc1X0vmnpw/0t+AImlSvp30sEupozUg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= diff --git a/internal/agent/service/docker_service/docker_test.go b/internal/agent/service/docker_service/docker_test.go index 4813c6b..25db239 100644 --- a/internal/agent/service/docker_service/docker_test.go +++ b/internal/agent/service/docker_service/docker_test.go @@ -5,8 +5,8 @@ import ( "errors" "testing" - "github.com/moby/moby/api/types" - "github.com/moby/moby/api/types/container" + "github.com/docker/docker/api/types" + "github.com/docker/docker/api/types/container" "github.com/rs/zerolog" )