first working version
This commit is contained in:
parent
372915e24d
commit
6da132106f
18 changed files with 519 additions and 96 deletions
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue