1
0
mirror of https://github.com/newnius/YAO-scheduler.git synced 2025-06-08 06:41:56 +00:00

add network

This commit is contained in:
Newnius 2019-06-13 10:53:00 +08:00
parent 9dd9c50002
commit 152946b25c

View File

@ -24,6 +24,7 @@ type ResourcePool struct {
} }
func (pool *ResourcePool) start() { func (pool *ResourcePool) start() {
//TODO: retrieve networks from yao-agent-master in blocking io
pool.networks = map[string]bool{} pool.networks = map[string]bool{}
pool.networksFree = map[string]bool{} pool.networksFree = map[string]bool{}
@ -133,11 +134,14 @@ func (pool *ResourcePool) statusHistory() MsgPoolStatusHistory {
} }
func (pool *ResourcePool) acquireNetwork() string { func (pool *ResourcePool) acquireNetwork() string {
pool.networkMu.Lock()
defer pool.networkMu.Unlock()
var network string var network string
if len(pool.networksFree) == 0 { if len(pool.networksFree) == 0 {
for {
for { for {
network = "yao-net-" + strconv.Itoa(rand.Intn(999999)) network = "yao-net-" + strconv.Itoa(rand.Intn(999999))
if _, ok := pool.networksFree[network]; !ok { if _, ok := pool.networks[network]; !ok {
break break
} }
} }
@ -146,18 +150,19 @@ func (pool *ResourcePool) acquireNetwork() string {
resp, err := doRequest("POST", "http://yao-agent-master:8000/network_create", strings.NewReader(v.Encode()), "application/x-www-form-urlencoded", "") resp, err := doRequest("POST", "http://yao-agent-master:8000/network_create", strings.NewReader(v.Encode()), "application/x-www-form-urlencoded", "")
if err != nil { if err != nil {
log.Println(err.Error()) log.Println(err.Error())
return "" continue
} }
defer resp.Body.Close() defer resp.Body.Close()
pool.networksFree[network] = true pool.networksFree[network] = true
pool.networks[network] = true pool.networks[network] = true
break
} }
pool.networkMu.Lock() }
for k := range pool.networksFree { for k := range pool.networksFree {
network = k network = k
delete(pool.networksFree, k) delete(pool.networksFree, k)
} }
pool.networkMu.Unlock()
return network return network
} }