Upgrade skywalking-cli dependency (#26)
* Some enchancements for HPA metric adapter:
* Support special characters in label selectors
* Add namespace to HPA metrics
Signed-off-by: Gao Hongtao <hanahmily@gmail.com>
* Document namespace
Signed-off-by: Gao Hongtao <hanahmily@gmail.com>
* Upgrade skywalking-cli
Signed-off-by: Gao Hongtao <hanahmily@gmail.com>
* Update release version
Signed-off-by: Gao Hongtao <hanahmily@gmail.com>
* Fix lint issues
Signed-off-by: Gao Hongtao <hanahmily@gmail.com>
diff --git a/CHANGES.md b/CHANGES.md
index 94597ca..695cc65 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -2,13 +2,16 @@
==================
Release Notes.
-0.2.1
+0.3.0
------------------
#### Features
- Support special characters in the metric selector of HPA metric adapter.
- Add the namespace to HPA metric name.
+#### Chores
+- Upgrade skywalking-cli dependency.
+
0.2.0
------------------
diff --git a/go.mod b/go.mod
index 306cda6..c3aa8ce 100644
--- a/go.mod
+++ b/go.mod
@@ -4,18 +4,16 @@
require (
github.com/Masterminds/sprig/v3 v3.1.0
- github.com/apache/skywalking-cli v0.0.0-20201125155244-ffee47d2e83d
+ github.com/apache/skywalking-cli v0.0.0-20210209032327-04a0ce08990f
github.com/evanphx/json-patch v4.9.0+incompatible
github.com/ghodss/yaml v1.0.0
github.com/go-logr/logr v0.3.0
github.com/kubernetes-sigs/custom-metrics-apiserver v0.0.0-20201110135240-8c12d6d92362
- github.com/machinebox/graphql v0.2.2
github.com/sirupsen/logrus v1.7.0
github.com/spf13/cobra v1.1.1
github.com/stretchr/testify v1.6.1
github.com/urfave/cli v1.22.1
k8s.io/api v0.20.1
- k8s.io/apiextensions-apiserver v0.20.1 // indirect
k8s.io/apimachinery v0.20.1
k8s.io/apiserver v0.20.1
k8s.io/client-go v0.20.1
@@ -26,3 +24,7 @@
)
replace github.com/googleapis/gnostic => github.com/googleapis/gnostic v0.4.1
+
+replace skywalking/network => github.com/apache/skywalking-cli/gen-codes/skywalking/network v0.0.0-20210209032327-04a0ce08990f
+
+replace google.golang.org/grpc => google.golang.org/grpc v1.29.1
diff --git a/go.sum b/go.sum
index 7b28650..27f1b01 100644
--- a/go.sum
+++ b/go.sum
@@ -1,4 +1,3 @@
-cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.38.0 h1:ROfEUZz+Gh5pa62DJWXSaonyu3StP6EA6lPEXPI6mCo=
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
@@ -75,6 +74,10 @@
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
github.com/apache/skywalking-cli v0.0.0-20201125155244-ffee47d2e83d h1:vJeCfqKTLGQXGUy3+dYRNclCJgRsj3VQiCff/+yvfMA=
github.com/apache/skywalking-cli v0.0.0-20201125155244-ffee47d2e83d/go.mod h1:kUqj2ESaiYz89JFJUr+cL6EDmzlEYSrlEMOkWg9wuS4=
+github.com/apache/skywalking-cli v0.0.0-20210209032327-04a0ce08990f h1:DknnvUn5ZR1hRtS42stGr3O6REwBFh6iyotoCJ2jFZ8=
+github.com/apache/skywalking-cli v0.0.0-20210209032327-04a0ce08990f/go.mod h1:EMKZ5MAEnCrNTPxqWu3s1QgnoUDQEO0oS+ohNB09JE8=
+github.com/apache/skywalking-cli/gen-codes/skywalking/network v0.0.0-20210209032327-04a0ce08990f/go.mod h1:kacAwfQjKgotVA/J4v4LZLo682UCOb1AktGep9oDDxw=
+github.com/apache/skywalking-swck v0.2.0/go.mod h1:kU75U5Tb3aEi1Vk1KX7hzyh8Hv7sUMNx0Djq5PLEPWI=
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
@@ -101,7 +104,7 @@
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
-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/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa h1:OaNxuTZr7kxeODyLWsRMC+OD03aFUH+mW6r2d+MWa5Y=
github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
@@ -141,7 +144,7 @@
github.com/emicklei/go-restful v2.14.3+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
github.com/emicklei/go-restful-swagger12 v0.0.0-20201014110547-68ccff494617 h1:jri9taV4TK9oItoWJCofXJi21Dp/k25u32NnfphqLAY=
github.com/emicklei/go-restful-swagger12 v0.0.0-20201014110547-68ccff494617/go.mod h1:qr0VowGBT4CS4Q8vFF8BSeKz34PuqKGxs/L0IAQA9DQ=
-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/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/evanphx/json-patch v4.5.0+incompatible h1:ouOWdg56aJriqS0huScTkVXPC5IcNrDCXZ6OoTAWu7M=
github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
@@ -404,6 +407,7 @@
github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
+github.com/mitchellh/mapstructure v1.4.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY=
github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo=
@@ -610,7 +614,6 @@
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
-golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
@@ -632,7 +635,6 @@
golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -682,7 +684,6 @@
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -747,7 +748,6 @@
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
@@ -807,7 +807,6 @@
google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.5.0 h1:KxkO13IPW4Lslp2bz+KHP2E3gtFlrIGNThxkZQ3g+4c=
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
@@ -838,17 +837,8 @@
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a h1:pOwg4OoaRYScjmR4LlLgdtnyoHYTSAVhhqe5uPdpII8=
google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
-google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
-google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
-google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
-google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA=
-google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.27.0 h1:rRYRFMVgRv6E0D70Skyfsr28tDXIuuPZyWGMPdMcnXg=
-google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.27.1 h1:zvIju4sqAGvwKspUQOhwnpcqSbzi7/H6QomNNjTL4sk=
-google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.29.1 h1:EC2SB8S04d2r73uptxphDSUG+kTKVgjRPF+N3xpxRB4=
+google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
@@ -889,6 +879,8 @@
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
gopkg.in/yaml.v2 v2.3.0/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 h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
diff --git a/pkg/provider/provider.go b/pkg/provider/provider.go
index 0033251..220cb7a 100644
--- a/pkg/provider/provider.go
+++ b/pkg/provider/provider.go
@@ -26,13 +26,9 @@
"sync"
"time"
- "github.com/apache/skywalking-cli/assets"
- "github.com/apache/skywalking-cli/commands/interceptor"
- "github.com/apache/skywalking-cli/graphql/client"
- swctlschema "github.com/apache/skywalking-cli/graphql/schema"
- "github.com/apache/skywalking-cli/graphql/utils"
+ swctlapi "github.com/apache/skywalking-cli/api"
+ "github.com/apache/skywalking-cli/pkg/graphql/metrics"
apiprovider "github.com/kubernetes-sigs/custom-metrics-apiserver/pkg/provider"
- "github.com/machinebox/graphql"
"github.com/urfave/cli"
apierr "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/resource"
@@ -45,6 +41,7 @@
const labelValueTypeStr string = "str"
const labelValueTypeByte string = "byte"
+const stepMinute string = "2006-01-02 1504"
var (
NsGroupResource = apischema.GroupResource{Resource: "namespaces"}
@@ -52,7 +49,7 @@
// externalMetricsProvider is a implementation of provider.MetricsProvider which provides metrics from OAP
type externalMetricsProvider struct {
- metricDefines []*swctlschema.MetricDefinition
+ metricDefines []*swctlapi.MetricDefinition
lock sync.RWMutex
ctx *cli.Context
regex string
@@ -165,7 +162,7 @@
func (p *externalMetricsProvider) GetExternalMetric(namespace string, metricSelector labels.Selector,
info apiprovider.ExternalMetricInfo) (*external_metrics.ExternalMetricValueList, error) {
- var md *swctlschema.MetricDefinition
+ var md *swctlapi.MetricDefinition
for _, m := range p.metricDefines {
if p.getMetricNameWithNamespace(m.Name) == info.Metric {
md = m
@@ -193,61 +190,50 @@
now := time.Now()
startTime := now.Add(-3 * time.Minute)
endTime := now
- step := swctlschema.StepMinute
- duration := swctlschema.Duration{
- Start: startTime.Format(utils.StepFormats[step]),
- End: endTime.Format(utils.StepFormats[step]),
+ step := swctlapi.StepMinute
+ duration := swctlapi.Duration{
+ Start: startTime.Format(stepMinute),
+ End: endTime.Format(stepMinute),
Step: step,
}
normal := true
- condition := swctlschema.MetricsCondition{
- Name: md.Name,
- Entity: &swctlschema.Entity{
- Scope: interceptor.ParseScope(md.Name),
- ServiceName: svc.val,
- ServiceInstanceName: instance.val,
- EndpointName: endpoint.val,
- Normal: &normal,
- },
+ empty := ""
+ entity := &swctlapi.Entity{
+ ServiceName: svc.val,
+ ServiceInstanceName: instance.val,
+ EndpointName: endpoint.val,
+ Normal: &normal,
+ DestServiceName: &empty,
+ DestNormal: &normal,
+ DestServiceInstanceName: &empty,
+ DestEndpointName: &empty,
}
- var metricsValues swctlschema.MetricsValues
- if md.Type == swctlschema.MetricsTypeRegularValue {
- var response map[string]swctlschema.MetricsValues
-
- request := graphql.NewRequest(assets.Read("graphqls/metrics/MetricsValues.graphql"))
-
- request.Var("condition", condition)
- request.Var("duration", duration)
-
- if err := client.ExecuteQuery(p.ctx, request, &response); err != nil {
+ entity.Scope = parseScope(entity)
+ condition := swctlapi.MetricsCondition{
+ Name: md.Name,
+ Entity: entity,
+ }
+ var metricsValues swctlapi.MetricsValues
+ if md.Type == swctlapi.MetricsTypeRegularValue {
+ var err error
+ metricsValues, err = metrics.LinearIntValues(p.ctx, condition, duration)
+ if err != nil {
return nil, apierr.NewInternalError(fmt.Errorf("unable to fetch metrics: %v", err))
}
-
- klog.V(4).Infof("Linear request{condition:%s, duration:%s} response %s", display(condition), display(duration), display(response))
-
- metricsValues = response["result"]
- } else if md.Type == swctlschema.MetricsTypeLabeledValue {
+ klog.V(4).Infof("Linear request{condition:%s, duration:%s} response %s", display(condition), display(duration), display(metricsValues))
+ } else if md.Type == swctlapi.MetricsTypeLabeledValue {
if *label.val == "" {
klog.Errorf("%s is lack of required label 'label'", md.Name)
return nil, apierr.NewBadRequest(fmt.Sprintf("%s is lack of required label 'label'", md.Name))
}
- var response map[string][]swctlschema.MetricsValues
-
- request := graphql.NewRequest(assets.Read("graphqls/metrics/LabeledMetricsValues.graphql"))
-
- request.Var("duration", duration)
- request.Var("condition", condition)
- request.Var("labels", []string{*label.val})
-
- if err := client.ExecuteQuery(p.ctx, request, &response); err != nil {
+ result, err := metrics.MultipleLinearIntValues(p.ctx, condition, []string{*label.val}, duration)
+ if err != nil {
return nil, apierr.NewInternalError(fmt.Errorf("unable to fetch metrics: %v", err))
}
klog.V(4).Infof("Labeled request{condition:%s, duration:%s, labels:%s} response %s",
- display(condition), display(duration), *label.val, display(response))
-
- result := response["result"]
+ display(condition), display(duration), *label.val, display(result))
for _, r := range result {
if *r.Label == *label.val {
@@ -272,7 +258,7 @@
if sValue == 0 {
sTime = endTime
}
- klog.V(4).Infof("metric value: %d, timestamp: %s", sValue, sTime.Format(utils.StepFormats[step]))
+ klog.V(4).Infof("metric value: %d, timestamp: %s", sValue, sTime.Format(stepMinute))
return &external_metrics.ExternalMetricValueList{
Items: []external_metrics.ExternalMetricValue{
@@ -310,3 +296,24 @@
func (p *externalMetricsProvider) getMetricNameWithNamespace(metricName string) string {
return strings.Join([]string{p.namespace, metricName}, "|")
}
+
+// TODO: remove this function once cli move it from internal module to pkg
+func parseScope(entity *swctlapi.Entity) swctlapi.Scope {
+ scope := swctlapi.ScopeAll
+
+ if *entity.DestEndpointName != "" {
+ scope = swctlapi.ScopeEndpointRelation
+ } else if *entity.DestServiceInstanceName != "" {
+ scope = swctlapi.ScopeServiceInstanceRelation
+ } else if *entity.DestServiceName != "" {
+ scope = swctlapi.ScopeServiceRelation
+ } else if *entity.EndpointName != "" {
+ scope = swctlapi.ScopeEndpoint
+ } else if *entity.ServiceInstanceName != "" {
+ scope = swctlapi.ScopeServiceInstance
+ } else if *entity.ServiceName != "" {
+ scope = swctlapi.ScopeService
+ }
+
+ return scope
+}
diff --git a/pkg/provider/registry.go b/pkg/provider/registry.go
index e468a10..e8ef5cc 100644
--- a/pkg/provider/registry.go
+++ b/pkg/provider/registry.go
@@ -20,11 +20,8 @@
import (
"encoding/json"
- "github.com/apache/skywalking-cli/assets"
- "github.com/apache/skywalking-cli/graphql/client"
- swctlschema "github.com/apache/skywalking-cli/graphql/schema"
+ "github.com/apache/skywalking-cli/pkg/graphql/metrics"
apiprovider "github.com/kubernetes-sigs/custom-metrics-apiserver/pkg/provider"
- "github.com/machinebox/graphql"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/klog/v2"
)
@@ -51,16 +48,10 @@
}
func (p *externalMetricsProvider) updateMetrics() error {
- var response map[string][]*swctlschema.MetricDefinition
- request := graphql.NewRequest(assets.Read("graphqls/metrics/ListMetrics.graphql"))
- request.Var("regex", p.regex)
-
- err := client.ExecuteQuery(p.ctx, request, &response)
+ mdd, err := metrics.ListMetrics(p.ctx, p.regex)
if err != nil {
return err
}
-
- mdd := response["result"]
klog.Infof("Get service metrics: %s", display(mdd))
if len(mdd) > 0 {
p.lock.Lock()