first working version

This commit is contained in:
ston1th 2021-04-09 22:38:03 +02:00
commit 6da132106f
18 changed files with 519 additions and 96 deletions

View file

@ -15,27 +15,31 @@ import (
type ServiceManager interface {
Reload(context.Context) error
Status(context.Context) error
Start(context.Context) error
Stop(context.Context) error
}
type HAProxyManager struct {
sync.Mutex
configFile string
serviceManager ServiceManager
template *template.Template
hash []byte
configFile string
svc ServiceManager
template *template.Template
hash []byte
}
func NewHAProxyManager(configFile string) (*HAProxyManager, error) {
func NewHAProxyManager(configFile, service string) (ha *HAProxyManager, err error) {
t, err := template.New("haproxy").Parse(haproxyConfigTemplate)
if err != nil {
return nil, err
return
}
return &HAProxyManager{
configFile: configFile,
serviceManager: NewSystemdManager("haproxy"),
template: t,
}, nil
ha = &HAProxyManager{
configFile: configFile,
svc: NewSystemdManager(service),
template: t,
}
return
}
func (ha *HAProxyManager) checkConfig(ctx context.Context, lbs Config) (hash []byte, err error) {
@ -59,9 +63,7 @@ func (ha *HAProxyManager) checkConfig(ctx context.Context, lbs Config) (hash []b
return hash, err
}
func (ha *HAProxyManager) UpdateConfig(ctx context.Context, lbs Config) error {
ha.Lock()
defer ha.Unlock()
func (ha *HAProxyManager) updateConfig(ctx context.Context, lbs Config) error {
hash, err := ha.checkConfig(ctx, lbs)
if err != nil {
return err
@ -78,7 +80,33 @@ func (ha *HAProxyManager) UpdateConfig(ctx context.Context, lbs Config) error {
file.Close()
return err
}
file.Close()
err = file.Close()
ha.hash = hash
return ha.serviceManager.Reload(ctx)
return err
}
func (ha *HAProxyManager) UpdateConfig(ctx context.Context, lbs Config) error {
ha.Lock()
defer ha.Unlock()
err := ha.updateConfig(ctx, lbs)
if err != nil {
return err
}
return ha.svc.Reload(ctx)
}
func (ha *HAProxyManager) Start(ctx context.Context) error {
err := ha.svc.Status(ctx)
if err != nil {
err = ha.updateConfig(ctx, Config{})
if err != nil {
return err
}
err = ha.svc.Start(ctx)
}
return err
}
func (ha *HAProxyManager) Stop(ctx context.Context) error {
return ha.svc.Stop(ctx)
}