diff --git a/internal/agent/rpc/client.go b/internal/agent/rpc/client.go index e03166c..a945085 100644 --- a/internal/agent/rpc/client.go +++ b/internal/agent/rpc/client.go @@ -4,7 +4,7 @@ import ( "context" pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops" - "github.com/lorsanstand/HomeOps-Hub/internal/agent/domain" + "github.com/lorsanstand/HomeOps-Hub/internal/domain" "github.com/rs/zerolog" "google.golang.org/grpc" ) @@ -32,8 +32,8 @@ func (c *Connection) Hub() pb.HubClient { return c.hub } -func (c *Connection) RegisterAgent(ctx context.Context, RegisterData domain.RegisterAgentData) (domain.RegisterAgentDataResponse, error) { - ResponseData, err := c.Hub().RegisterAgent(ctx, new(toAgentRegisterRequest(RegisterData))) +func (c *Connection) RegisterAgent(ctx context.Context, RegisterData domain.RegisterAgentRequest) (domain.RegisterAgentResponse, error) { + ResponseData, err := c.Hub().RegisterAgent(ctx, new(domain.ToGRPCAgentRequest(RegisterData))) c.log.Info().Msg("register agent") - return toAgentRegisterDataResponse(ResponseData), err + return domain.ToDomainAgentResponse(ResponseData), err } diff --git a/internal/agent/rpc/mapper.go b/internal/agent/rpc/mapper.go deleted file mode 100644 index f4d729a..0000000 --- a/internal/agent/rpc/mapper.go +++ /dev/null @@ -1,44 +0,0 @@ -package rpc - -import ( - pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops" - "github.com/lorsanstand/HomeOps-Hub/internal/agent/domain" -) - -func toAgentRegisterRequest(request domain.RegisterAgentData) pb.RegisterAgentRequest { - return pb.RegisterAgentRequest{ - AgentId: request.AgentId, - AgentName: request.AgentName, - Host: &pb.HostInfo{ - Hostname: request.Host.Hostname, - Arch: request.Host.Arch, - System: request.Host.System, - }, - Version: request.AgentVersion, - Capability: toGRPCCapability(request.Capabilities), - } -} - -func toGRPCCapability(caps []domain.Capability) []*pb.Capability { - var capability []*pb.Capability - for _, capi := range caps { - capability = append(capability, &pb.Capability{ - Name: capi.Name, - Available: capi.Available, - Version: capi.Version, - Reason: capi.Reason, - }) - } - return capability -} - -func toAgentRegisterDataResponse(response *pb.RegisterAgentResponse) domain.RegisterAgentDataResponse { - if response == nil { - return domain.RegisterAgentDataResponse{} - } - - return domain.RegisterAgentDataResponse{ - AgentID: response.AgentId, - Heartbeat: int(response.HeartbeatIntervalSecond), - } -} diff --git a/internal/agent/service/agent_service/agent.go b/internal/agent/service/agent_service/agent.go index 31f89a9..391c62d 100644 --- a/internal/agent/service/agent_service/agent.go +++ b/internal/agent/service/agent_service/agent.go @@ -4,9 +4,9 @@ import ( "context" "fmt" - "github.com/lorsanstand/HomeOps-Hub/internal/agent/domain" "github.com/lorsanstand/HomeOps-Hub/internal/agent/utils/config_yaml" "github.com/lorsanstand/HomeOps-Hub/internal/agent/utils/settings" + "github.com/lorsanstand/HomeOps-Hub/internal/domain" "github.com/rs/zerolog" ) @@ -15,7 +15,7 @@ type Collector interface { } type HubConnection interface { - RegisterAgent(ctx context.Context, RegisterData domain.RegisterAgentData) (domain.RegisterAgentDataResponse, error) + RegisterAgent(ctx context.Context, RegisterData domain.RegisterAgentRequest) (domain.RegisterAgentResponse, error) } type AgentService struct { @@ -43,7 +43,7 @@ func (a *AgentService) RegisterAgentConn(ctx context.Context) { info, caps := a.collect.GatherInfoSystem() AgentID := a.settings.AgentID AgentName := a.cfg.AppName - AgentData := domain.RegisterAgentData{AgentId: AgentID, AgentName: AgentName, Host: info, Capabilities: caps} + AgentData := domain.RegisterAgentRequest{AgentId: AgentID, AgentName: AgentName, Host: info, Capabilities: caps} data, err := a.conn.RegisterAgent(ctx, AgentData) if err != nil { diff --git a/internal/agent/service/collector/collector.go b/internal/agent/service/collector/collector.go index 4b613d9..93cea10 100644 --- a/internal/agent/service/collector/collector.go +++ b/internal/agent/service/collector/collector.go @@ -4,7 +4,7 @@ import ( "os" "runtime" - "github.com/lorsanstand/HomeOps-Hub/internal/agent/domain" + "github.com/lorsanstand/HomeOps-Hub/internal/domain" "github.com/rs/zerolog" ) diff --git a/internal/agent/service/docker_service/bad.go b/internal/agent/service/docker_service/bad.go index bbd22ca..6c48587 100644 --- a/internal/agent/service/docker_service/bad.go +++ b/internal/agent/service/docker_service/bad.go @@ -1,6 +1,8 @@ package docker_service -import "github.com/lorsanstand/HomeOps-Hub/internal/agent/domain" +import ( + "github.com/lorsanstand/HomeOps-Hub/internal/domain" +) type BadDocker struct { reason string diff --git a/internal/agent/service/docker_service/docker.go b/internal/agent/service/docker_service/docker.go index 991d9e7..487b1e1 100644 --- a/internal/agent/service/docker_service/docker.go +++ b/internal/agent/service/docker_service/docker.go @@ -5,7 +5,7 @@ import ( "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/domain" "github.com/rs/zerolog" ) diff --git a/internal/domain/mapper.go b/internal/domain/mapper.go new file mode 100644 index 0000000..9f7a128 --- /dev/null +++ b/internal/domain/mapper.go @@ -0,0 +1,79 @@ +package domain + +import ( + pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops" +) + +func ToDomainAgentRequest(request *pb.RegisterAgentRequest) RegisterAgentData { + if request == nil { + return RegisterAgentData{} + } + + return RegisterAgentData{ + AgentId: request.AgentId, + AgentName: request.AgentName, + Host: HostInfo{ + System: request.Host.System, + Hostname: request.Host.Hostname, + Arch: request.Host.Arch, + }, + Capabilities: ToDomainCapabilities(request.Capability), + } +} + +func ToDomainAgentResponse(response *pb.RegisterAgentResponse) RegisterAgentDataResponse { + if response == nil { + return RegisterAgentDataResponse{} + } + + return RegisterAgentDataResponse{ + AgentID: response.AgentId, + Heartbeat: int(response.HeartbeatIntervalSecond), + } +} + +func ToDomainCapabilities(capability []*pb.Capability) []Capability { + var caps []Capability + + for _, capa := range capability { + if capa == nil { + continue + } + + caps = append(caps, Capability{ + Name: capa.Name, + Version: capa.Version, + Reason: capa.Reason, + Available: capa.Available, + }) + } + + return caps +} + +func ToGRPCAgentRequest(request RegisterAgentData) pb.RegisterAgentRequest { + return pb.RegisterAgentRequest{ + AgentId: request.AgentId, + AgentName: request.AgentName, + Host: &pb.HostInfo{ + Hostname: request.Host.Hostname, + Arch: request.Host.Arch, + System: request.Host.System, + }, + Version: request.AgentVersion, + Capability: ToGRPCCapability(request.Capabilities), + } +} + +func ToGRPCCapability(caps []Capability) []*pb.Capability { + var capability []*pb.Capability + for _, capi := range caps { + capability = append(capability, &pb.Capability{ + Name: capi.Name, + Available: capi.Available, + Version: capi.Version, + Reason: capi.Reason, + }) + } + return capability +} diff --git a/internal/domain/info.go b/internal/domain/structure.go similarity index 82% rename from internal/domain/info.go rename to internal/domain/structure.go index cc21078..8a5f062 100644 --- a/internal/domain/info.go +++ b/internal/domain/structure.go @@ -1,6 +1,6 @@ package domain -type RegisterAgentData struct { +type RegisterAgentRequest struct { AgentId string AgentName string AgentVersion string @@ -21,7 +21,7 @@ type Capability struct { Reason string } -type RegisterAgentDataResponse struct { +type RegisterAgentResponse struct { Heartbeat int AgentID string } diff --git a/internal/hub/app/app.go b/internal/hub/app/app.go index 0db6be1..6f2ac61 100644 --- a/internal/hub/app/app.go +++ b/internal/hub/app/app.go @@ -33,7 +33,7 @@ func NewApp() *App { func (a *App) Run() { err := a.hubServe() if err != nil { - a.log.Error().Err(err).Msg("failed start server") + a.log.Error().Err(err).Msg("failed to start the server") } } diff --git a/internal/hub/rpc/server.go b/internal/hub/rpc/server.go index 3e5429d..218f1ea 100644 --- a/internal/hub/rpc/server.go +++ b/internal/hub/rpc/server.go @@ -2,8 +2,10 @@ package rpc import ( "context" + "fmt" pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops" + "github.com/lorsanstand/HomeOps-Hub/internal/domain" "github.com/rs/zerolog" "google.golang.org/grpc" "google.golang.org/protobuf/types/known/emptypb" @@ -32,5 +34,7 @@ func (h *HubHandler) Ping(ctx context.Context, _ *emptypb.Empty) (*pb.PongRespon } func (h *HubHandler) RegisterAgent(ctx context.Context, request *pb.RegisterAgentRequest) (*pb.RegisterAgentResponse, error) { - return &pb.RegisterAgentResponse{AgentId: "12234", HeartbeatIntervalSecond: 2}, nil + data := domain.ToDomainAgentRequest(request) + fmt.Println(data) + return &pb.RegisterAgentResponse{}, nil } diff --git a/internal/hub/service/hub_service/hub.go b/internal/hub/service/hub_service/hub.go new file mode 100644 index 0000000..15e89d5 --- /dev/null +++ b/internal/hub/service/hub_service/hub.go @@ -0,0 +1,12 @@ +package hub_service + +import ( + "github.com/lorsanstand/HomeOps-Hub/internal/domain" + "github.com/rs/zerolog" +) + +type HubService struct { + log zerolog.Logger +} + +func NewHubService(request domain.RegisterAgentRequest)