From 5559e2941066203b7a0308965fcc6c022aaf9259 Mon Sep 17 00:00:00 2001 From: Lidi Zheng Date: Thu, 21 Oct 2021 12:55:56 -0700 Subject: [PATCH 1/2] Adopt the new CSDS standard --- cmd/xds.go | 38 ++++++++++++++++++++++++++++++++++++++ go.mod | 4 ++-- go.sum | 27 ++++++++++++++++++--------- main.go | 30 +++++++++++++++--------------- 4 files changed, 73 insertions(+), 26 deletions(-) diff --git a/cmd/xds.go b/cmd/xds.go index fb82b08..f33a198 100644 --- a/cmd/xds.go +++ b/cmd/xds.go @@ -110,6 +110,34 @@ func xdsConfigCommandRunWithError(cmd *cobra.Command, args []string) error { } } } + for _, genericXdsConfig := range clientStatus.Config[0].GenericXdsConfigs { + var printSubject proto.Message + tokens := strings.Split(genericXdsConfig.TypeUrl, ".") + switch tokens[len(tokens)-1] { + case "Listener": + if wantLDS { + printSubject = genericXdsConfig.GetXdsConfig() + } + case "RouteConfiguration": + if wantRDS { + printSubject = genericXdsConfig.GetXdsConfig() + } + case "Cluster": + if wantCDS { + printSubject = genericXdsConfig.GetXdsConfig() + } + case "ClusterLoadAssignment": + if wantEDS { + printSubject = genericXdsConfig.GetXdsConfig() + } + } + if printSubject != nil { + err := printProtoBufMessageAsJSON(printSubject) + if err != nil { + return fmt.Errorf("Failed to print xDS config: %v", err) + } + } + } return nil } @@ -215,6 +243,16 @@ func xdsStatusCommandRunWithError(cmd *cobra.Command, args []string) error { } } } + for _, genericXdsConfig := range config.GenericXdsConfigs { + entry := xdsResourceStatusEntry{ + Name: genericXdsConfig.Name, + Status: genericXdsConfig.ClientStatus, + Version: genericXdsConfig.VersionInfo, + Type: genericXdsConfig.TypeUrl, + LastUpdated: genericXdsConfig.LastUpdated, + } + printStatusEntry(&entry) + } w.Flush() return nil } diff --git a/go.mod b/go.mod index 56b6cae..9b7f319 100644 --- a/go.mod +++ b/go.mod @@ -4,10 +4,10 @@ go 1.15 require ( github.com/dustin/go-humanize v1.0.0 - github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0 + github.com/envoyproxy/go-control-plane v0.9.10-0.20211021050850-71270e033f33 github.com/golang/protobuf v1.5.2 github.com/spf13/cobra v1.1.1 - google.golang.org/grpc v1.40.0 + google.golang.org/grpc v1.41.0 google.golang.org/grpc/examples v0.0.0-20210921183251-616977cc7974 google.golang.org/protobuf v1.27.1 gopkg.in/yaml.v2 v2.4.0 diff --git a/go.sum b/go.sum index 7d7f340..3270d7d 100644 --- a/go.sum +++ b/go.sum @@ -27,11 +27,13 @@ github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJm github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed h1:OZmjad4L3H8ncOIR8rnb5MREYqG8ixi5+WbeUsquF0c= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe h1:QJDJubh0OEcpeGjC7/8uF9tt4e39U/Ya1uyK+itnNPQ= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -48,8 +50,9 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0 h1:dulLQAYQFYtG5MTplgNGHWuV2D+OBD+Z8lmDBmbLg+s= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.9.10-0.20211021050850-71270e033f33 h1:tGCuuPBTFBR5Nw01p21JUalgb82OLoJh76heZeRuy0E= +github.com/envoyproxy/go-control-plane v0.9.10-0.20211021050850-71270e033f33/go.mod h1:utjuSZ1DPHuYf0cTZ8WEsaQf5bwmT1TZiWaQjpJtBF0= github.com/envoyproxy/protoc-gen-validate v0.1.0 h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= @@ -200,6 +203,7 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= @@ -248,8 +252,9 @@ golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up98WAHf3f/ulnJ62IyA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -272,12 +277,15 @@ golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4 h1:myAQVi0cGEoqQVR5POX+8RR2mrocKqNN1hmeMqhX27k= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -332,8 +340,8 @@ google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.40.0 h1:AGJ0Ih4mHjSeibYkFGh1dD9KJ/eOtZ93I6hoHhukQ5Q= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.41.0 h1:f+PlOh7QV4iIJkPrx5NQ7qaNGFQ3OTse67yaDHfju4E= +google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= google.golang.org/grpc/examples v0.0.0-20210921183251-616977cc7974 h1:sEqnwMb62HDRbqNwDmoyAloFz8FL+LBcNXYl2S5wecU= google.golang.org/grpc/examples v0.0.0-20210921183251-616977cc7974/go.mod h1:gID3PKrg7pWKntu9Ss6zTLJ0ttC0X9IHgREOCZwbCVU= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -365,6 +373,7 @@ gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/main.go b/main.go index 4dde231..f99894b 100644 --- a/main.go +++ b/main.go @@ -7,6 +7,11 @@ import ( // type to present in its descriptor pool. Otherwise, it will fail. Here we // preload as much proto descriptors as possible, so the released binaries can // have better forward compatibility. + _ "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/http/squash/v3" + _ "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/kafka_broker/v3" + _ "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/mysql_proxy/v3" + _ "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/postgres_proxy/v3alpha" + _ "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/rocketmq_proxy/v3" _ "github.com/envoyproxy/go-control-plane/envoy/admin/v3" _ "github.com/envoyproxy/go-control-plane/envoy/config/accesslog/v3" _ "github.com/envoyproxy/go-control-plane/envoy/config/bootstrap/v3" @@ -45,12 +50,12 @@ import ( _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/common/fault/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/common/matcher/action/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/adaptive_concurrency/v3" - _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/admission_control/v3alpha" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/admission_control/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/aws_lambda/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/aws_request_signing/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/buffer/v3" - _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/cache/v3alpha" - _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/cdn_loop/v3alpha" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/cache/v3" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/cdn_loop/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/compressor/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/cors/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/csrf/v3" @@ -58,7 +63,7 @@ import ( _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/dynamic_forward_proxy/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/dynamo/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/ext_authz/v3" - _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/ext_proc/v3alpha" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/ext_proc/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/fault/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/grpc_http1_bridge/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/grpc_http1_reverse_bridge/v3" @@ -73,13 +78,12 @@ import ( _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/kill_request/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/local_ratelimit/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/lua/v3" - _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/oauth2/v3alpha" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/oauth2/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/on_demand/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/original_src/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/ratelimit/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/rbac/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/router/v3" - _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/squash/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/tap/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/wasm/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/listener/http_inspector/v3" @@ -94,24 +98,20 @@ import ( _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/echo/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/ext_authz/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/http_connection_manager/v3" - _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/kafka_broker/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/local_ratelimit/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/mongo_proxy/v3" - _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/mysql_proxy/v3" - _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/postgres_proxy/v3alpha" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/ratelimit/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/rbac/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/redis_proxy/v3" - _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/rocketmq_proxy/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/sni_cluster/v3" - _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/sni_dynamic_forward_proxy/v3alpha" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/sni_dynamic_forward_proxy/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/tcp_proxy/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/thrift_proxy/filters/ratelimit/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/thrift_proxy/router/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/thrift_proxy/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/wasm/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/zookeeper_proxy/v3" - _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/udp/dns_filter/v3alpha" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/udp/dns_filter/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/udp/udp_proxy/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/internal_redirect/allow_listed_routes/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/internal_redirect/previous_routes/v3" @@ -129,14 +129,14 @@ import ( _ "github.com/envoyproxy/go-control-plane/envoy/extensions/transport_sockets/tap/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/transport_sockets/tls/v3" _ "github.com/envoyproxy/go-control-plane/envoy/extensions/wasm/v3" - _ "github.com/envoyproxy/go-control-plane/envoy/extensions/watchdog/profile_action/v3alpha" + _ "github.com/envoyproxy/go-control-plane/envoy/extensions/watchdog/profile_action/v3" _ "github.com/envoyproxy/go-control-plane/envoy/service/accesslog/v3" _ "github.com/envoyproxy/go-control-plane/envoy/service/auth/v3" _ "github.com/envoyproxy/go-control-plane/envoy/service/cluster/v3" _ "github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3" _ "github.com/envoyproxy/go-control-plane/envoy/service/endpoint/v3" _ "github.com/envoyproxy/go-control-plane/envoy/service/event_reporting/v3" - _ "github.com/envoyproxy/go-control-plane/envoy/service/ext_proc/v3alpha" + _ "github.com/envoyproxy/go-control-plane/envoy/service/ext_proc/v3" _ "github.com/envoyproxy/go-control-plane/envoy/service/extension/v3" _ "github.com/envoyproxy/go-control-plane/envoy/service/health/v3" _ "github.com/envoyproxy/go-control-plane/envoy/service/listener/v3" @@ -153,7 +153,7 @@ import ( _ "github.com/envoyproxy/go-control-plane/envoy/type/metadata/v3" _ "github.com/envoyproxy/go-control-plane/envoy/type/tracing/v3" _ "github.com/envoyproxy/go-control-plane/envoy/type/v3" - _ "github.com/envoyproxy/go-control-plane/envoy/watchdog/v3alpha" + _ "github.com/envoyproxy/go-control-plane/envoy/watchdog/v3" ) func main() { From 9c0ae85d8082a118d4c1487e603d76ed25e80ae6 Mon Sep 17 00:00:00 2001 From: Lidi Zheng Date: Mon, 25 Oct 2021 14:17:48 -0700 Subject: [PATCH 2/2] Only allow one CSDS config dump format and prioritize new format --- cmd/xds.go | 194 +++++++++++++++++++++++++++-------------------------- 1 file changed, 99 insertions(+), 95 deletions(-) diff --git a/cmd/xds.go b/cmd/xds.go index f33a198..f63fb72 100644 --- a/cmd/xds.go +++ b/cmd/xds.go @@ -83,33 +83,6 @@ func xdsConfigCommandRunWithError(cmd *cobra.Command, args []string) error { } } // Filter the CSDS output - for _, xdsConfig := range clientStatus.Config[0].XdsConfig { - var printSubject proto.Message - switch xdsConfig.PerXdsConfig.(type) { - case *csdspb.PerXdsConfig_ListenerConfig: - if wantLDS { - printSubject = xdsConfig.GetListenerConfig() - } - case *csdspb.PerXdsConfig_RouteConfig: - if wantRDS { - printSubject = xdsConfig.GetRouteConfig() - } - case *csdspb.PerXdsConfig_ClusterConfig: - if wantCDS { - printSubject = xdsConfig.GetClusterConfig() - } - case *csdspb.PerXdsConfig_EndpointConfig: - if wantEDS { - printSubject = xdsConfig.GetEndpointConfig() - } - } - if printSubject != nil { - err := printProtoBufMessageAsJSON(printSubject) - if err != nil { - return fmt.Errorf("Failed to print xDS config: %v", err) - } - } - } for _, genericXdsConfig := range clientStatus.Config[0].GenericXdsConfigs { var printSubject proto.Message tokens := strings.Split(genericXdsConfig.TypeUrl, ".") @@ -138,6 +111,35 @@ func xdsConfigCommandRunWithError(cmd *cobra.Command, args []string) error { } } } + if len(clientStatus.Config[0].GenericXdsConfigs) == 0 { + for _, xdsConfig := range clientStatus.Config[0].XdsConfig { + var printSubject proto.Message + switch xdsConfig.PerXdsConfig.(type) { + case *csdspb.PerXdsConfig_ListenerConfig: + if wantLDS { + printSubject = xdsConfig.GetListenerConfig() + } + case *csdspb.PerXdsConfig_RouteConfig: + if wantRDS { + printSubject = xdsConfig.GetRouteConfig() + } + case *csdspb.PerXdsConfig_ClusterConfig: + if wantCDS { + printSubject = xdsConfig.GetClusterConfig() + } + case *csdspb.PerXdsConfig_EndpointConfig: + if wantEDS { + printSubject = xdsConfig.GetEndpointConfig() + } + } + if printSubject != nil { + err := printProtoBufMessageAsJSON(printSubject) + if err != nil { + return fmt.Errorf("Failed to print xDS config: %v", err) + } + } + } + } return nil } @@ -175,74 +177,6 @@ func xdsStatusCommandRunWithError(cmd *cobra.Command, args []string) error { fmt.Fprintln(w, "Name\tStatus\tVersion\tType\tLastUpdated") config := clientStatus.Config[0] - for _, xdsConfig := range config.XdsConfig { - switch xdsConfig.PerXdsConfig.(type) { - case *csdspb.PerXdsConfig_ListenerConfig: - for _, dynamicListener := range xdsConfig.GetListenerConfig().DynamicListeners { - entry := xdsResourceStatusEntry{ - Name: dynamicListener.Name, - Status: dynamicListener.ClientStatus, - } - if state := dynamicListener.GetActiveState(); state != nil { - entry.Version = state.VersionInfo - entry.Type = state.Listener.TypeUrl - entry.LastUpdated = state.LastUpdated - } - printStatusEntry(&entry) - } - case *csdspb.PerXdsConfig_RouteConfig: - for _, dynamicRouteConfig := range xdsConfig.GetRouteConfig().DynamicRouteConfigs { - entry := xdsResourceStatusEntry{ - Status: dynamicRouteConfig.ClientStatus, - Version: dynamicRouteConfig.VersionInfo, - Type: dynamicRouteConfig.RouteConfig.TypeUrl, - LastUpdated: dynamicRouteConfig.LastUpdated, - } - if packed := dynamicRouteConfig.GetRouteConfig(); packed != nil { - var routeConfig routepb.RouteConfiguration - if err := ptypes.UnmarshalAny(packed, &routeConfig); err != nil { - return err - } - entry.Name = routeConfig.Name - } - printStatusEntry(&entry) - } - case *csdspb.PerXdsConfig_ClusterConfig: - for _, dynamicCluster := range xdsConfig.GetClusterConfig().DynamicActiveClusters { - entry := xdsResourceStatusEntry{ - Status: dynamicCluster.ClientStatus, - Version: dynamicCluster.VersionInfo, - Type: dynamicCluster.Cluster.TypeUrl, - LastUpdated: dynamicCluster.LastUpdated, - } - if packed := dynamicCluster.GetCluster(); packed != nil { - var cluster clusterpb.Cluster - if err := ptypes.UnmarshalAny(packed, &cluster); err != nil { - return err - } - entry.Name = cluster.Name - } - printStatusEntry(&entry) - } - case *csdspb.PerXdsConfig_EndpointConfig: - for _, dynamicEndpoint := range xdsConfig.GetEndpointConfig().GetDynamicEndpointConfigs() { - entry := xdsResourceStatusEntry{ - Status: dynamicEndpoint.ClientStatus, - Version: dynamicEndpoint.VersionInfo, - Type: dynamicEndpoint.EndpointConfig.TypeUrl, - LastUpdated: dynamicEndpoint.LastUpdated, - } - if packed := dynamicEndpoint.GetEndpointConfig(); packed != nil { - var endpoint endpointpb.ClusterLoadAssignment - if err := ptypes.UnmarshalAny(packed, &endpoint); err != nil { - return err - } - entry.Name = endpoint.ClusterName - } - printStatusEntry(&entry) - } - } - } for _, genericXdsConfig := range config.GenericXdsConfigs { entry := xdsResourceStatusEntry{ Name: genericXdsConfig.Name, @@ -253,6 +187,76 @@ func xdsStatusCommandRunWithError(cmd *cobra.Command, args []string) error { } printStatusEntry(&entry) } + if len(config.GenericXdsConfigs) == 0 { + for _, xdsConfig := range config.XdsConfig { + switch xdsConfig.PerXdsConfig.(type) { + case *csdspb.PerXdsConfig_ListenerConfig: + for _, dynamicListener := range xdsConfig.GetListenerConfig().DynamicListeners { + entry := xdsResourceStatusEntry{ + Name: dynamicListener.Name, + Status: dynamicListener.ClientStatus, + } + if state := dynamicListener.GetActiveState(); state != nil { + entry.Version = state.VersionInfo + entry.Type = state.Listener.TypeUrl + entry.LastUpdated = state.LastUpdated + } + printStatusEntry(&entry) + } + case *csdspb.PerXdsConfig_RouteConfig: + for _, dynamicRouteConfig := range xdsConfig.GetRouteConfig().DynamicRouteConfigs { + entry := xdsResourceStatusEntry{ + Status: dynamicRouteConfig.ClientStatus, + Version: dynamicRouteConfig.VersionInfo, + Type: dynamicRouteConfig.RouteConfig.TypeUrl, + LastUpdated: dynamicRouteConfig.LastUpdated, + } + if packed := dynamicRouteConfig.GetRouteConfig(); packed != nil { + var routeConfig routepb.RouteConfiguration + if err := ptypes.UnmarshalAny(packed, &routeConfig); err != nil { + return err + } + entry.Name = routeConfig.Name + } + printStatusEntry(&entry) + } + case *csdspb.PerXdsConfig_ClusterConfig: + for _, dynamicCluster := range xdsConfig.GetClusterConfig().DynamicActiveClusters { + entry := xdsResourceStatusEntry{ + Status: dynamicCluster.ClientStatus, + Version: dynamicCluster.VersionInfo, + Type: dynamicCluster.Cluster.TypeUrl, + LastUpdated: dynamicCluster.LastUpdated, + } + if packed := dynamicCluster.GetCluster(); packed != nil { + var cluster clusterpb.Cluster + if err := ptypes.UnmarshalAny(packed, &cluster); err != nil { + return err + } + entry.Name = cluster.Name + } + printStatusEntry(&entry) + } + case *csdspb.PerXdsConfig_EndpointConfig: + for _, dynamicEndpoint := range xdsConfig.GetEndpointConfig().GetDynamicEndpointConfigs() { + entry := xdsResourceStatusEntry{ + Status: dynamicEndpoint.ClientStatus, + Version: dynamicEndpoint.VersionInfo, + Type: dynamicEndpoint.EndpointConfig.TypeUrl, + LastUpdated: dynamicEndpoint.LastUpdated, + } + if packed := dynamicEndpoint.GetEndpointConfig(); packed != nil { + var endpoint endpointpb.ClusterLoadAssignment + if err := ptypes.UnmarshalAny(packed, &endpoint); err != nil { + return err + } + entry.Name = endpoint.ClusterName + } + printStatusEntry(&entry) + } + } + } + } w.Flush() return nil }