Skip to content

Commit

Permalink
Upgrade skywalking-cli dependency (#26)
Browse files Browse the repository at this point in the history
* Some enchancements for HPA metric adapter:

 * Support special characters in label selectors
 * Add namespace to HPA metrics

Signed-off-by: Gao Hongtao <[email protected]>

* Document namespace

Signed-off-by: Gao Hongtao <[email protected]>

* Upgrade skywalking-cli

Signed-off-by: Gao Hongtao <[email protected]>

* Update release version

Signed-off-by: Gao Hongtao <[email protected]>

* Fix lint issues

Signed-off-by: Gao Hongtao <[email protected]>
  • Loading branch information
hanahmily authored Mar 25, 2021
1 parent d6f5bfa commit 45b1554
Show file tree
Hide file tree
Showing 5 changed files with 78 additions and 83 deletions.
5 changes: 4 additions & 1 deletion CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,16 @@ Changes by Version
==================
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
------------------

Expand Down
8 changes: 5 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,16 @@ go 1.14

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
Expand All @@ -26,3 +24,7 @@ require (
)

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
30 changes: 11 additions & 19 deletions go.sum
Original file line number Diff line number Diff line change
@@ -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=
Expand Down Expand Up @@ -75,6 +74,10 @@ github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRF
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=
Expand All @@ -101,7 +104,7 @@ github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL
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=
Expand Down Expand Up @@ -141,7 +144,7 @@ github.com/emicklei/go-restful v2.14.3+incompatible h1:i59XyRHAxKCVBw3vHzQlpP/+p
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=
Expand Down Expand Up @@ -404,6 +407,7 @@ github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0Qu
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=
Expand Down Expand Up @@ -610,7 +614,6 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH
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=
Expand All @@ -632,7 +635,6 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
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=
Expand Down Expand Up @@ -682,7 +684,6 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ
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=
Expand Down Expand Up @@ -747,7 +748,6 @@ golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGm
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=
Expand Down Expand Up @@ -807,7 +807,6 @@ google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsb
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=
Expand Down Expand Up @@ -838,17 +837,8 @@ google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaR
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=
Expand Down Expand Up @@ -889,6 +879,8 @@ gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
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=
Expand Down
105 changes: 56 additions & 49 deletions pkg/provider/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,9 @@ import (
"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"
Expand All @@ -45,14 +41,15 @@ import (

const labelValueTypeStr string = "str"
const labelValueTypeByte string = "byte"
const stepMinute string = "2006-01-02 1504"

var (
NsGroupResource = apischema.GroupResource{Resource: "namespaces"}
)

// 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
Expand Down Expand Up @@ -165,7 +162,7 @@ func bufferEntity(buff []string, index int, requirement labels.Requirement, dec

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
Expand Down Expand Up @@ -193,61 +190,50 @@ func (p *externalMetricsProvider) GetExternalMetric(namespace string, metricSele
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 {
Expand All @@ -272,7 +258,7 @@ func (p *externalMetricsProvider) GetExternalMetric(namespace string, metricSele
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{
Expand Down Expand Up @@ -310,3 +296,24 @@ func (p *externalMetricsProvider) selectGroupResource(namespace string) apischem
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
}
13 changes: 2 additions & 11 deletions pkg/provider/registry.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,8 @@ package provider
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"
)
Expand All @@ -51,16 +48,10 @@ func (p *externalMetricsProvider) sync() {
}

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()
Expand Down

0 comments on commit 45b1554

Please sign in to comment.