mirror of
https://github.com/lorsanstand/HomeOps-Hub.git
synced 2026-06-19 16:45:15 +03:00
refactor: refactor app
This commit is contained in:
@@ -3,10 +3,14 @@ package app
|
|||||||
import (
|
import (
|
||||||
standartlog "log"
|
standartlog "log"
|
||||||
|
|
||||||
|
"github.com/docker/docker/client"
|
||||||
"github.com/lorsanstand/HomeOps-Hub/internal/agent/rpc"
|
"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"
|
"github.com/lorsanstand/HomeOps-Hub/internal/agent/utils/config_yaml"
|
||||||
log2 "github.com/lorsanstand/HomeOps-Hub/internal/shared/log"
|
log2 "github.com/lorsanstand/HomeOps-Hub/internal/shared/log"
|
||||||
"github.com/rs/zerolog"
|
"github.com/rs/zerolog"
|
||||||
|
"google.golang.org/grpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
type App struct {
|
type App struct {
|
||||||
@@ -27,11 +31,26 @@ func NewApp() *App {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) Run() {
|
func (a *App) Run() {
|
||||||
//conn, err := rpc.NewConnectAgent(a.cfg.GetGRPCAddress())
|
GRPCConn, err := grpc.NewClient(a.cfg.GetGRPCAddress())
|
||||||
//if err != nil {
|
if err != nil {
|
||||||
// a.log.Error().Err(err)
|
a.log.Error().Err(err).Msg("failed to get hub connections")
|
||||||
// return
|
return
|
||||||
//}
|
}
|
||||||
//
|
|
||||||
//a.hubConn = conn
|
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()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,31 +1,26 @@
|
|||||||
package collector
|
package collector
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
|
||||||
"os"
|
"os"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
|
||||||
"github.com/docker/docker/api/types"
|
|
||||||
"github.com/docker/docker/api/types/container"
|
|
||||||
"github.com/lorsanstand/HomeOps-Hub/internal/agent/domain"
|
"github.com/lorsanstand/HomeOps-Hub/internal/agent/domain"
|
||||||
"github.com/rs/zerolog"
|
"github.com/rs/zerolog"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Docker interface {
|
type Docker interface {
|
||||||
Ping(ctx context.Context) (types.Ping, error)
|
|
||||||
ContainerList(ctx context.Context, opts container.ListOptions) ([]container.Summary, error)
|
|
||||||
Capability() domain.Capability
|
Capability() domain.Capability
|
||||||
}
|
}
|
||||||
|
|
||||||
type Collector struct {
|
type Collector struct {
|
||||||
log zerolog.Logger
|
log zerolog.Logger
|
||||||
docker Docker
|
dockerReader Docker
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewCollector(docker Docker, logger zerolog.Logger) *Collector {
|
func NewCollector(docker Docker, logger zerolog.Logger) *Collector {
|
||||||
logger = logger.With().Str("component", "agent.service.collector").Logger()
|
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) {
|
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.Arch = runtime.GOARCH
|
||||||
host.System = runtime.GOOS
|
host.System = runtime.GOOS
|
||||||
|
|
||||||
caps := []domain.Capability{c.docker.Capability()}
|
caps := []domain.Capability{c.dockerReader.Capability()}
|
||||||
return host, caps
|
return host, caps
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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}
|
||||||
|
}
|
||||||
@@ -3,9 +3,10 @@ package docker_service
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
|
"github.com/docker/docker/api/types"
|
||||||
|
"github.com/docker/docker/api/types/container"
|
||||||
"github.com/lorsanstand/HomeOps-Hub/internal/agent/domain"
|
"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"
|
"github.com/rs/zerolog"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user