Skip to content

Commit

Permalink
Merge pull request #20 from Tencent/master
Browse files Browse the repository at this point in the history
merge from main repository
  • Loading branch information
AlexAi27 committed Dec 8, 2020
2 parents f0c537e + 8944213 commit 37e2ff9
Show file tree
Hide file tree
Showing 523 changed files with 25,179 additions and 20,393 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -4,3 +4,4 @@
*exvim*
build/
*vendor*
*go.sum
34 changes: 27 additions & 7 deletions Makefile
Expand Up @@ -34,9 +34,16 @@ PACKAGEPATH=./build/bcs.${VERSION}
EXPORTPATH=./build/api_export

# options
default:api client storage executor mesos-driver mesos-watch scheduler loadbalance metricservice metriccollector k8s-watch kube-agent k8s-driver netservice sd-prometheus process-executor process-daemon bmsf-mesos-adapter hpacontroller kube-sche consoleproxy clb-controller gw-controller logbeat-sidecar csi-cbs bcs-webhook-server gamestatefulset network detection cpuset bcs-networkpolicy tools gateway user-manager cc-agent bkcmdb-synchronizer bcs-cloud-netservice bcs-cloud-netcontroller bcs-cloud-netagent mesh-manager bcs-ingress-controller log-manager
k8s:api client storage k8s-watch kube-agent k8s-driver csi-cbs kube-sche gamestatefulset
mesos:api client storage dns mesos-driver mesos-watch scheduler loadbalance netservice hpacontroller consoleproxy clb-controller
default:api client storage executor mesos-driver mesos-watch scheduler \
loadbalance metricservice metriccollector k8s-watch kube-agent k8s-driver \
netservice sd-prometheus process-executor process-daemon bmsf-mesos-adapter \
hpacontroller kube-sche consoleproxy clb-controller gw-controller logbeat-sidecar \
csi-cbs bcs-webhook-server gamestatefulset network detection cpuset bcs-networkpolicy \
tools gateway user-manager cc-agent bkcmdb-synchronizer bcs-cloud-netservice bcs-cloud-netcontroller \
bcs-cloud-netagent mesh-manager bcs-ingress-controller log-manager gamedeployment
k8s:api client storage k8s-watch kube-agent k8s-driver csi-cbs kube-sche gamestatefulset gamedeployment
mesos:api client storage dns mesos-driver mesos-watch scheduler loadbalance netservice hpacontroller \
consoleproxy clb-controller

allpack: svcpack k8spack mmpack mnpack
cd build && tar -czf bcs.${VERSION}.tgz bcs.${VERSION}
Expand Down Expand Up @@ -159,7 +166,7 @@ mesos-watch:pre
kube-sche:pre
mkdir -p ${PACKAGEPATH}/bcs-k8s-master
cp -R ./install/conf/bcs-k8s-master/bcs-k8s-custom-scheduler ${PACKAGEPATH}/bcs-k8s-master
cd ./bcs-k8s/bcs-k8s-custom-scheduler && go build ${LDFLAG} -o ${PACKAGEPATH}/bcs-k8s-master/bcs-k8s-custom-scheduler/bcs-k8s-custom-scheduler ./main.go
cd ./bcs-k8s/bcs-k8s-custom-scheduler && go build ${LDFLAG} -o ${WORKSPACE}/${PACKAGEPATH}/bcs-k8s-master/bcs-k8s-custom-scheduler/bcs-k8s-custom-scheduler ./main.go

csi-cbs:pre
mkdir -p ${PACKAGEPATH}/bcs-k8s-master
Expand Down Expand Up @@ -194,6 +201,7 @@ hpacontroller:pre

sd-prometheus:pre
mkdir -p ${PACKAGEPATH}/bcs-services
mkdir -p ${PACKAGEPATH}/bcs-mesos-master
cp -R ./install/conf/bcs-services/bcs-service-prometheus-service ${PACKAGEPATH}/bcs-services
cp -R ./install/conf/bcs-mesos-master/bcs-service-prometheus ${PACKAGEPATH}/bcs-mesos-master
go build ${LDFLAG} -o ${PACKAGEPATH}/bcs-services/bcs-service-prometheus-service/bcs-service-prometheus-service ./bcs-services/bcs-service-prometheus/main.go
Expand All @@ -212,7 +220,17 @@ k8s-watch:pre
gamestatefulset:pre
mkdir -p ${PACKAGEPATH}/bcs-k8s-master
cp -R ./install/conf/bcs-k8s-master/bcs-gamestatefulset-operator ${PACKAGEPATH}/bcs-k8s-master
cd bcs-k8s/bcs-gamestatefulset-operator && go build -o ${WORKSPACE}/${PACKAGEPATH}/bcs-k8s-master/bcs-gamestatefulset-operator/bcs-gamestatefulset-operator ./cmd/gamestatefulset-operator/main.go
cd bcs-k8s/bcs-gamestatefulset-operator && go build ${LDFLAG} -o ${WORKSPACE}/${PACKAGEPATH}/bcs-k8s-master/bcs-gamestatefulset-operator/bcs-gamestatefulset-operator ./cmd/gamestatefulset-operator/main.go

gamedeployment:pre
mkdir -p ${PACKAGEPATH}/bcs-k8s-master
cp -R ./install/conf/bcs-k8s-master/bcs-gamedeployment-operator ${PACKAGEPATH}/bcs-k8s-master
cd bcs-k8s/bcs-gamedeployment-operator && go build ${LDFLAG} -o ${WORKSPACE}/${PACKAGEPATH}/bcs-k8s-master/bcs-gamedeployment-operator/bcs-gamedeployment-operator ./cmd/gamedeployment-operator/main.go

hook:pre
mkdir -p ${PACKAGEPATH}/bcs-k8s-master
cp -R ./install/conf/bcs-k8s-master/bcs-hook-operator ${PACKAGEPATH}/bcs-k8s-master
cd bcs-k8s/bcs-hook-operator && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ${WORKSPACE}/${PACKAGEPATH}/bcs-k8s-master/bcs-hook-operator/bcs-hook-operator ./cmd/hook-operator/main.go

egress-controller:pre
mkdir -p ${PACKAGEPATH}/bcs-k8s-master
Expand All @@ -237,7 +255,9 @@ network:pre
clb-controller:pre
mkdir -p ${PACKAGEPATH}/bcs-services/bcs-clb-controller
cp -R ./install/conf/bcs-services/bcs-clb-controller ${PACKAGEPATH}/bcs-services
cp ./bcs-services/bcs-clb-controller/docker/Dockerfile ${PACKAGEPATH}/bcs-services/bcs-clb-controller/Dockerfile.old
go build ${LDFLAG} -o ${PACKAGEPATH}/bcs-services/bcs-clb-controller/bcs-clb-controller ./bcs-services/bcs-clb-controller/main.go
cp ${PACKAGEPATH}/bcs-services/bcs-clb-controller/bcs-clb-controller ${PACKAGEPATH}/bcs-services/bcs-clb-controller/clb-controller

cpuset:pre
mkdir -p ${PACKAGEPATH}/bcs-services/bcs-cpuset-device
Expand All @@ -250,8 +270,8 @@ gw-controller:pre

bcs-webhook-server:pre
mkdir -p ${PACKAGEPATH}/bcs-services/bcs-webhook-server
cp ./install/conf/bcs-services/bcs-webhook-server/* ${PACKAGEPATH}/bcs-services/bcs-webhook-server
go build ${LDFLAG} -o ${PACKAGEPATH}/bcs-services/bcs-webhook-server/bcs-webhook-server ./bcs-services/bcs-webhook-server/main.go
cp -R ./install/conf/bcs-services/bcs-webhook-server/* ${PACKAGEPATH}/bcs-services/bcs-webhook-server
GOOS=linux go build ${LDFLAG} -o ${PACKAGEPATH}/bcs-services/bcs-webhook-server/bcs-webhook-server ./bcs-services/bcs-webhook-server/cmd/server.go

detection:pre
cp -R ./install/conf/bcs-services/bcs-network-detection ${PACKAGEPATH}/bcs-services
Expand Down
4 changes: 3 additions & 1 deletion bcs-common/common/blog/glog/glog.go
Expand Up @@ -886,7 +886,9 @@ const flushInterval = 30 * time.Second

// flushDaemon periodically flushes the log file buffers.
func (l *loggingT) flushDaemon() {
for _ = range time.NewTicker(flushInterval).C {
ticker := time.NewTicker(flushInterval)
defer ticker.Stop()
for _ = range ticker.C {
l.lockAndFlushAll()
}
}
Expand Down
67 changes: 50 additions & 17 deletions bcs-common/common/storage/watch/sdk.go
Expand Up @@ -16,22 +16,55 @@ package watch
import (
"bytes"
"context"
"encoding/json"
"io"
"net/http"

"github.com/Tencent/bk-bcs/bcs-common/common/codec"
"github.com/Tencent/bk-bcs/bcs-common/common/http/httpclient"
"github.com/Tencent/bk-bcs/bcs-common/common/types"
"github.com/Tencent/bk-bcs/bcs-services/bcs-storage/storage/errors"
"github.com/Tencent/bk-bcs/bcs-services/bcs-storage/storage/operator"
)

// Get a new Watcher with empty WatchOptions
// New get a new Watcher with empty WatchOptions
func New(client *httpclient.HttpClient) *Watcher {
return NewWithOption(&operator.WatchOptions{}, client)
return NewWithOption(&types.WatchOptions{}, client)
}

// Get a new Watcher with provided WatchOptions
func NewWithOption(opts *operator.WatchOptions, client *httpclient.HttpClient) *Watcher {
// EventType event type
type EventType int32

const (
// Nop no operation event
Nop EventType = iota
// Add add event
Add
// Del delete event
Del
// Chg change event
Chg
// SChg self change event
SChg
// Brk event
Brk EventType = -1
)

// Event event of watch
type Event struct {
Type EventType `json:"type"`
Value operator.M `json:"value"`
}

var (
// EventWatchBreak watch break event
EventWatchBreak = &Event{Type: Brk, Value: nil}
// EventWatchBreakBytes watch break event content
EventWatchBreakBytes, _ = json.Marshal(EventWatchBreak)
)

// NewWithOption get a new Watcher with provided WatchOptions
func NewWithOption(opts *types.WatchOptions, client *httpclient.HttpClient) *Watcher {
return &Watcher{
opts: opts,
client: client,
Expand All @@ -42,14 +75,14 @@ func NewWithOption(opts *operator.WatchOptions, client *httpclient.HttpClient) *
type Watcher struct {
client *httpclient.HttpClient

opts *operator.WatchOptions
storageUrl []string
opts *types.WatchOptions
storageURL []string
ctx context.Context
cancel context.CancelFunc
closed bool

resp *http.Response
event *operator.Event
event *Event
err error

nextSignal chan struct{}
Expand All @@ -62,10 +95,10 @@ func (w *Watcher) Connect(storageURL []string) (err error) {
return errors.EventWatchAlreadyConnect
}

w.storageUrl = storageURL
w.storageURL = storageURL

if w.opts == nil {
w.opts = &operator.WatchOptions{}
w.opts = &types.WatchOptions{}
}

if err = w.connect(); err != nil {
Expand All @@ -87,7 +120,7 @@ func (w *Watcher) connect() (err error) {
return
}

for _, u := range w.storageUrl {
for _, u := range w.storageURL {
r, err := http.NewRequest("POST", u, body)
if err != nil {
continue
Expand All @@ -110,13 +143,13 @@ func (w *Watcher) watching() {
case <-w.ctx.Done():
return
case <-w.nextSignal:
w.event = new(operator.Event)
w.event = new(Event)
if w.err = codec.DecJsonReader(w.resp.Body, w.event); w.err == io.ErrUnexpectedEOF && !w.closed {
if w.err = w.connect(); w.err != nil {
w.event = operator.EventWatchBreak
w.event = EventWatchBreak
}
}
if w.event.Type == operator.Nop {
if w.event.Type == Nop {
w.Close()
return
}
Expand All @@ -125,7 +158,7 @@ func (w *Watcher) watching() {
}
}

// Stop watch and close the connection. It must be stop watch first then close connection,
// Close stop watch and close the connection. It must be stop watch first then close connection,
// because watching() will check if the watch is stop after get a EOF error and if not it will reconnect.
func (w *Watcher) Close() {
w.cancel()
Expand All @@ -137,12 +170,12 @@ func (w *Watcher) Close() {
}
}

// Get next event
func (w *Watcher) Next() (*operator.Event, error) {
// Next get next event
func (w *Watcher) Next() (*Event, error) {
w.nextSignal <- struct{}{}
select {
case <-w.ctx.Done():
return operator.EventWatchBreak, nil
return EventWatchBreak, nil
case <-w.receiveSignal:
return w.event, w.err
}
Expand Down
27 changes: 24 additions & 3 deletions bcs-common/common/types/storage.go
Expand Up @@ -16,6 +16,8 @@ package types
import (
"encoding/base64"
"encoding/json"
"time"

"github.com/Tencent/bk-bcs/bcs-common/common/codec"
)

Expand Down Expand Up @@ -122,6 +124,7 @@ type BcsStorageRenderIf struct {
User string `json:"user"`
}

// Gen generate string
func (render *BcsStorageRenderIf) Gen() (r string, err error) {
s, err := json.Marshal(render)
if err != nil {
Expand All @@ -130,6 +133,7 @@ func (render *BcsStorageRenderIf) Gen() (r string, err error) {
return base64.StdEncoding.EncodeToString(s), nil
}

// GetData get data
func (render *BcsStorageRenderIf) GetData() (dc *DeployConfig, err error) {
var tmp []byte
if err = codec.EncJson(render.Data, &tmp); err != nil {
Expand Down Expand Up @@ -159,19 +163,36 @@ type BcsStorageMetricIf struct {
Data interface{} `json:"data"`
}

// BcsStorageClusterSettingsIf define storage cluster-ip relationship interface data interaction
// BcsStorageClusterRelationIf define storage cluster-ip relationship interface data interaction
type BcsStorageClusterRelationIf struct {
Ips []string `json:"ips"`
}

// BcsHostIf define storage set host config interface data interaction
// BcsStorageHostIf define storage set host config interface data interaction
type BcsStorageHostIf struct {
Ip string `json:"ip"`
ClusterId string `json:"clusterId"`
Data interface{} `json:"data"`
}

// BcsStableVersionIf define storage stableVersion interface data interaction
// BcsStorageStableVersionIf define storage stableVersion interface data interaction
type BcsStorageStableVersionIf struct {
Version string `json:"version"`
}

// WatchOptions watch options
type WatchOptions struct {
// Only watch the node itself, including children added, children removed and node value change.
// Will not receive existing children's event.
SelfOnly bool `json:"selfOnly"`

// Max time of events will received. Watch will be ended after the last event. 0 for infinity.
MaxEvents uint `json:"maxEvents"`

// The max waiting time of each event. Watch will be ended after timeout. 0 for no limit.
Timeout time.Duration `json:"timeout"`

// The value-change event will be checked if it's different from last status. If not then this event
// will be ignored. And it will not trigger timeout reset.
MustDiff string `json:"mustDiff"`
}
79 changes: 2 additions & 77 deletions bcs-common/common/util/check.go
Expand Up @@ -16,9 +16,11 @@ package util
import (
"encoding/json"
"fmt"

"github.com/Tencent/bk-bcs/bcs-common/common/types"
)

// CheckKind check object if expected
func CheckKind(kind types.BcsDataType, by []byte) error {
var meta *types.TypeMeta

Expand All @@ -32,81 +34,4 @@ func CheckKind(kind types.BcsDataType, by []byte) error {
}

return nil
/*switch kind {
case types.BcsDataType_APP:
var obj types.ReplicaController
err = json.Unmarshal(by, &obj)
if err != nil {
break
}
if obj.Kind != types.BcsDataType_APP {
err = fmt.Errorf("Kind %s is invalid", obj.Kind)
}
case types.BcsDataType_PROCESS:
var obj types.ReplicaController
err = json.Unmarshal(by, &obj)
if err != nil {
break
}
if obj.Kind != types.BcsDataType_PROCESS {
err = fmt.Errorf("Kind %s is invalid", obj.Kind)
}
case types.BcsDataType_DEPLOYMENT:
var obj types.BcsDeployment
err = json.Unmarshal(by, &obj)
if err != nil {
break
}
if obj.Kind != types.BcsDataType_DEPLOYMENT {
err = fmt.Errorf("Kind %s is invalid", obj.Kind)
}
case types.BcsDataType_SERVICE:
var obj types.BcsService
err = json.Unmarshal(by, &obj)
if err != nil {
break
}
if obj.Kind != types.BcsDataType_SERVICE {
err = fmt.Errorf("Kind %s is invalid", obj.Kind)
}
case types.BcsDataType_CONFIGMAP:
var obj types.BcsConfigMap
err = json.Unmarshal(by, &obj)
if err != nil {
break
}
if obj.Kind != types.BcsDataType_CONFIGMAP {
err = fmt.Errorf("Kind %s is invalid", obj.Kind)
}
case types.BcsDataType_SECRET:
var obj types.BcsSecret
err = json.Unmarshal(by, &obj)
if err != nil {
break
}
if obj.Kind != types.BcsDataType_SECRET {
err = fmt.Errorf("Kind %s is invalid", obj.Kind)
}
default:
return fmt.Errorf("Kind %s is invalid", kind)
}*/

//return err
}

0 comments on commit 37e2ff9

Please sign in to comment.