diff --git a/api/gen/homeops/hub_grpc.pb.go b/api/gen/homeops/hub_grpc.pb.go index e032d6c..f18e257 100644 --- a/api/gen/homeops/hub_grpc.pb.go +++ b/api/gen/homeops/hub_grpc.pb.go @@ -1,6 +1,6 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// Code generated by protoc-gen-go-rpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.6.1 +// - protoc-gen-go-rpc v1.6.1 // - protoc v7.34.1 // source: homeops/hub.proto @@ -15,7 +15,7 @@ import ( ) // This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. +// is compatible with the rpc package it is being compiled against. // Requires gRPC-Go v1.64.0 or later. const _ = grpc.SupportPackageIsVersion9 @@ -140,7 +140,7 @@ func _Hub_RegisterAgent_Handler(srv interface{}, ctx context.Context, dec func(i } // Hub_ServiceDesc is the grpc.ServiceDesc for Hub service. -// It's only intended for direct use with grpc.RegisterService, +// It's only intended for direct use with rpc.RegisterService, // and not to be introspected or modified (even as a copy) var Hub_ServiceDesc = grpc.ServiceDesc{ ServiceName: "Hub", diff --git a/cmd/agent/main.go b/cmd/agent/main.go index 9b9e4c9..3a3986a 100644 --- a/cmd/agent/main.go +++ b/cmd/agent/main.go @@ -1,32 +1,8 @@ package main -import ( - "context" - "log" - "time" - - "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops" - "google.golang.org/grpc" - "google.golang.org/grpc/credentials/insecure" - "google.golang.org/protobuf/types/known/emptypb" -) +import "github.com/lorsanstand/HomeOps-Hub/internal/hub/app" func main() { - conn, err := grpc.Dial("127.0.0.1:6756", grpc.WithTransportCredentials(insecure.NewCredentials())) - if err != nil { - log.Fatalf("dial: %v", err) - } - defer conn.Close() - - client := homeops.NewHubClient(conn) - - ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) - resp, err := client.Ping(ctx, &emptypb.Empty{}) - if err != nil { - log.Fatalf("dial: %v", err) - } - - defer cancel() - - log.Printf("pong: %+v", resp.Pong) + start := app.NewApp() + start.Run() } diff --git a/internal/agent/app/app.go b/internal/agent/app/app.go new file mode 100644 index 0000000..5d68171 --- /dev/null +++ b/internal/agent/app/app.go @@ -0,0 +1,38 @@ +package app + +import ( + standartlog "log" + + "github.com/lorsanstand/HomeOps-Hub/internal/agent/rpc" + "github.com/lorsanstand/HomeOps-Hub/internal/agent/utils/config_yaml" + log2 "github.com/lorsanstand/HomeOps-Hub/internal/shared/log" + "github.com/rs/zerolog" +) + +type App struct { + log zerolog.Logger + cfg *config_yaml.AgentConfig + hubConn *rpc.Connection +} + +func NewApp() *App { + cfg, err := config_yaml.NewConfig() + if err != nil { + standartlog.Fatalf("failed get config: %v", err) + } + + log := log2.NewLogger(cfg) + + return &App{cfg: cfg, log: log} +} + +func (a *App) Run() { + conn, err := rpc.NewConnectAgent(a.cfg.GetGRPCAddress()) + if err != nil { + a.log.Error().Err(err) + return + } + + a.hubConn = conn + r +} diff --git a/internal/agent/grpc/client.go b/internal/agent/grpc/client.go deleted file mode 100644 index d333f5b..0000000 --- a/internal/agent/grpc/client.go +++ /dev/null @@ -1,38 +0,0 @@ -package grpc - -import ( - "context" - "fmt" - "time" - - pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops" - "google.golang.org/grpc" - "google.golang.org/protobuf/types/known/emptypb" -) - -type HomeOpsAgent struct { - conn pb.HubClient -} - -func NewConnectAgent(address string) (*HomeOpsAgent, error) { - conn, err := grpc.NewClient(address) - if err != nil { - return nil, fmt.Errorf("failed connection hub: %v", err) - } - - client := pb.NewHubClient(conn) - - ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) - defer cancel() - - resp, err := client.Ping(ctx, &emptypb.Empty{}) - if err != nil { - return nil, fmt.Errorf("failed connection hub: %v", err) - } - - if resp.Pong != "Pong" { - return nil, fmt.Errorf("failed connection hub: %v", err) - } - - return &HomeOpsAgent{conn: client}, nil -} diff --git a/internal/agent/rpc/client.go b/internal/agent/rpc/client.go new file mode 100644 index 0000000..174d0c4 --- /dev/null +++ b/internal/agent/rpc/client.go @@ -0,0 +1,32 @@ +package rpc + +import ( + "fmt" + + pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops" + "google.golang.org/grpc" +) + +type Connection struct { + hub pb.HubClient + conn *grpc.ClientConn +} + +func NewConnectAgent(address string) (*Connection, error) { + conn, err := grpc.NewClient(address) + if err != nil { + return nil, fmt.Errorf("failed connection hub: %v", err) + } + + client := pb.NewHubClient(conn) + + return &Connection{hub: client, conn: conn}, nil +} + +func (c *Connection) Close() error { + return c.conn.Close() +} + +func (c *Connection) Hub() pb.HubClient { + return c.hub +} diff --git a/internal/agent/utils/config_yaml/config.go b/internal/agent/utils/config_yaml/config.go index f9c2f72..5472b34 100644 --- a/internal/agent/utils/config_yaml/config.go +++ b/internal/agent/utils/config_yaml/config.go @@ -4,6 +4,7 @@ import ( "fmt" "os" + "github.com/rs/zerolog" "gopkg.in/yaml.v3" ) @@ -13,6 +14,7 @@ type AgentConfig struct { Host string `yaml:"host"` Port int `yaml:"port"` } `yaml:"hub"` + LogLevel string `yaml:"log_level"` } func NewConfig() (*AgentConfig, error) { @@ -29,3 +31,19 @@ func NewConfig() (*AgentConfig, error) { return &cfg, nil } + +func (c *AgentConfig) GetLogLevel() zerolog.Level { + level, err := zerolog.ParseLevel(c.LogLevel) + if err != nil { + return zerolog.InfoLevel + } + return level +} + +func (c *AgentConfig) GetMode() string { + return "PROD" +} + +func (c *AgentConfig) GetGRPCAddress() string { + return fmt.Sprintf("%v:%v", c.HubConnect.Host, c.HubConnect.Port) +} diff --git a/internal/hub/app/app.go b/internal/hub/app/app.go index 55e6989..002eacc 100644 --- a/internal/hub/app/app.go +++ b/internal/hub/app/app.go @@ -2,10 +2,11 @@ package app import ( "fmt" + standartlog "log" "net" pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops" - grpcserv "github.com/lorsanstand/HomeOps-Hub/internal/hub/grpc" + grpcserv "github.com/lorsanstand/HomeOps-Hub/internal/hub/rpc" "github.com/lorsanstand/HomeOps-Hub/internal/shared/config" "github.com/lorsanstand/HomeOps-Hub/internal/shared/log" "github.com/rs/zerolog" @@ -20,7 +21,7 @@ type App struct { func NewApp() *App { cfg, err := config.NewConfig() if err != nil { - fmt.Errorf("failed get config: %v", err) + standartlog.Fatalf("failed get config: %v", err) } logger := log.NewLogger(cfg) @@ -44,7 +45,7 @@ func (a *App) Run() { err = grpcServer.Serve(lis) if err != nil { - a.log.Error().Err(err).Msg("failed started grpc server") + a.log.Error().Err(err).Msg("failed started rpc server") return } diff --git a/internal/hub/grpc/server.go b/internal/hub/rpc/server.go similarity index 96% rename from internal/hub/grpc/server.go rename to internal/hub/rpc/server.go index 9fccb5a..9a4b83f 100644 --- a/internal/hub/grpc/server.go +++ b/internal/hub/rpc/server.go @@ -1,4 +1,4 @@ -package grpc +package rpc import ( "context"