4 Star 6 Fork 5

Humpback / humpback-center

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
enginespriority.go 1.73 KB
一键复制 编辑 原始数据 按行查看 历史
bolve 提交于 2018-07-10 09:59 . cluster mode support update containers
package cluster
import "sync"
// EnginePriorities is exported
type EnginePriorities struct {
sync.RWMutex
Engines map[string]*Engine
}
// NewEnginePriorities is exported
func NewEnginePriorities(metaData *MetaData, engines []*Engine) *EnginePriorities {
enginePriorities := &EnginePriorities{
Engines: make(map[string]*Engine),
}
for _, baseConfig := range metaData.BaseConfigs {
for _, engine := range engines {
if engine.IsHealthy() && engine.HasContainer(baseConfig.ID) {
enginePriorities.Add(baseConfig.ID, engine)
break
}
}
}
return enginePriorities
}
// EngineStrings is exported
func (priorities *EnginePriorities) EngineStrings() []string {
engines := []string{}
priorities.RLock()
defer priorities.RUnlock()
for _, engine := range priorities.Engines {
engines = append(engines, engine.IP)
}
return engines
}
// Select is exported
func (priorities *EnginePriorities) Select() *Engine {
var engine *Engine
priorities.Lock()
defer priorities.Unlock()
if len(priorities.Engines) == 0 {
return nil
}
for containerid, e := range priorities.Engines {
engine = e
delete(priorities.Engines, containerid)
break
}
return engine
}
// Size is exported
func (priorities *EnginePriorities) Size() int {
size := 0
priorities.RLock()
size = len(priorities.Engines)
priorities.RUnlock()
return size
}
// Add is exported
func (priorities *EnginePriorities) Add(containerid string, engine *Engine) {
priorities.Lock()
if _, ret := priorities.Engines[containerid]; !ret {
priorities.Engines[containerid] = engine
}
priorities.Unlock()
}
// Remove is exported
func (priorities *EnginePriorities) Remove(containerid string) {
priorities.Lock()
delete(priorities.Engines, containerid)
priorities.Unlock()
}
Go
1
https://gitee.com/humpbacks/humpback-center.git
git@gitee.com:humpbacks/humpback-center.git
humpbacks
humpback-center
humpback-center
b392570bc023

搜索帮助