deepcopy tracing configuration and fix code format (#411)

This commit is contained in:
Jun
2023-07-06 10:02:45 +08:00
committed by GitHub
parent d718870b65
commit d4dbaba760

View File

@@ -15,6 +15,7 @@
package configmap package configmap
import ( import (
"encoding/json"
"errors" "errors"
"fmt" "fmt"
"reflect" "reflect"
@@ -56,7 +57,7 @@ type Zipkin struct {
Port string `json:"port,omitempty"` Port string `json:"port,omitempty"`
} }
// Defines configuration for a Skywalking tracer. // Skywalking Defines configuration for a Skywalking tracer.
type Skywalking struct { type Skywalking struct {
// Address of the Skywalking tracer. // Address of the Skywalking tracer.
Service string `json:"service,omitempty"` Service string `json:"service,omitempty"`
@@ -65,6 +66,7 @@ type Skywalking struct {
AccessToken string `json:"access_token,omitempty"` AccessToken string `json:"access_token,omitempty"`
} }
// OpenTelemetry Defines configuration for a OpenTelemetry tracer.
type OpenTelemetry struct { type OpenTelemetry struct {
// Address of OpenTelemetry tracer. // Address of OpenTelemetry tracer.
Service string `json:"service,omitempty"` Service string `json:"service,omitempty"`
@@ -78,7 +80,7 @@ func validServiceAndPort(service string, port string) bool {
return true return true
} }
func ValidTracing(t *Tracing) error { func validTracing(t *Tracing) error {
if t == nil { if t == nil {
return nil return nil
} }
@@ -121,7 +123,7 @@ func ValidTracing(t *Tracing) error {
return nil return nil
} }
func CompareTracing(old *Tracing, new *Tracing) (Result, error) { func compareTracing(old *Tracing, new *Tracing) (Result, error) {
if old == nil && new == nil { if old == nil && new == nil {
return ResultNothing, nil return ResultNothing, nil
} }
@@ -137,6 +139,16 @@ func CompareTracing(old *Tracing, new *Tracing) (Result, error) {
return ResultNothing, nil return ResultNothing, nil
} }
func deepCopyTracing(tracing *Tracing) (*Tracing, error) {
newTracing := NewDefaultTracing()
bytes, err := json.Marshal(tracing)
if err != nil {
return nil, err
}
err = json.Unmarshal(bytes, newTracing)
return newTracing, err
}
func NewDefaultTracing() *Tracing { func NewDefaultTracing() *Tracing {
tracing := &Tracing{ tracing := &Tracing{
Enable: false, Enable: false,
@@ -163,8 +175,8 @@ func NewTracingController(namespace string) *TracingController {
return tracingMgr return tracingMgr
} }
func (t *TracingController) SetTracing(higressConfig *Tracing) { func (t *TracingController) SetTracing(tracing *Tracing) {
t.tracing.Store(higressConfig) t.tracing.Store(tracing)
} }
func (t *TracingController) GetTracing() *Tracing { func (t *TracingController) GetTracing() *Tracing {
@@ -182,19 +194,23 @@ func (t *TracingController) GetName() string {
} }
func (t *TracingController) AddOrUpdateHigressConfig(name util.ClusterNamespacedName, old *HigressConfig, new *HigressConfig) error { func (t *TracingController) AddOrUpdateHigressConfig(name util.ClusterNamespacedName, old *HigressConfig, new *HigressConfig) error {
if err := ValidTracing(new.Tracing); err != nil { if err := validTracing(new.Tracing); err != nil {
IngressLog.Errorf("data:%+v convert to tracing , error: %+v", new.Tracing, err) IngressLog.Errorf("data:%+v convert to tracing , error: %+v", new.Tracing, err)
return nil return nil
} }
result, _ := CompareTracing(old.Tracing, new.Tracing) result, _ := compareTracing(old.Tracing, new.Tracing)
switch result { switch result {
case ResultReplace: case ResultReplace:
t.SetTracing(new.Tracing) if newTracing, err := deepCopyTracing(new.Tracing); err != nil {
IngressLog.Infof("AddOrUpdate Higress config tracing") IngressLog.Infof("tracing deepcopy error:%v", err)
t.eventHandler(higressTracingEnvoyFilterName) } else {
IngressLog.Infof("send event with filter name:%s", higressTracingEnvoyFilterName) t.SetTracing(newTracing)
IngressLog.Infof("AddOrUpdate Higress config tracing")
t.eventHandler(higressTracingEnvoyFilterName)
IngressLog.Infof("send event with filter name:%s", higressTracingEnvoyFilterName)
}
case ResultDelete: case ResultDelete:
t.SetTracing(NewDefaultTracing()) t.SetTracing(NewDefaultTracing())
IngressLog.Infof("Delete Higress config tracing") IngressLog.Infof("Delete Higress config tracing")
@@ -213,7 +229,7 @@ func (t *TracingController) ValidHigressConfig(higressConfig *HigressConfig) err
return nil return nil
} }
return ValidTracing(higressConfig.Tracing) return validTracing(higressConfig.Tracing)
} }
func (t *TracingController) RegisterItemEventHandler(eventHandler ItemEventHandler) { func (t *TracingController) RegisterItemEventHandler(eventHandler ItemEventHandler) {