-
Notifications
You must be signed in to change notification settings - Fork 11
/
nginx.go
55 lines (48 loc) · 1.34 KB
/
nginx.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package nginx
import (
v1 "github.com/ClessLi/bifrost/api/bifrost/v1"
"github.com/ClessLi/bifrost/pkg/resolv/V3/nginx/configuration"
"github.com/marmotedu/errors"
"time"
)
type ConfigsManager interface {
Start() error
Stop(timeout time.Duration) error
GetConfigs() map[string]configuration.NginxConfig
GetServerInfos() []*v1.WebServerInfo
}
type configsManager struct {
managerMap map[string]configuration.NginxConfigManager
}
func (m *configsManager) Start() error {
var errs []error
for _, manager := range m.managerMap {
errs = append(errs, manager.Start())
}
return errors.NewAggregate(errs)
}
func (m *configsManager) Stop(timeout time.Duration) error {
var errs []error
for _, manager := range m.managerMap {
errs = append(errs, manager.Stop(timeout))
}
return errors.NewAggregate(errs)
}
func (m *configsManager) GetConfigs() (configs map[string]configuration.NginxConfig) {
configs = make(map[string]configuration.NginxConfig)
for svrname, manager := range m.managerMap {
configs[svrname] = manager.NginxConfig()
}
return
}
func (m *configsManager) GetServerInfos() (infos []*v1.WebServerInfo) {
infos = make([]*v1.WebServerInfo, 0)
for svrname, manager := range m.managerMap {
infos = append(infos, &v1.WebServerInfo{
Name: svrname,
Status: manager.ServerStatus(),
Version: manager.ServerVersion(),
})
}
return
}