mirror of
https://github.com/lorsanstand/HomeOps-Hub.git
synced 2026-06-19 17:45:17 +03:00
create system register agent id
This commit is contained in:
@@ -10,6 +10,7 @@ import (
|
||||
"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/settings"
|
||||
log2 "github.com/lorsanstand/HomeOps-Hub/internal/shared/log"
|
||||
"github.com/rs/zerolog"
|
||||
"google.golang.org/grpc"
|
||||
@@ -17,21 +18,30 @@ import (
|
||||
)
|
||||
|
||||
type App struct {
|
||||
log zerolog.Logger
|
||||
cfg *config_yaml.AgentConfig
|
||||
hubConn *rpc.Connection
|
||||
log zerolog.Logger
|
||||
cfg *config_yaml.AgentConfig
|
||||
settings *settings.Settings
|
||||
hubConn *rpc.Connection
|
||||
}
|
||||
|
||||
func NewApp() *App {
|
||||
func NewApp() (*App, error) {
|
||||
|
||||
cfg, err := config_yaml.NewConfig()
|
||||
if err != nil {
|
||||
standartlog.Fatalf("failed get config: %v", err)
|
||||
standartlog.Fatalf("failed to get config: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
log := log2.NewLogger(cfg)
|
||||
log = log.With().Str("component", "agent.app").Logger()
|
||||
|
||||
return &App{cfg: cfg, log: log}
|
||||
sett, err := settings.ReadSettings(cfg.SettingsPath)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("failed to get settings")
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &App{cfg: cfg, log: log, settings: sett}, nil
|
||||
}
|
||||
|
||||
func (a *App) Run() {
|
||||
@@ -58,6 +68,6 @@ func (a *App) Run() {
|
||||
|
||||
collect := collector.NewCollector(DockerService, a.log)
|
||||
|
||||
agent := agent_service.NewAgentService(collect, conn, "", a.cfg, a.log)
|
||||
agent := agent_service.NewAgentService(collect, conn, a.settings, a.cfg, a.log)
|
||||
agent.RegisterAgentConn(ctx)
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import (
|
||||
|
||||
"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/rs/zerolog"
|
||||
)
|
||||
|
||||
@@ -23,24 +24,24 @@ type AgentService struct {
|
||||
log zerolog.Logger
|
||||
cfg *config_yaml.AgentConfig
|
||||
heartBeat int
|
||||
agentID string
|
||||
settings *settings.Settings
|
||||
}
|
||||
|
||||
func NewAgentService(
|
||||
collector Collector,
|
||||
conn HubConnection,
|
||||
AgentID string,
|
||||
settings *settings.Settings,
|
||||
cfg *config_yaml.AgentConfig,
|
||||
logger zerolog.Logger,
|
||||
) *AgentService {
|
||||
logger = logger.With().Str("component", "agent.service.agent_serivce").Logger()
|
||||
|
||||
return &AgentService{collect: collector, conn: conn, cfg: cfg, log: logger, agentID: AgentID}
|
||||
return &AgentService{collect: collector, conn: conn, cfg: cfg, log: logger, settings: settings}
|
||||
}
|
||||
|
||||
func (a *AgentService) RegisterAgentConn(ctx context.Context) {
|
||||
info, caps := a.collect.GatherInfoSystem()
|
||||
AgentID := a.agentID
|
||||
AgentID := a.settings.AgentID
|
||||
AgentName := a.cfg.AppName
|
||||
AgentData := domain.RegisterAgentData{AgentId: AgentID, AgentName: AgentName, Host: info, Capabilities: caps}
|
||||
|
||||
@@ -49,5 +50,9 @@ func (a *AgentService) RegisterAgentConn(ctx context.Context) {
|
||||
a.log.Error().Err(err).Msg("failed register agent")
|
||||
return
|
||||
}
|
||||
|
||||
if err = a.settings.Insert(settings.Settings{AgentID: data.AgentID}); err != nil {
|
||||
a.log.Warn().Err(err).Msg("failed to save agent id")
|
||||
}
|
||||
fmt.Println(data)
|
||||
}
|
||||
|
||||
@@ -14,7 +14,8 @@ type AgentConfig struct {
|
||||
Host string `yaml:"host"`
|
||||
Port int `yaml:"port"`
|
||||
} `yaml:"hub"`
|
||||
LogLevel string `yaml:"log_level"`
|
||||
LogLevel string `yaml:"log_level"`
|
||||
SettingsPath string `yaml:"settings_path"`
|
||||
}
|
||||
|
||||
func NewConfig() (*AgentConfig, error) {
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
package settings
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"io"
|
||||
"os"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
type Settings struct {
|
||||
AgentID string `json:"agent_id"`
|
||||
path string
|
||||
}
|
||||
|
||||
func ReadSettings(path string) (*Settings, error) {
|
||||
if path == "" {
|
||||
homeDir, err := os.UserHomeDir()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
path = filepath.Join(homeDir, ".config", "homeops")
|
||||
}
|
||||
|
||||
err := os.Mkdir(path, 0755)
|
||||
if err != nil {
|
||||
if !errors.Is(err, os.ErrExist) {
|
||||
return nil, err
|
||||
}
|
||||
err = nil
|
||||
}
|
||||
|
||||
file, err := os.Create(path + "/settings.json")
|
||||
if err != nil {
|
||||
if !errors.Is(err, os.ErrExist) {
|
||||
return nil, err
|
||||
}
|
||||
err = nil
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
var settings Settings
|
||||
|
||||
err = json.NewDecoder(file).Decode(&settings)
|
||||
if err != nil {
|
||||
if !errors.Is(err, io.EOF) {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
settings.path = path + "/settings.json"
|
||||
|
||||
return &settings, nil
|
||||
}
|
||||
|
||||
func (s *Settings) Insert(sett Settings) error {
|
||||
file, err := os.OpenFile(s.path, os.O_RDWR, 0755)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
if err = json.NewEncoder(file).Encode(sett); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user