mirror of
https://github.com/lorsanstand/HomeOps-Hub.git
synced 2026-06-19 16:45:15 +03:00
feat: get info system
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user