update.go 1.4 KB
Newer Older
E
eoLinker API Management 已提交
1 2 3 4
package balance

import (
	"encoding/json"
Y
Your Name 已提交
5 6
	"github.com/eolinker/goku-api-gateway/common/pdao"
	"github.com/eolinker/goku-api-gateway/server/dao"
Y
Your Name 已提交
7

黄孟柱 已提交
8 9
	"github.com/eolinker/goku-api-gateway/common/general"
	entity "github.com/eolinker/goku-api-gateway/server/entity/balance-entity"
E
eoLinker API Management 已提交
10
)
Y
Your Name 已提交
11 12 13 14
var (
	balanceDao dao.BalanceDao
	balanceUpdateDao dao.BalanceUpdateDao
)
E
eoLinker API Management 已提交
15
func init() {
Y
Your Name 已提交
16
	pdao.Need(&balanceDao,&balanceUpdateDao)
E
eoLinker API Management 已提交
17 18
	general.RegeditLater(Update)
}
Y
Your Name 已提交
19

Y
Your Name 已提交
20
//Update 将旧负载配置更新为新负载配置
Y
Your Name 已提交
21
func Update() error {
E
eoLinker API Management 已提交
22

Y
Your Name 已提交
23
	l, e := balanceUpdateDao.GetAllOldVerSion()
Y
Your Name 已提交
24
	if e != nil {
E
eoLinker API Management 已提交
25 26 27
		return e
	}

Y
Your Name 已提交
28
	defStaticServiceName := balanceUpdateDao.GetDefaultServiceStatic()
Y
Your Name 已提交
29 30
	for _, e := range l {
		update(e, defStaticServiceName)
E
eoLinker API Management 已提交
31 32 33 34 35 36
	}

	return nil

}

Y
Your Name 已提交
37
func update(e *entity.BalanceInfoEntity, serviceName string) {
E
eoLinker API Management 已提交
38

Y
Your Name 已提交
39
	if e == nil {
E
eoLinker API Management 已提交
40 41 42
		return
	}

Y
Your Name 已提交
43
	param := &Param{
E
eoLinker API Management 已提交
44 45 46 47 48 49 50 51
		Name:          e.Name,
		ServiceName:   serviceName,
		AppName:       "",
		Static:        "",
		StaticCluster: "",
		Desc:          e.Desc,
	}

Y
Your Name 已提交
52
	info, err := e.Decode()
E
eoLinker API Management 已提交
53

Y
Your Name 已提交
54
	if err != nil {
E
eoLinker API Management 已提交
55 56 57
		return
	}

Y
Your Name 已提交
58
	if info.Default != nil {
E
eoLinker API Management 已提交
59 60 61

		param.Static = info.Default.ServersConfigOrg
	}
Y
Your Name 已提交
62 63 64
	if info.Cluster != nil {
		cluster := make(map[string]string)
		for clusterName, server := range info.Cluster {
E
eoLinker API Management 已提交
65 66 67 68
			cluster[clusterName] = server.ServersConfigOrg

		}

Y
Your Name 已提交
69
		data, err := json.Marshal(cluster)
E
eoLinker API Management 已提交
70

Y
Your Name 已提交
71
		if err == nil {
E
eoLinker API Management 已提交
72 73 74 75 76 77 78

			param.StaticCluster = string(data)
		}
	}

	Save(param)

Y
Your Name 已提交
79
}