From b35d40b7f24489d3731edd0e3cfcfd0699e25951 Mon Sep 17 00:00:00 2001 From: Tyler Lloyd Date: Wed, 3 Nov 2021 13:34:18 -0400 Subject: [PATCH 1/9] bumping to go 1.16 and updating k8s packages Signed-off-by: Tyler Lloyd --- Dockerfile | 2 +- go.mod | 31 +--- go.sum | 438 ++++++++++++++++++++++++++++++++++++++++++++--------- 3 files changed, 372 insertions(+), 99 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2a04546..f5cc365 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.14-alpine as builder +FROM golang:1.16-alpine as builder # Install our build tools diff --git a/go.mod b/go.mod index 99a1673..8896a54 100644 --- a/go.mod +++ b/go.mod @@ -1,11 +1,10 @@ module github.com/bloomberg/goldpinger/v3 -go 1.14 +go 1.16 require ( github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 // indirect github.com/cespare/xxhash v1.1.0 - github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680 // indirect github.com/go-openapi/errors v0.20.0 github.com/go-openapi/loads v0.19.5 github.com/go-openapi/runtime v0.19.26 @@ -13,33 +12,17 @@ require ( github.com/go-openapi/strfmt v0.20.0 github.com/go-openapi/swag v0.19.9 github.com/go-openapi/validate v0.19.10 - github.com/gogo/protobuf v0.0.0-20170330071051-c0656edd0d9e // indirect - github.com/golang/glog v0.0.0-20141105023935-44145f04b68c // indirect - github.com/google/btree v1.0.0 // indirect - github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367 // indirect - github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d // indirect - github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7 // indirect - github.com/imdario/mergo v0.3.5 // indirect github.com/jessevdk/go-flags v1.4.0 - github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 // indirect - github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/prometheus/client_golang v0.9.1 - github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910 // indirect github.com/prometheus/common v0.0.0-20181020173914-7e9e6cabbd39 // indirect github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d // indirect github.com/stuartnelson3/go-rendezvous v0.2.0 go.uber.org/zap v1.14.1 - golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 // indirect - golang.org/x/image v0.0.0-20190220214146-31aff87c08e9 - golang.org/x/net v0.0.0-20200602114024-627f9648deb9 - golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d // indirect - golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a // indirect - golang.org/x/time v0.0.0-20161028155119-f51c12702a4d // indirect - gopkg.in/inf.v0 v0.9.0 // indirect - k8s.io/api v0.0.0-20181004124137-fd83cbc87e76 // indirect - k8s.io/apimachinery v0.0.0-20180913025736-6dd46049f395 - k8s.io/client-go v9.0.0+incompatible + golang.org/x/image v0.0.0-20190802002840-cff245a6509b + golang.org/x/net v0.0.0-20210520170846-37e1c6afe023 + k8s.io/api v0.22.3 + k8s.io/apimachinery v0.22.3 + k8s.io/client-go v0.22.3 + k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a ) diff --git a/go.sum b/go.sum index a98998d..f69b7d8 100644 --- a/go.sum +++ b/go.sum @@ -1,40 +1,85 @@ +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/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= +github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= +github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= +github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= +github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/PuerkitoBio/purell v1.1.0 h1:rmGxhojJlM0tuKtfdvliR84CFHljx9ag64t2xmVkjK4= github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf h1:eg0MeVzsP1G42dRafH3vf+al2vQIJU0YHX+1Tw87oco= github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= -github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535 h1:4daAzAu0S6Vi7/lbWECcX0j45yZReDZ56BQsrVBOEEY= github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef h1:46PFijGLmAjMPwCCCo7Jf0W6f9slllCkkv7vyc1yOSg= github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +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/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/docker/go-units v0.3.3 h1:Xk8S3Xj5sLGlG5g67hJmYMmUgXv5N4PhkjJHHqrwnTk= github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680 h1:ZktWZesgun21uEDrwW7iEV1zPCGQldM2atlJZ3TdvVM= -github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= -github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8 h1:DujepqpGd1hyOd7aW59XpK7Qymp8iy83xq74fLr21is= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-logr/logr v0.4.0 h1:K7/B1jt6fIBQVd4Owv2MqGQClcgf0R266+7C/QjRcLc= +github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= @@ -87,7 +132,6 @@ github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+Z github.com/go-openapi/strfmt v0.19.2/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= github.com/go-openapi/strfmt v0.19.4/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= -github.com/go-openapi/strfmt v0.19.5 h1:0utjKrw+BAh8s57XE9Xz8DUBsVvPmRUB6styvl9wWIM= github.com/go-openapi/strfmt v0.19.5/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= github.com/go-openapi/strfmt v0.20.0 h1:l2omNtmNbMc39IGptl9BuXBEKcZfS8zjrTsPKTiJiDM= github.com/go-openapi/strfmt v0.20.0/go.mod h1:UukAYgTaQfqJuAFlNxxMWNvMYiwiXtLsF2VwmoFtbtc= @@ -130,30 +174,69 @@ github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWe github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= -github.com/gogo/protobuf v0.0.0-20170330071051-c0656edd0d9e h1:ago6fNuQ6IhszPsXkeU7qRCyfsIX7L67WDybsAPkLl8= -github.com/gogo/protobuf v0.0.0-20170330071051-c0656edd0d9e/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/golang/glog v0.0.0-20141105023935-44145f04b68c h1:CbdkBQ1/PiAo0FYJhQGwASD8wrgNvTdf01g6+O9tNuA= -github.com/golang/glog v0.0.0-20141105023935-44145f04b68c/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367 h1:ScAXWS+TR6MZKex+7Z8rneuSJH+FSDqd6ocQyl+ZHo4= -github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.0.0 h1:b4Gk+7WdP/d3HZH8EJsZpvV7EtDOgaZLtnaNGIu1adA= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d h1:7XGaL1e6bYS1yIonGp9761ExpPPV1ui0SAC59Yube9k= -github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7 h1:6TSoaYExHper8PYsJu23GWVNOyYRCSnIFyxKgLSZ54w= -github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= +github.com/googleapis/gnostic v0.5.5 h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw= +github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.5 h1:JboBksRwiiAJWvIYJVo46AfV+IAIKZpfrSzVKj42R4Q= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= @@ -162,24 +245,26 @@ github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJS github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= -github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3 h1:/UewZcckqhvnnS0C6r3Sher2hSEbVmM6Ogpcjen08+Y= -github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329 h1:2gxZ0XQIU/5z3Z3bUBu+FXuk2pFbkN6tcwi/pjyaDic= github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -190,29 +275,37 @@ github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsI github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.3.2 h1:mRS76wmkOn3KkKAyXDu42V+6ebnXWIztFSYGN7GeoRg= github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.3.3 h1:SzB1nHZ2Xi+17FP0zVQBHIZqvwRN9408fJO8h+eeNA8= github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 h1:Esafd1046DLDQ0W1YjYsBW+p8U2u7vzgW2SQVmlNazg= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= -github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= -github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -220,8 +313,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v0.9.1 h1:K47Rk0v/fkEfwfQet2KWhscE0cJzjgCCDBG2KHZoVno= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910 h1:idejC8f05m9MGOsuEi1ATq9shN03HrxNkD/luQvxCv8= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 h1:gQz4mCbXsO+nc9n1hCxHcGA3Zx3Eo+UHZoInFGUIXNM= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20181020173914-7e9e6cabbd39 h1:Cto4X6SVMWRPBkJ/3YHn1iDGDGc/Z+sW+AEMKHMVvN4= github.com/prometheus/common v0.0.0-20181020173914-7e9e6cabbd39/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d h1:GoAlyOgbOEIFdaDqxJVlbOQ1DtGmZWs/Qau0hIlk+WQ= @@ -234,32 +327,41 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= +github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= 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.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stuartnelson3/go-rendezvous v0.2.0 h1:H5IexrsptBzCMQEjTRrNH20MVXGqpFf1JUCPglaxd6I= github.com/stuartnelson3/go-rendezvous v0.2.0/go.mod h1:njfgP6zISyRnZ3iQN13NSEILfSNLN4ysxBoGxHs5PJ0= github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.3.0/go.mod h1:MSWZXKOynuguX+JSvwP8i+58jYCXxbia8HS3gZBapIE= -go.mongodb.org/mongo-driver v1.3.4 h1:zs/dKNwX0gYUtzwrN9lLiR15hCO0nDwQj5xXx+vjCdE= go.mongodb.org/mongo-driver v1.3.4/go.mod h1:MSWZXKOynuguX+JSvwP8i+58jYCXxbia8HS3gZBapIE= go.mongodb.org/mongo-driver v1.4.3 h1:moga+uhicpVshTyaqY9L23E6QqwcHRUv1sqyOsoyOO8= go.mongodb.org/mongo-driver v1.4.3/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/multierr v1.5.0 h1:KCa4XfM8CWFCpxXRGok+Q0SS/0XBhMDbHHGABQLvD2A= @@ -274,102 +376,290 @@ golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 h1:ObdrDkeb4kJdCP557AjRjq69pTHfNouLtWZG7j9rPN8= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/image v0.0.0-20190220214146-31aff87c08e9 h1:+vH8qNweCrORN49012OX3h0oWEXO3p+rRnpAGQinddk= -golang.org/x/image v0.0.0-20190220214146-31aff87c08e9/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +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 h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4= +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= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +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-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b h1:0mm1VjtFUOIlE1SbDlwjYaDxZVDP2S5ou6y0gSgXHu8= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200602114024-627f9648deb9 h1:pNX+40auqi2JqRfOP1akLGtYcn15TUbkhwuCO3foqqM= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210520170846-37e1c6afe023 h1:ADo5wSpq2gqaCGQWzk7S5vd//0iyyLeAratkEoG5dLE= +golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +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= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a h1:WXEvlFVvvGxCJLG6REjsT03iWnKLEWinaScsxF2Vm2o= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +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-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22 h1:RqytpXGR1iVNX7psjB3ff8y7sNFinVFvkx1c8SjBkio= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE= +golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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-20161028155119-f51c12702a4d h1:TnM+PKb3ylGmZvyPXmo9m/wktg7Jn/a/fNmr33HSj8g= -golang.org/x/time v0.0.0-20161028155119-f51c12702a4d/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= +golang.org/x/text v0.3.6/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/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac h1:7zkz7BUtwNFFqcowJ+RIgu2MaV/MapERkDIy+mwPyjs= +golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/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-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5 h1:hKsoRgsbwY1NafxrwTs+k64bikrLBkAgPir1TNCj3Zs= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a h1:CB3a9Nez8M13wwlr/E2YtwoU+qYHKfC+JrDa45RXXoQ= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +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= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5 h1:tycE03LOZYQNhDpS27tcQdAzLCVMaj7QT2SXxebnpCM= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/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.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +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= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/inf.v0 v0.9.0 h1:3zYtXIO92bvsdS3ggAdA8Gb4Azj0YU+TVY1uGYNFA8o= -gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 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.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/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/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= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -k8s.io/api v0.0.0-20181004124137-fd83cbc87e76 h1:cGc6jt7tNK7a2WfgNKjxjoU/UXXr9Q7JTqvCupZ+6+Y= -k8s.io/api v0.0.0-20181004124137-fd83cbc87e76/go.mod h1:iuAfoD4hCxJ8Onx9kaTIt30j7jUFS00AXQi6QMi99vA= -k8s.io/apimachinery v0.0.0-20180913025736-6dd46049f395 h1:X+c9tYTDc9Pmt+Z1YSMqmUTCYf13VYe1u+ZwzjgpK0M= -k8s.io/apimachinery v0.0.0-20180913025736-6dd46049f395/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0= -k8s.io/client-go v9.0.0+incompatible h1:2kqW3X2xQ9SbFvWZjGEHBLlWc1LG9JIJNXWkuqwdZ3A= -k8s.io/client-go v9.0.0+incompatible/go.mod h1:7vJpHMYJwNQCWgzmNV+VYUl1zCObLyodBc8nIyt8L5s= +honnef.co/go/tools v0.0.1-2020.1.3 h1:sXmLre5bzIR6ypkjXCDI3jHPssRhc8KD/Ome589sc3U= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +k8s.io/api v0.22.3 h1:wOoES2GoSkUsdped2RB4zYypPqWtvprGoKCENTOOjP4= +k8s.io/api v0.22.3/go.mod h1:azgiXFiXqiWyLCfI62/eYBOu19rj2LKmIhFPP4+33fs= +k8s.io/apimachinery v0.22.3 h1:mrvBG5CZnEfwgpVqWcrRKvdsYECTrhAR6cApAgdsflk= +k8s.io/apimachinery v0.22.3/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= +k8s.io/client-go v0.22.3 h1:6onkOSc+YNdwq5zXE0wFXicq64rrym+mXwHu/CPVGO4= +k8s.io/client-go v0.22.3/go.mod h1:ElDjYf8gvZsKDYexmsmnMQ0DYO8W9RwBjfQ1PI53yow= +k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.9.0 h1:D7HV+n1V57XeZ0m6tdRkfknthUaM06VFbWldOFh8kzM= +k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= +k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= +k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a h1:8dYfu/Fc9Gz2rNJKB9IQRGgQOh2clmRzNIPPY1xLY5g= +k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.1.2 h1:Hr/htKFmJEbtMgS/UD0N+gtgctAqz81t3nu+sPzynno= +sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= +sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= From 5d2070fad103f72eae018a602e65b9d40e1c1fc5 Mon Sep 17 00:00:00 2001 From: Tyler Lloyd Date: Wed, 3 Nov 2021 13:35:24 -0400 Subject: [PATCH 2/9] get pod and host IPv6 IPs when USE_IPV6 is set Signed-off-by: Tyler Lloyd --- pkg/goldpinger/client.go | 8 ++++- pkg/goldpinger/config.go | 1 + pkg/goldpinger/k8s.go | 70 +++++++++++++++++++++++++++++++++++++--- 3 files changed, 73 insertions(+), 6 deletions(-) diff --git a/pkg/goldpinger/client.go b/pkg/goldpinger/client.go index 14905d2..860d66e 100644 --- a/pkg/goldpinger/client.go +++ b/pkg/goldpinger/client.go @@ -29,6 +29,7 @@ import ( httptransport "github.com/go-openapi/runtime/client" "github.com/go-openapi/strfmt" "go.uber.org/zap" + k8snet "k8s.io/utils/net" ) // CheckNeighbours queries the kubernetes API server for all other goldpinger pods @@ -273,7 +274,12 @@ func getClient(hostIP string) (*apiclient.Goldpinger, error) { if hostIP == "" { return nil, errors.New("Host or pod IP empty, can't make a call") } - host := fmt.Sprintf("%s:%d", hostIP, GoldpingerConfig.Port) + var host string + if k8snet.IsIPv6String(hostIP) { + host = fmt.Sprintf("[%s]:%d", hostIP, GoldpingerConfig.Port) + } else { + host = fmt.Sprintf("%s:%d", hostIP, GoldpingerConfig.Port) + } transport := httptransport.New(host, "", nil) client := apiclient.New(transport, strfmt.Default) apiclient.Default.SetTransport(transport) diff --git a/pkg/goldpinger/config.go b/pkg/goldpinger/config.go index e7da05c..7d9e8da 100644 --- a/pkg/goldpinger/config.go +++ b/pkg/goldpinger/config.go @@ -30,6 +30,7 @@ var GoldpingerConfig = struct { PingNumber uint `long:"ping-number" description:"Number of peers to ping. A value of 0 indicates all peers should be pinged." default:"0" env:"PING_NUMBER"` Port int `long:"client-port-override" description:"(for testing) use this port when calling other instances" env:"CLIENT_PORT_OVERRIDE"` UseHostIP bool `long:"use-host-ip" description:"When making the calls, use host ip (defaults to pod ip)" env:"USE_HOST_IP"` + UseIPv6 bool `long:"use-ipv6" description:"Will find the IPv6 address on a pod to use for pinging." env:"USE_IPV6"` LabelSelector string `long:"label-selector" description:"label selector to use to discover goldpinger pods in the cluster" env:"LABEL_SELECTOR" default:"app=goldpinger"` Namespace *string `long:"namespace" description:"namespace to use to discover goldpinger pods in the cluster (empty for all). Defaults to discovering the namespace for the current pod" env:"NAMESPACE"` KubernetesClient *kubernetes.Clientset diff --git a/pkg/goldpinger/k8s.go b/pkg/goldpinger/k8s.go index 05b6be4..18594be 100644 --- a/pkg/goldpinger/k8s.go +++ b/pkg/goldpinger/k8s.go @@ -15,10 +15,12 @@ package goldpinger import ( - "io/ioutil" - + "context" "go.uber.org/zap" + "io/ioutil" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + k8snet "k8s.io/utils/net" ) // PodNamespace is the auto-detected namespace for this goldpinger pod @@ -41,10 +43,68 @@ func getPodNamespace() string { return namespace } +func getAllNodes() *v1.NodeList { + timer := GetLabeledKubernetesCallsTimer() + nodes, err := GoldpingerConfig.KubernetesClient.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{}) + if err != nil { + zap.L().Error("Error getting nodes", zap.Error(err)) + CountError("kubernetes_api") + } else { + timer.ObserveDuration() + } + return nodes +} + +// getHostIP gets the IP of the host where the pod is scheduled. If UseIPv6 is enabled then we need to check +// the node IPs since HostIP will only list the default IP version one. +func getHostIP(p v1.Pod) string { + if !GoldpingerConfig.UseIPv6 || k8snet.IsIPv6String(p.Status.HostIP) { + return p.Status.HostIP + } + + nodes := getAllNodes() + + for _, node := range nodes.Items { + var v6Addr string + var isNodeForPod bool + for _, addr := range node.Status.Addresses { + if addr.Address == p.Status.HostIP { + isNodeForPod = true + } + + if k8snet.IsIPv6String(addr.Address) { + v6Addr = addr.Address + } + } + + if isNodeForPod && len(v6Addr) > 0 { + return v6Addr + } + } + return p.Status.HostIP +} + +// getPodIP will get an IPv6 IP from PodIPs if the UseIPv6 config is set, otherwise just return the object PodIP +func getPodIP(p v1.Pod) string { + if !GoldpingerConfig.UseIPv6 { + return p.Status.PodIP + } + + var v6IP string + if p.Status.PodIPs != nil { + for _, ip := range p.Status.PodIPs { + if k8snet.IsIPv6String(ip.IP) { + v6IP = ip.IP + } + } + } + return v6IP +} + // GetAllPods returns a mapping from a pod name to a pointer to a GoldpingerPod(s) func GetAllPods() map[string]*GoldpingerPod { timer := GetLabeledKubernetesCallsTimer() - pods, err := GoldpingerConfig.KubernetesClient.CoreV1().Pods(*GoldpingerConfig.Namespace).List(metav1.ListOptions{LabelSelector: GoldpingerConfig.LabelSelector}) + pods, err := GoldpingerConfig.KubernetesClient.CoreV1().Pods(*GoldpingerConfig.Namespace).List(context.TODO(), metav1.ListOptions{LabelSelector: GoldpingerConfig.LabelSelector}) if err != nil { zap.L().Error("Error getting pods for selector", zap.String("selector", GoldpingerConfig.LabelSelector), zap.Error(err)) CountError("kubernetes_api") @@ -56,8 +116,8 @@ func GetAllPods() map[string]*GoldpingerPod { for _, pod := range pods.Items { podMap[pod.Name] = &GoldpingerPod{ Name: pod.Name, - PodIP: pod.Status.PodIP, - HostIP: pod.Status.HostIP, + PodIP: getPodIP(pod), + HostIP: getHostIP(pod), } } return podMap From 5b080c708726dd1a363cee653f35efa5b53332af Mon Sep 17 00:00:00 2001 From: Tyler Lloyd Date: Wed, 3 Nov 2021 13:35:38 -0400 Subject: [PATCH 3/9] update readme for IPv6 example Signed-off-by: Tyler Lloyd --- README.md | 6 ++++++ extras/screenshot-ipv6.png | Bin 0 -> 96482 bytes 2 files changed, 6 insertions(+) create mode 100644 extras/screenshot-ipv6.png diff --git a/README.md b/README.md index 25970c1..3276699 100644 --- a/README.md +++ b/README.md @@ -231,6 +231,12 @@ subjects: You can also see [an example of using `kubeconfig` in the `./extras`](./extras/example-with-kubeconfig.yaml). +### Using with IPv4/IPv6 dual-stack + +If your pods having IPv4 and IPv6 addresses assigned and you want to test communication over IPv6, you can specify the `USE_IPV6` environment variable which will use the IPv6 address on the pod and host. + +![ipv6](./extras/screenshot-ipv6.png) + ### Note on DNS Note, that on top of resolving the other pods, all instances can also try to resolve arbitrary DNS. This allows you to test your DNS setup. diff --git a/extras/screenshot-ipv6.png b/extras/screenshot-ipv6.png new file mode 100644 index 0000000000000000000000000000000000000000..11df2d0b6118e8a1c050ffb08df305519b730bb6 GIT binary patch literal 96482 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®ZE?rd-k~g!_XmY5f-0OtMEpBwVcUi(t|; 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 Date: Wed, 3 Nov 2021 13:57:56 -0400 Subject: [PATCH 4/9] reverting to go 1.14 Signed-off-by: Tyler Lloyd --- Dockerfile | 2 +- go.mod | 14 ++-- go.sum | 185 ++++++++++++++++------------------------------------- 3 files changed, 67 insertions(+), 134 deletions(-) diff --git a/Dockerfile b/Dockerfile index f5cc365..2a04546 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.16-alpine as builder +FROM golang:1.14-alpine as builder # Install our build tools diff --git a/go.mod b/go.mod index 8896a54..5976af3 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/bloomberg/goldpinger/v3 -go 1.16 +go 1.14 require ( github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 // indirect @@ -19,10 +19,16 @@ require ( github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d // indirect github.com/stuartnelson3/go-rendezvous v0.2.0 go.uber.org/zap v1.14.1 + golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 // indirect golang.org/x/image v0.0.0-20190802002840-cff245a6509b + golang.org/x/lint v0.0.0-20200302205851-738671d3881b // indirect golang.org/x/net v0.0.0-20210520170846-37e1c6afe023 - k8s.io/api v0.22.3 - k8s.io/apimachinery v0.22.3 - k8s.io/client-go v0.22.3 + golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d // indirect + golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d // indirect + golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect + honnef.co/go/tools v0.0.1-2020.1.3 // indirect + k8s.io/api v0.19.14 + k8s.io/apimachinery v0.19.14 + k8s.io/client-go v0.19.14 k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a ) diff --git a/go.sum b/go.sum index f69b7d8..43e9f8b 100644 --- a/go.sum +++ b/go.sum @@ -5,38 +5,34 @@ cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6A cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= -github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= -github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest v0.9.6/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= @@ -59,27 +55,26 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-logr/logr v0.4.0 h1:K7/B1jt6fIBQVd4Owv2MqGQClcgf0R266+7C/QjRcLc= -github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v0.2.0 h1:QvGt2nLcHH0WK9orKa+ppBPAxREcH364nPUedEpK0TY= +github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= @@ -96,11 +91,13 @@ github.com/go-openapi/errors v0.19.6/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpX github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/errors v0.20.0 h1:Sxpo9PjEHDzhs3FbnGNonvDgWcMW2U7wGTcDDSFSceM= github.com/go-openapi/errors v0.20.0/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= +github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= github.com/go-openapi/jsonpointer v0.19.3 h1:gihV7YNZK1iK6Tgwwsxo2rJbD1GTbdm72325Bq8FI3w= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= @@ -119,6 +116,7 @@ github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29g github.com/go-openapi/runtime v0.19.15/go.mod h1:dhGWCTKRXlAfGnQG0ONViOZpjfg0m2gUt9nTQPQZuoo= github.com/go-openapi/runtime v0.19.26 h1:K/6PoVNj5WJXUnMk+VEbELeXjtBkCS1UxTDa04tdXE0= github.com/go-openapi/runtime v0.19.26/go.mod h1:BvrQtn6iVb2QmiVXRsFAm6ZCAZBpbVKFfN6QWCp582M= +github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= @@ -135,6 +133,7 @@ github.com/go-openapi/strfmt v0.19.4/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk github.com/go-openapi/strfmt v0.19.5/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= github.com/go-openapi/strfmt v0.20.0 h1:l2omNtmNbMc39IGptl9BuXBEKcZfS8zjrTsPKTiJiDM= github.com/go-openapi/strfmt v0.20.0/go.mod h1:UukAYgTaQfqJuAFlNxxMWNvMYiwiXtLsF2VwmoFtbtc= +github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= @@ -179,39 +178,30 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -219,19 +209,14 @@ github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXi github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= -github.com/googleapis/gnostic v0.5.5 h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw= -github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/googleapis/gnostic v0.4.1 h1:DLJCy1n/vrD4HPjOvYcT8aYQXpPIzoRZONaYwyycI+I= +github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= @@ -246,8 +231,8 @@ github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHW github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= @@ -265,6 +250,7 @@ github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -279,7 +265,6 @@ github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.3.3 h1:SzB1nHZ2Xi+17FP0zVQBHIZqvwRN9408fJO8h+eeNA8= github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -291,14 +276,11 @@ github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8m github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= @@ -333,17 +315,14 @@ github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzu github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= 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.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stuartnelson3/go-rendezvous v0.2.0 h1:H5IexrsptBzCMQEjTRrNH20MVXGqpFf1JUCPglaxd6I= github.com/stuartnelson3/go-rendezvous v0.2.0/go.mod h1:njfgP6zISyRnZ3iQN13NSEILfSNLN4ysxBoGxHs5PJ0= github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= @@ -361,7 +340,6 @@ go.mongodb.org/mongo-driver v1.4.3/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4S go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/multierr v1.5.0 h1:KCa4XfM8CWFCpxXRGok+Q0SS/0XBhMDbHHGABQLvD2A= @@ -380,19 +358,15 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 h1:/ZScEX8SfEmUGRHs0gxpqteO5nfNW6axyZbBdw9A12g= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -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 h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -404,7 +378,6 @@ golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= @@ -412,7 +385,6 @@ golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCc golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= 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= @@ -430,18 +402,14 @@ golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210520170846-37e1c6afe023 h1:ADo5wSpq2gqaCGQWzk7S5vd//0iyyLeAratkEoG5dLE= golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -474,32 +442,20 @@ golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da h1:b3NXsE2LusjYGGjL5bxEVZZORm/YEFFrWFjR8eFrw/c= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22 h1:RqytpXGR1iVNX7psjB3ff8y7sNFinVFvkx1c8SjBkio= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -512,6 +468,7 @@ golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac h1:7zkz7BUtwNFFqcowJ+RIgu2MaV/MapERkDIy+mwPyjs= golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 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-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -535,21 +492,11 @@ golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a h1:CB3a9Nez8M13wwlr/E2YtwoU+qYHKfC+JrDa45RXXoQ= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -562,12 +509,7 @@ google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEt google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -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/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -582,25 +524,14 @@ google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/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.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= 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= @@ -609,10 +540,8 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0 h1:UhZDfRO8JRQru4/+LlLE0BRKGF8L+PICnvYZmx/fEGA= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -627,14 +556,12 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 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.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/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/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= @@ -642,24 +569,24 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3 h1:sXmLre5bzIR6ypkjXCDI3jHPssRhc8KD/Ome589sc3U= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.22.3 h1:wOoES2GoSkUsdped2RB4zYypPqWtvprGoKCENTOOjP4= -k8s.io/api v0.22.3/go.mod h1:azgiXFiXqiWyLCfI62/eYBOu19rj2LKmIhFPP4+33fs= -k8s.io/apimachinery v0.22.3 h1:mrvBG5CZnEfwgpVqWcrRKvdsYECTrhAR6cApAgdsflk= -k8s.io/apimachinery v0.22.3/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= -k8s.io/client-go v0.22.3 h1:6onkOSc+YNdwq5zXE0wFXicq64rrym+mXwHu/CPVGO4= -k8s.io/client-go v0.22.3/go.mod h1:ElDjYf8gvZsKDYexmsmnMQ0DYO8W9RwBjfQ1PI53yow= +k8s.io/api v0.19.14 h1:P1TzVeuLsnKbp+LTtIa5IyEtSnU0yj4LqiKKRp1NU9Y= +k8s.io/api v0.19.14/go.mod h1:5IAteKHunZAtX2SeMM705TybJtUDVhUKJj2atAuT4rQ= +k8s.io/apimachinery v0.19.14 h1:AxDxCm6P0xR45VfPjO2BVDGfjRWZ4GMdcib8aoG2rxI= +k8s.io/apimachinery v0.19.14/go.mod h1:RMyblyny2ZcDQ/oVE+lC31u7XTHUaSXEK2IhgtwGxfc= +k8s.io/client-go v0.19.14 h1:D3V4mC6lQN3ZaABhOznxZXSsxMR5cdChjeMP4/pY4H8= +k8s.io/client-go v0.19.14/go.mod h1:iWwXK/etTTPyssCycvgdQ9d6i0k93HXLtksUQ6A67WE= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= -k8s.io/klog/v2 v2.9.0 h1:D7HV+n1V57XeZ0m6tdRkfknthUaM06VFbWldOFh8kzM= -k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= -k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= +k8s.io/klog/v2 v2.2.0 h1:XRvcwJozkgZ1UQJmfMGpvRthQHOvihEhYtDfAaxMz/A= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= +k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a h1:8dYfu/Fc9Gz2rNJKB9IQRGgQOh2clmRzNIPPY1xLY5g= k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.1.2 h1:Hr/htKFmJEbtMgS/UD0N+gtgctAqz81t3nu+sPzynno= sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= From 03dd6706b8a0bd80335599d01dd5a23d80e79dc2 Mon Sep 17 00:00:00 2001 From: Tyler Lloyd Date: Wed, 3 Nov 2021 16:55:09 -0400 Subject: [PATCH 5/9] add node IP cache and change to get node Signed-off-by: Tyler Lloyd --- pkg/goldpinger/k8s.go | 48 ++++++++++++++++++------------------------- 1 file changed, 20 insertions(+), 28 deletions(-) diff --git a/pkg/goldpinger/k8s.go b/pkg/goldpinger/k8s.go index 18594be..8063bc0 100644 --- a/pkg/goldpinger/k8s.go +++ b/pkg/goldpinger/k8s.go @@ -23,6 +23,8 @@ import ( k8snet "k8s.io/utils/net" ) +var nodeIPMap = make(map[string]string) + // PodNamespace is the auto-detected namespace for this goldpinger pod var PodNamespace = getPodNamespace() @@ -43,18 +45,6 @@ func getPodNamespace() string { return namespace } -func getAllNodes() *v1.NodeList { - timer := GetLabeledKubernetesCallsTimer() - nodes, err := GoldpingerConfig.KubernetesClient.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{}) - if err != nil { - zap.L().Error("Error getting nodes", zap.Error(err)) - CountError("kubernetes_api") - } else { - timer.ObserveDuration() - } - return nodes -} - // getHostIP gets the IP of the host where the pod is scheduled. If UseIPv6 is enabled then we need to check // the node IPs since HostIP will only list the default IP version one. func getHostIP(p v1.Pod) string { @@ -62,26 +52,28 @@ func getHostIP(p v1.Pod) string { return p.Status.HostIP } - nodes := getAllNodes() + if addr, ok := nodeIPMap[p.Spec.NodeName]; ok { + return addr + } - for _, node := range nodes.Items { - var v6Addr string - var isNodeForPod bool - for _, addr := range node.Status.Addresses { - if addr.Address == p.Status.HostIP { - isNodeForPod = true - } + timer := GetLabeledKubernetesCallsTimer() + node, err := GoldpingerConfig.KubernetesClient.CoreV1().Nodes().Get(context.TODO(), p.Spec.NodeName, metav1.GetOptions{}) + if err != nil { + zap.L().Error("error getting node", zap.Error(err)) + CountError("kubernetes_api") + return p.Status.HostIP + } else { + timer.ObserveDuration() + } - if k8snet.IsIPv6String(addr.Address) { - v6Addr = addr.Address - } - } - - if isNodeForPod && len(v6Addr) > 0 { - return v6Addr + result := p.Status.HostIP + for _, addr := range node.Status.Addresses { + if k8snet.IsIPv6String(addr.Address) { + result = addr.Address } } - return p.Status.HostIP + nodeIPMap[p.Spec.NodeName] = result + return result } // getPodIP will get an IPv6 IP from PodIPs if the UseIPv6 config is set, otherwise just return the object PodIP From b88d0f3ec5d7e703f45b07ab4f008ecdc8c7a890 Mon Sep 17 00:00:00 2001 From: Tyler Lloyd Date: Wed, 3 Nov 2021 16:55:35 -0400 Subject: [PATCH 6/9] don't use Sprintf for creating host address Signed-off-by: Tyler Lloyd --- pkg/goldpinger/client.go | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/pkg/goldpinger/client.go b/pkg/goldpinger/client.go index 860d66e..b985f81 100644 --- a/pkg/goldpinger/client.go +++ b/pkg/goldpinger/client.go @@ -17,9 +17,9 @@ package goldpinger import ( "context" "errors" - "fmt" "net" "sort" + "strconv" "sync" "time" @@ -29,7 +29,6 @@ import ( httptransport "github.com/go-openapi/runtime/client" "github.com/go-openapi/strfmt" "go.uber.org/zap" - k8snet "k8s.io/utils/net" ) // CheckNeighbours queries the kubernetes API server for all other goldpinger pods @@ -274,12 +273,7 @@ func getClient(hostIP string) (*apiclient.Goldpinger, error) { if hostIP == "" { return nil, errors.New("Host or pod IP empty, can't make a call") } - var host string - if k8snet.IsIPv6String(hostIP) { - host = fmt.Sprintf("[%s]:%d", hostIP, GoldpingerConfig.Port) - } else { - host = fmt.Sprintf("%s:%d", hostIP, GoldpingerConfig.Port) - } + host := net.JoinHostPort(hostIP, strconv.Itoa(GoldpingerConfig.Port)) transport := httptransport.New(host, "", nil) client := apiclient.New(transport, strfmt.Default) apiclient.Default.SetTransport(transport) From cfd26c8d26dd8e72cbaa237c075220af6ad4c3a3 Mon Sep 17 00:00:00 2001 From: Tyler Lloyd Date: Fri, 5 Nov 2021 10:40:37 -0400 Subject: [PATCH 7/9] changing to IP_VERSIONS Signed-off-by: Tyler Lloyd --- cmd/goldpinger/main.go | 11 +++++++++++ pkg/goldpinger/config.go | 3 ++- pkg/goldpinger/k8s.go | 42 +++++++++++++++++++++++++++++----------- 3 files changed, 44 insertions(+), 12 deletions(-) diff --git a/cmd/goldpinger/main.go b/cmd/goldpinger/main.go index f411bde..33ec0b7 100644 --- a/cmd/goldpinger/main.go +++ b/cmd/goldpinger/main.go @@ -15,6 +15,7 @@ package main import ( + "k8s.io/utils/net" "os" "strconv" @@ -132,6 +133,16 @@ func main() { if goldpinger.GoldpingerConfig.PingNumber == 0 { logger.Info("--ping-number set to 0: pinging all pods") } + if goldpinger.GoldpingerConfig.IPVersions == nil || len(goldpinger.GoldpingerConfig.IPVersions) == 0 { + logger.Info("IPVersions not set: settings to 4 (IPv4)") + goldpinger.GoldpingerConfig.IPVersions = []string{"4"} + } + if len(goldpinger.GoldpingerConfig.IPVersions) > 1 { + logger.Warn("Multiple IP versions not supported. Will use first version specified as default", zap.Strings("IPVersions", goldpinger.GoldpingerConfig.IPVersions)) + } + if goldpinger.GoldpingerConfig.IPVersions[0] != string(net.IPv4) && goldpinger.GoldpingerConfig.IPVersions[0] != net.IPv6 { + logger.Error("Unknown IP version specified: expected values are 4 or 6", zap.Strings("IPVersions", goldpinger.GoldpingerConfig.IPVersions)) + } server.ConfigureAPI() goldpinger.StartUpdater() diff --git a/pkg/goldpinger/config.go b/pkg/goldpinger/config.go index 7d9e8da..dba0dfb 100644 --- a/pkg/goldpinger/config.go +++ b/pkg/goldpinger/config.go @@ -30,13 +30,14 @@ var GoldpingerConfig = struct { PingNumber uint `long:"ping-number" description:"Number of peers to ping. A value of 0 indicates all peers should be pinged." default:"0" env:"PING_NUMBER"` Port int `long:"client-port-override" description:"(for testing) use this port when calling other instances" env:"CLIENT_PORT_OVERRIDE"` UseHostIP bool `long:"use-host-ip" description:"When making the calls, use host ip (defaults to pod ip)" env:"USE_HOST_IP"` - UseIPv6 bool `long:"use-ipv6" description:"Will find the IPv6 address on a pod to use for pinging." env:"USE_IPV6"` LabelSelector string `long:"label-selector" description:"label selector to use to discover goldpinger pods in the cluster" env:"LABEL_SELECTOR" default:"app=goldpinger"` Namespace *string `long:"namespace" description:"namespace to use to discover goldpinger pods in the cluster (empty for all). Defaults to discovering the namespace for the current pod" env:"NAMESPACE"` KubernetesClient *kubernetes.Clientset DnsHosts []string `long:"host-to-resolve" description:"A host to attempt dns resolve on (space delimited)" env:"HOSTS_TO_RESOLVE" env-delim:" "` + IPVersions []string `long:"ip-versions" description:"The IP versions to use (space delimited). Possible values are 4 and 6 (defaults to 4)." env:"IP_VERSIONS" env-delim:" "` + // Timeouts PingTimeoutMs int64 `long:"ping-timeout-ms" description:"The timeout in milliseconds for a ping call to other goldpinger pods" env:"PING_TIMEOUT_MS" default:"300"` CheckTimeoutMs int64 `long:"check-timeout-ms" description:"The timeout in milliseconds for a check call to other goldpinger pods" env:"CHECK_TIMEOUT_MS" default:"1000"` diff --git a/pkg/goldpinger/k8s.go b/pkg/goldpinger/k8s.go index 8063bc0..569bfea 100644 --- a/pkg/goldpinger/k8s.go +++ b/pkg/goldpinger/k8s.go @@ -48,7 +48,7 @@ func getPodNamespace() string { // getHostIP gets the IP of the host where the pod is scheduled. If UseIPv6 is enabled then we need to check // the node IPs since HostIP will only list the default IP version one. func getHostIP(p v1.Pod) string { - if !GoldpingerConfig.UseIPv6 || k8snet.IsIPv6String(p.Status.HostIP) { + if ipMatchesConfig(p.Status.HostIP) { return p.Status.HostIP } @@ -66,31 +66,31 @@ func getHostIP(p v1.Pod) string { timer.ObserveDuration() } - result := p.Status.HostIP + var hostIP string for _, addr := range node.Status.Addresses { - if k8snet.IsIPv6String(addr.Address) { - result = addr.Address + if ipMatchesConfig(addr.Address) { + hostIP = addr.Address } } - nodeIPMap[p.Spec.NodeName] = result - return result + nodeIPMap[p.Spec.NodeName] = hostIP + return hostIP } // getPodIP will get an IPv6 IP from PodIPs if the UseIPv6 config is set, otherwise just return the object PodIP func getPodIP(p v1.Pod) string { - if !GoldpingerConfig.UseIPv6 { + if ipMatchesConfig(p.Status.PodIP) { return p.Status.PodIP } - var v6IP string + var podIP string if p.Status.PodIPs != nil { for _, ip := range p.Status.PodIPs { - if k8snet.IsIPv6String(ip.IP) { - v6IP = ip.IP + if ipMatchesConfig(ip.IP) { + podIP = ip.IP } } } - return v6IP + return podIP } // GetAllPods returns a mapping from a pod name to a pointer to a GoldpingerPod(s) @@ -114,3 +114,23 @@ func GetAllPods() map[string]*GoldpingerPod { } return podMap } + +// ipMatchesConfig checks if the input IP family matches the first entry in the IPVersions config. +// TODO update to check all config versions to support dual-stack pinging. +func ipMatchesConfig(ip string) bool { + ipFamily := getIPFamily(ip) + return GoldpingerConfig.IPVersions[0] == ipFamily +} + +// getIPFamily returns the IP family of the input IP. +// Possible values are 4 and 6. +func getIPFamily(ip string) string { + if k8snet.IsIPv4String(ip) { + return string(k8snet.IPv4) + } + if k8snet.IsIPv6String(ip) { + return k8snet.IPv6 + } + zap.L().Error("Error determining IP family", zap.String("IP", ip)) + return "" +} From ae61217ead9194abfd58c441f99593414678321e Mon Sep 17 00:00:00 2001 From: Tyler Lloyd Date: Fri, 5 Nov 2021 10:41:29 -0400 Subject: [PATCH 8/9] cleanup imports Signed-off-by: Tyler Lloyd --- cmd/goldpinger/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/goldpinger/main.go b/cmd/goldpinger/main.go index 33ec0b7..2239834 100644 --- a/cmd/goldpinger/main.go +++ b/cmd/goldpinger/main.go @@ -15,7 +15,6 @@ package main import ( - "k8s.io/utils/net" "os" "strconv" @@ -24,6 +23,7 @@ import ( "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" "k8s.io/client-go/tools/clientcmd" + "k8s.io/utils/net" "github.com/bloomberg/goldpinger/v3/pkg/goldpinger" "github.com/bloomberg/goldpinger/v3/pkg/restapi" From 34b78537c99f8caf1dda1bea67b98478c1915152 Mon Sep 17 00:00:00 2001 From: Tyler Lloyd Date: Mon, 8 Nov 2021 09:38:38 -0500 Subject: [PATCH 9/9] changed return type to IPFamily Signed-off-by: Tyler Lloyd --- pkg/goldpinger/k8s.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/goldpinger/k8s.go b/pkg/goldpinger/k8s.go index 569bfea..540228c 100644 --- a/pkg/goldpinger/k8s.go +++ b/pkg/goldpinger/k8s.go @@ -119,14 +119,14 @@ func GetAllPods() map[string]*GoldpingerPod { // TODO update to check all config versions to support dual-stack pinging. func ipMatchesConfig(ip string) bool { ipFamily := getIPFamily(ip) - return GoldpingerConfig.IPVersions[0] == ipFamily + return GoldpingerConfig.IPVersions[0] == string(ipFamily) } // getIPFamily returns the IP family of the input IP. // Possible values are 4 and 6. -func getIPFamily(ip string) string { +func getIPFamily(ip string) k8snet.IPFamily { if k8snet.IsIPv4String(ip) { - return string(k8snet.IPv4) + return k8snet.IPv4 } if k8snet.IsIPv6String(ip) { return k8snet.IPv6