bilibili-backup/app/admin/ep/melloi/conf/conf.go

194 lines
4.4 KiB
Go
Raw Normal View History

2019-04-22 10:59:20 +08:00
package conf
import (
"errors"
"flag"
"go-common/app/admin/ep/melloi/model"
"go-common/library/cache/memcache"
"go-common/library/cache/redis"
"go-common/library/conf"
"go-common/library/database/orm"
ecode "go-common/library/ecode/tip"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/permit"
"go-common/library/net/rpc/warden"
"go-common/library/net/trace"
"github.com/BurntSushi/toml"
)
var (
confPath string
client *conf.Client
// Conf config
Conf = &Config{}
)
// Config .
type Config struct {
Log *log.Config
//BM *HTTPServers
Tracer *trace.Config
Redis *redis.Config
Memcache *memcache.Config
Ecode *ecode.Config
ORM *orm.Config
Permit *permit.Config2
PermitGRPC *warden.ClientConfig
HTTPClient *bm.ClientConfig
ServiceTree *model.TreeConf
Dapper *Dapper
BfsConf *model.BFSConf
ServiceCluster *model.ClusterConf
Melloi *Melloi
BM *bm.ServerConfig
Wechat *Wechat
Mail *Mail
Paas *Paas
Grpc *Grpc
Jmeter *Jmeter
DockerStatus *DockerStatus
}
// Dapper conf
type Dapper struct {
Host string
}
// DockerStatus conf
type DockerStatus struct {
Host string // ip
Port int // port
}
//Paas conf
type Paas struct {
APIToken string // PaaS token获取
PlatformID string //PaaS token获取
BusinessUnit string //BU
Project string //项目
App string //应用
Env string //环境
Image string //镜像名称
ImageVersion string //镜像版本
Volumes string //PaaS 创建job
ResourcePoolID string //PaaS 创建job
Completions int //PaaS 创建job
RetriesLimit int //PaaS 创建job
NetworkID int
ClusterID int
TreeID int //服务树ID
HostInfo string //PaaS 创建job
Action string //paas 查询容器cpu
PublicKey string //key
Signature int //paas 查询容器cpu
DataSource string //数据源
Query string //paas 查询容器cpu语句
CPUCore int //cpu 核数
CPUCoreDebug int //debug cpu 核数
}
//Melloi melloi config
type Melloi struct {
AppkeyProd string //线上appkey
SecretProd string //线上sceret
AppkeyUat string //uat appkey
SecretUat string //uat secret
Executor []string //白名单
CheckTime bool //是否校验压测时间
MaxFileSize int64
DefaultHost string
MaxDowloadSize int64
DefaultFusing int //默认熔断成功率
DefaultBusinessRate int //默认业务熔断阈值
Recent int //最近的qps取数
}
//Wechat wechat config
type Wechat struct {
Host string //微信通知id
Chatid string
Msgtype string
Safe int
SendMessage bool //是否发送通知
}
// Mail mail
type Mail struct {
Host string
Port int
Username string
Password string
NoticeOwner []string
}
// Grpc grpc
type Grpc struct {
ProtoJavaPluginPath string
}
// Jmeter jmeter
type Jmeter struct {
JmeterExtLibPath string
JmeterExtLibPathContainer string
GRPCTemplatePath string
TestTimeLimit int
ThreadGroupPort int //执行生成线程组的接口的端口号
JmeterScUcodedTmp string
JmeterScTmp string
JmeterSampleTmp string
JmeterSamplePostTmp string
JmeterThGroupTmp string
JmeterThGroupPostTmp string
JmeterThGroupDuliTmp string
JmeterThGroupPostDuliTmp string
JmeterSceneTmp string
JSONExtractorTmp string
}
// init init
func init() {
flag.StringVar(&confPath, "conf", "", "default config path")
}
// Init init conf
func Init() error {
if confPath != "" {
return local()
}
return remote()
}
// local local
func local() (err error) {
_, err = toml.DecodeFile(confPath, &Conf)
return
}
// remote remote
func remote() (err error) {
if client, err = conf.New(); err != nil {
return
}
return load()
}
// load load
func load() (err error) {
var (
s string
ok bool
tmpConf *Config
)
if s, ok = client.Value("melloi.toml"); !ok {
return errors.New("load config center error")
}
if _, err = toml.Decode(s, &tmpConf); err != nil {
return errors.New("could not decode config")
}
*Conf = *tmpConf
return
}