mirror of
https://gitee.com/rainbond/Rainbond.git
synced 2024-12-02 11:47:36 +08:00
Merge branch 'master' into plugin
This commit is contained in:
commit
aa8b8b71d6
@ -1,34 +1,38 @@
|
||||
|
||||
// RAINBOND, Application Management Platform
|
||||
// Copyright (C) 2014-2017 Goodrain Co., Ltd.
|
||||
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version. For any non-GPL usage of Rainbond,
|
||||
// one or multiple Commercial Licenses authorized by Goodrain Co., Ltd.
|
||||
// must be obtained first.
|
||||
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/goodrain/rainbond/cmd/api/option"
|
||||
"github.com/goodrain/rainbond/cmd/api/server"
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/goodrain/rainbond/cmd"
|
||||
"github.com/goodrain/rainbond/cmd/api/option"
|
||||
"github.com/goodrain/rainbond/cmd/api/server"
|
||||
|
||||
"github.com/spf13/pflag"
|
||||
)
|
||||
|
||||
func main() {
|
||||
if len(os.Args) > 1 && os.Args[1] == "version" {
|
||||
cmd.ShowVersion("api")
|
||||
}
|
||||
s := option.NewAPIServer()
|
||||
s.AddFlags(pflag.CommandLine)
|
||||
pflag.Parse()
|
||||
|
@ -1,19 +1,18 @@
|
||||
|
||||
// RAINBOND, Application Management Platform
|
||||
// Copyright (C) 2014-2017 Goodrain Co., Ltd.
|
||||
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version. For any non-GPL usage of Rainbond,
|
||||
// one or multiple Commercial Licenses authorized by Goodrain Co., Ltd.
|
||||
// must be obtained first.
|
||||
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
@ -23,6 +22,7 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/goodrain/rainbond/cmd"
|
||||
"github.com/goodrain/rainbond/cmd/builder/option"
|
||||
"github.com/goodrain/rainbond/cmd/builder/server"
|
||||
|
||||
@ -30,6 +30,9 @@ import (
|
||||
)
|
||||
|
||||
func main() {
|
||||
if len(os.Args) > 1 && os.Args[1] == "version" {
|
||||
cmd.ShowVersion("chaos")
|
||||
}
|
||||
s := option.NewBuilder()
|
||||
s.AddFlags(pflag.CommandLine)
|
||||
pflag.Parse()
|
||||
|
@ -1,19 +1,18 @@
|
||||
|
||||
// RAINBOND, Application Management Platform
|
||||
// Copyright (C) 2014-2017 Goodrain Co., Ltd.
|
||||
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version. For any non-GPL usage of Rainbond,
|
||||
// one or multiple Commercial Licenses authorized by Goodrain Co., Ltd.
|
||||
// must be obtained first.
|
||||
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
@ -23,6 +22,7 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/goodrain/rainbond/cmd"
|
||||
"github.com/goodrain/rainbond/cmd/entrance/option"
|
||||
"github.com/goodrain/rainbond/cmd/entrance/server"
|
||||
|
||||
@ -30,6 +30,9 @@ import (
|
||||
)
|
||||
|
||||
func main() {
|
||||
if len(os.Args) > 1 && os.Args[1] == "version" {
|
||||
cmd.ShowVersion("entrance")
|
||||
}
|
||||
s := option.NewACPLBServer()
|
||||
s.AddFlags(pflag.CommandLine)
|
||||
pflag.Parse()
|
||||
|
@ -1,19 +1,18 @@
|
||||
|
||||
// RAINBOND, Application Management Platform
|
||||
// Copyright (C) 2014-2017 Goodrain Co., Ltd.
|
||||
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version. For any non-GPL usage of Rainbond,
|
||||
// one or multiple Commercial Licenses authorized by Goodrain Co., Ltd.
|
||||
// must be obtained first.
|
||||
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
@ -22,12 +21,16 @@ package main
|
||||
import (
|
||||
"os"
|
||||
|
||||
"github.com/goodrain/rainbond/cmd"
|
||||
"github.com/goodrain/rainbond/cmd/eventlog/server"
|
||||
|
||||
"github.com/spf13/pflag"
|
||||
)
|
||||
|
||||
func main() {
|
||||
if len(os.Args) > 1 && os.Args[1] == "version" {
|
||||
cmd.ShowVersion("eventlog")
|
||||
}
|
||||
s := server.NewLogServer()
|
||||
s.AddFlags(pflag.CommandLine)
|
||||
pflag.Parse()
|
||||
|
@ -21,10 +21,15 @@ package main
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/goodrain/rainbond/cmd"
|
||||
"github.com/goodrain/rainbond/cmd/grctl/server"
|
||||
)
|
||||
|
||||
func main() {
|
||||
if len(os.Args) > 1 && os.Args[1] == "version" {
|
||||
cmd.ShowVersion("grctl")
|
||||
}
|
||||
if err := server.Run(); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "error: %v\n", err)
|
||||
os.Exit(1)
|
||||
|
11
cmd/mq/mq.go
11
cmd/mq/mq.go
@ -1,19 +1,18 @@
|
||||
|
||||
// RAINBOND, Application Management Platform
|
||||
// Copyright (C) 2014-2017 Goodrain Co., Ltd.
|
||||
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version. For any non-GPL usage of Rainbond,
|
||||
// one or multiple Commercial Licenses authorized by Goodrain Co., Ltd.
|
||||
// must be obtained first.
|
||||
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
@ -23,6 +22,7 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/goodrain/rainbond/cmd"
|
||||
"github.com/goodrain/rainbond/cmd/mq/option"
|
||||
"github.com/goodrain/rainbond/cmd/mq/server"
|
||||
|
||||
@ -30,6 +30,9 @@ import (
|
||||
)
|
||||
|
||||
func main() {
|
||||
if len(os.Args) > 1 && os.Args[1] == "version" {
|
||||
cmd.ShowVersion("mq")
|
||||
}
|
||||
s := option.NewMQServer()
|
||||
s.AddFlags(pflag.CommandLine)
|
||||
pflag.Parse()
|
||||
|
@ -22,11 +22,15 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/goodrain/rainbond/cmd"
|
||||
"github.com/goodrain/rainbond/cmd/node/option"
|
||||
"github.com/goodrain/rainbond/cmd/node/server"
|
||||
)
|
||||
|
||||
func main() {
|
||||
if len(os.Args) > 1 && os.Args[1] == "version" {
|
||||
cmd.ShowVersion("node")
|
||||
}
|
||||
option.Init()
|
||||
if err := server.Run(option.Config); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "error: %v\n", err)
|
||||
|
33
cmd/version.go
Normal file
33
cmd/version.go
Normal file
@ -0,0 +1,33 @@
|
||||
// RAINBOND, Application Management Platform
|
||||
// Copyright (C) 2014-2017 Goodrain Co., Ltd.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version. For any non-GPL usage of Rainbond,
|
||||
// one or multiple Commercial Licenses authorized by Goodrain Co., Ltd.
|
||||
// must be obtained first.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
)
|
||||
|
||||
//CodeVersion 代码版本
|
||||
const CodeVersion = "0.0.0"
|
||||
|
||||
//ShowVersion 显示版本
|
||||
func ShowVersion(module string) {
|
||||
fmt.Printf("Rainbond %s %s\n", module, CodeVersion)
|
||||
os.Exit(0)
|
||||
}
|
@ -22,6 +22,7 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/goodrain/rainbond/cmd"
|
||||
"github.com/goodrain/rainbond/cmd/webcli/option"
|
||||
"github.com/goodrain/rainbond/cmd/webcli/server"
|
||||
|
||||
@ -29,6 +30,9 @@ import (
|
||||
)
|
||||
|
||||
func main() {
|
||||
if len(os.Args) > 1 && os.Args[1] == "version" {
|
||||
cmd.ShowVersion("webcli")
|
||||
}
|
||||
s := option.NewWebCliServer()
|
||||
s.AddFlags(pflag.CommandLine)
|
||||
pflag.Parse()
|
||||
|
@ -1,19 +1,18 @@
|
||||
|
||||
// RAINBOND, Application Management Platform
|
||||
// Copyright (C) 2014-2017 Goodrain Co., Ltd.
|
||||
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version. For any non-GPL usage of Rainbond,
|
||||
// one or multiple Commercial Licenses authorized by Goodrain Co., Ltd.
|
||||
// must be obtained first.
|
||||
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
@ -23,6 +22,7 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/goodrain/rainbond/cmd"
|
||||
"github.com/goodrain/rainbond/cmd/worker/option"
|
||||
"github.com/goodrain/rainbond/cmd/worker/server"
|
||||
|
||||
@ -30,6 +30,9 @@ import (
|
||||
)
|
||||
|
||||
func main() {
|
||||
if len(os.Args) > 1 && os.Args[1] == "version" {
|
||||
cmd.ShowVersion("worker")
|
||||
}
|
||||
s := option.NewWorker()
|
||||
s.AddFlags(pflag.CommandLine)
|
||||
pflag.Parse()
|
||||
|
@ -140,12 +140,48 @@ func (d *DataCenterConfig) GetConfig(name string) *model.ConfigUnit {
|
||||
return d.config.Get(name)
|
||||
}
|
||||
|
||||
//CacheConfig 更新配置缓存
|
||||
func (d *DataCenterConfig) CacheConfig(c *model.ConfigUnit) error {
|
||||
if c.Name == "" {
|
||||
return fmt.Errorf("config name can not be empty")
|
||||
}
|
||||
logrus.Debugf("add config %v", c)
|
||||
//将值类型由[]interface{} 转 []string
|
||||
if c.ValueType == "array" {
|
||||
switch c.Value.(type) {
|
||||
case []interface{}:
|
||||
var data []string
|
||||
for _, v := range c.Value.([]interface{}) {
|
||||
data = append(data, v.(string))
|
||||
}
|
||||
c.Value = data
|
||||
}
|
||||
oldC := d.config.Get(c.Name)
|
||||
if oldC != nil {
|
||||
|
||||
switch oldC.Value.(type) {
|
||||
case string:
|
||||
value := append(c.Value.([]string), oldC.Value.(string))
|
||||
util.Deweight(&value)
|
||||
c.Value = value
|
||||
case []string:
|
||||
value := append(c.Value.([]string), oldC.Value.([]string)...)
|
||||
util.Deweight(&value)
|
||||
c.Value = value
|
||||
default:
|
||||
}
|
||||
}
|
||||
}
|
||||
d.config.Add(*c)
|
||||
return nil
|
||||
}
|
||||
|
||||
//PutConfig 增加or更新配置
|
||||
func (d *DataCenterConfig) PutConfig(c *model.ConfigUnit) error {
|
||||
if c.Name == "" {
|
||||
return fmt.Errorf("config name can not be empty")
|
||||
}
|
||||
logrus.Debugf("add config %v",c)
|
||||
logrus.Debugf("add config %v", c)
|
||||
//将值类型由[]interface{} 转 []string
|
||||
if c.ValueType == "array" {
|
||||
switch c.Value.(type) {
|
||||
@ -186,7 +222,7 @@ func (d *DataCenterConfig) PutConfig(c *model.ConfigUnit) error {
|
||||
func (d *DataCenterConfig) PutConfigKV(kv *mvccpb.KeyValue) {
|
||||
var cn model.ConfigUnit
|
||||
if err := ffjson.Unmarshal(kv.Value, &cn); err == nil {
|
||||
d.PutConfig(&cn)
|
||||
d.CacheConfig(&cn)
|
||||
} else {
|
||||
logrus.Errorf("parse config error,%s", err.Error())
|
||||
}
|
||||
|
@ -293,7 +293,7 @@ func (d *DiscoverAction) DiscoverListeners(
|
||||
var wc node_model.WeightedClusters
|
||||
wc.Clusters = []map[string]interface{}{c}
|
||||
prs["weighted_clusters"] = wc
|
||||
if headers != nil {
|
||||
if len(headers.([]node_model.PieceHeader)) != 0 {
|
||||
prs["headers"] = headers
|
||||
}
|
||||
pvh := &node_model.PieceHTTPVirtualHost{
|
||||
|
@ -87,9 +87,15 @@ func (t *TaskEngine) Start() error {
|
||||
t.LoadStaticTask()
|
||||
//以下工作器只能由一个节点完成
|
||||
//step1 获取调度权限,如果master节点多点部署,只能有一个节点具有调度权
|
||||
var timer = time.NewTimer(time.Second * 4)
|
||||
go func() {
|
||||
defer close(t.down)
|
||||
for {
|
||||
select {
|
||||
case <-t.ctx.Done():
|
||||
return
|
||||
case <-timer.C:
|
||||
}
|
||||
if ok, err := t.haveMaster(); ok {
|
||||
logrus.Infof("Current node(%s) have task scheduler authority", t.currentNode.HostName)
|
||||
keepchan := make(chan struct{}, 1)
|
||||
@ -111,12 +117,7 @@ func (t *TaskEngine) Start() error {
|
||||
} else if err != nil {
|
||||
logrus.Error("check current node Whether has a scheduling authority error,", err.Error())
|
||||
}
|
||||
select {
|
||||
case <-t.ctx.Done():
|
||||
return
|
||||
default:
|
||||
}
|
||||
time.Sleep(time.Second * 3)
|
||||
timer.Reset(time.Second * 4)
|
||||
}
|
||||
}()
|
||||
return nil
|
||||
@ -142,18 +143,18 @@ func (t *TaskEngine) haveMaster() (bool, error) {
|
||||
return false, err
|
||||
}
|
||||
if !resp.Succeeded {
|
||||
ctx, cancel := context.WithTimeout(t.ctx, time.Second*3)
|
||||
ch := store.DefalutClient.WatchByCtx(ctx, "/rainbond/task/scheduler/authority")
|
||||
ctx, cancel := context.WithCancel(t.ctx)
|
||||
defer cancel()
|
||||
ch := store.DefalutClient.WatchByCtx(ctx, key)
|
||||
for {
|
||||
select {
|
||||
case <-t.ctx.Done():
|
||||
cancel()
|
||||
return false, nil
|
||||
case events := <-ch:
|
||||
for _, event := range events.Events {
|
||||
//watch 到删除操作,返回去获取权限
|
||||
if event.Type == client.EventTypeDelete {
|
||||
cancel()
|
||||
logrus.Infof("get event that master offline,will strive for master node permissions.")
|
||||
return false, nil
|
||||
}
|
||||
}
|
||||
@ -165,7 +166,7 @@ func (t *TaskEngine) haveMaster() (bool, error) {
|
||||
}
|
||||
|
||||
func (t *TaskEngine) keepMaster(errchan chan struct{}) {
|
||||
duration := time.Second * 5
|
||||
duration := time.Second * 3
|
||||
timer := time.NewTimer(duration)
|
||||
keep:
|
||||
for {
|
||||
|
@ -46,13 +46,13 @@ function prepare() {
|
||||
|
||||
function build() {
|
||||
echo "---> Build Binary For ACP"
|
||||
echo "acp plugins version:$release_desc"
|
||||
sed -i "s/0.0.0/$release_desc/g" ./cmd/version.go
|
||||
echo "build rainbond-node"
|
||||
docker run --rm -v `pwd`:${WORK_DIR} -w ${WORK_DIR} -it golang:1.8.3 go build -ldflags '-w -s' -o $releasedir/dist/usr/local/bin/${BASE_NAME}-node ./cmd/node
|
||||
echo "grctl version:$release_desc"
|
||||
sed -i "s/0.0.0/$release_desc/g" ./cmd/grctl/option/version.go
|
||||
echo "build rainbond-grctl"
|
||||
docker run --rm -v `pwd`:${WORK_DIR} -w ${WORK_DIR} -it golang:1.8.3 go build -ldflags '-w -s' -o $releasedir/dist/usr/local/bin/${BASE_NAME}-grctl ./cmd/grctl
|
||||
sed -i "s/$release_desc/0.0.0/g" ./cmd/grctl/option/version.go
|
||||
sed -i "s/$release_desc/0.0.0/g" ./cmd/version.go
|
||||
}
|
||||
|
||||
function build::rpm() {
|
||||
|
Loading…
Reference in New Issue
Block a user