From ec411038f02ac9a9e88d4de0a49e790143fc7ff0 Mon Sep 17 00:00:00 2001 From: Daniel Metz Date: Mon, 13 Mar 2023 16:47:32 -0400 Subject: [PATCH 01/79] go modules --- .github/workflows/actions.yml | 6 +- Dockerfile | 14 +- Gopkg.lock | 1022 ----------------- Gopkg.toml | 48 - .../lyft/golang_test_targets/dep_install.sh | 178 --- docs/local_dev.md | 12 - go.mod | 107 ++ go.sum | 591 ++++++++++ integ/utils/utils.go | 2 +- pkg/controller/flink/client/api.go | 2 +- tmp/codegen/update-generated.sh | 2 +- tools.go | 7 + 12 files changed, 716 insertions(+), 1275 deletions(-) delete mode 100644 Gopkg.lock delete mode 100644 Gopkg.toml delete mode 100755 boilerplate/lyft/golang_test_targets/dep_install.sh create mode 100644 go.mod create mode 100644 go.sum create mode 100644 tools.go diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index a7f2c654..109ef142 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -21,7 +21,7 @@ jobs: - name: install go uses: actions/setup-go@v2 with: - go-version: 1.12 + go-version: 1.20 - name: install run: make install - name: test @@ -42,7 +42,7 @@ jobs: - name: install go uses: actions/setup-go@v2 with: - go-version: 1.12 + go-version: 1.20 - name: install run: make install - name: test @@ -64,7 +64,7 @@ jobs: # - name: install go # uses: actions/setup-go@v2 # with: - # go-version: 1.12 + # go-version: 1.20 # - name: install # run: integ/install.sh # - name: setup diff --git a/Dockerfile b/Dockerfile index 1801117d..79fc62a7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,28 +1,24 @@ -FROM golang:1.13.4-alpine3.10 as builder +FROM golang:1.20.2-alpine3.17 as builder RUN apk add git openssh-client make curl bash -COPY boilerplate/lyft/golang_test_targets/dep_install.sh /go/src/github.com/lyft/flinkk8soperator/ - # COPY only the dep files for efficient caching -COPY Gopkg.* /go/src/github.com/lyft/flinkk8soperator/ +COPY go.mod go.sum /go/src/github.com/lyft/flinkk8soperator/ WORKDIR /go/src/github.com/lyft/flinkk8soperator # Pull dependencies -RUN : \ - && sh dep_install.sh \ - && dep ensure -vendor-only +RUN go mod download # COPY the rest of the source code COPY . /go/src/github.com/lyft/flinkk8soperator/ # This 'linux_compile' target should compile binaries to the /artifacts directory # The main entrypoint should be compiled to /artifacts/flinkk8soperator -RUN make linux_compile +RUN go mod vendor && make linux_compile # update the PATH to include the /artifacts directory ENV PATH="/artifacts:${PATH}" # This will eventually move to centurylink/ca-certs:latest for minimum possible image size -FROM alpine:3.10 +FROM alpine:3.17 COPY --from=builder /artifacts /bin CMD ["flinkoperator"] diff --git a/Gopkg.lock b/Gopkg.lock deleted file mode 100644 index 5f0d4f08..00000000 --- a/Gopkg.lock +++ /dev/null @@ -1,1022 +0,0 @@ -# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. - - -[[projects]] - branch = "master" - digest = "1:a74730e052a45a3fab1d310fdef2ec17ae3d6af16228421e238320846f2aaec8" - name = "github.com/alecthomas/template" - packages = [ - ".", - "parse", - ] - pruneopts = "" - revision = "a0175ee3bccc567396460bf5acd36800cb10c49c" - -[[projects]] - branch = "master" - digest = "1:8483994d21404c8a1d489f6be756e25bfccd3b45d65821f25695577791a08e68" - name = "github.com/alecthomas/units" - packages = ["."] - pruneopts = "" - revision = "2efee857e7cfd4f3d0138cc3cbb1b4966962b93a" - -[[projects]] - branch = "master" - digest = "1:d700667a9f768e1c6db34b091ec28b709dd8de6a62a61cd9a3ceb39d442154a7" - name = "github.com/benlaurie/objecthash" - packages = ["go/objecthash"] - pruneopts = "" - revision = "d1e3d6079fc16f8f542183fb5b2fdc11d9f00866" - -[[projects]] - digest = "1:0d3deb8a6da8ffba5635d6fb1d2144662200def6c9d82a35a6d05d6c2d4a48f9" - name = "github.com/beorn7/perks" - packages = ["quantile"] - pruneopts = "" - revision = "4b2b341e8d7715fae06375aa633dbb6e91b3fb46" - version = "v1.0.0" - -[[projects]] - digest = "1:0deddd908b6b4b768cfc272c16ee61e7088a60f7fe2f06c547bd3d8e1f8b8e77" - name = "github.com/davecgh/go-spew" - packages = ["spew"] - pruneopts = "" - revision = "8991bc29aa16c548c550c7ff78260e27b9ab7c73" - version = "v1.1.1" - -[[projects]] - digest = "1:46ddeb9dd35d875ac7568c4dc1fc96ce424e034bdbb984239d8ffc151398ec01" - name = "github.com/evanphx/json-patch" - packages = ["."] - pruneopts = "" - revision = "026c730a0dcc5d11f93f1cf1cc65b01247ea7b6f" - version = "v4.5.0" - -[[projects]] - digest = "1:e988ed0ca0d81f4d28772760c02ee95084961311291bdfefc1b04617c178b722" - name = "github.com/fatih/color" - packages = ["."] - pruneopts = "" - revision = "5b77d2a35fb0ede96d138fc9a99f5c9b6aef11b4" - version = "v1.7.0" - -[[projects]] - branch = "master" - digest = "1:135223bf2c128b2158178ee48779ac9983b003634864d46b73e913c95f7a847e" - name = "github.com/fsnotify/fsnotify" - packages = ["."] - pruneopts = "" - revision = "1485a34d5d5723fea214f5710708e19a831720e4" - -[[projects]] - digest = "1:65587005c6fa4293c0b8a2e457e689df7fda48cc5e1f5449ea2c1e7784551558" - name = "github.com/go-logr/logr" - packages = ["."] - pruneopts = "" - revision = "9fb12b3b21c5415d16ac18dc5cd42c1cfdd40c4e" - version = "v0.1.0" - -[[projects]] - digest = "1:218d6d3952eb109dd9001ef0249e2e5f7881e5b06b5700a072f9649dc6df2778" - name = "github.com/go-resty/resty" - packages = ["."] - pruneopts = "" - revision = "fa5875c0caa5c260ab78acec5a244215a730247f" - version = "v1.12.0" - -[[projects]] - digest = "1:fd53b471edb4c28c7d297f617f4da0d33402755f58d6301e7ca1197ef0a90937" - name = "github.com/gogo/protobuf" - packages = [ - "proto", - "sortkeys", - ] - pruneopts = "" - revision = "ba06b47c162d49f2af050fb4c75bcbc86a159d5c" - version = "v1.2.1" - -[[projects]] - branch = "master" - digest = "1:e1822d37be8e11e101357a27170527b1056c99182407f270e080f76409adbd9a" - name = "github.com/golang/groupcache" - packages = ["lru"] - pruneopts = "" - revision = "869f871628b6baa9cfbc11732cdf6546b17c1298" - -[[projects]] - digest = "1:529d738b7976c3848cae5cf3a8036440166835e389c1f617af701eeb12a0518d" - name = "github.com/golang/protobuf" - packages = [ - "proto", - "ptypes", - "ptypes/any", - "ptypes/duration", - "ptypes/timestamp", - ] - pruneopts = "" - revision = "b5d812f8a3706043e23a9cd5babf2e5423744d30" - version = "v1.3.1" - -[[projects]] - digest = "1:8d4a577a9643f713c25a32151c0f26af7228b4b97a219b5ddb7fd38d16f6e673" - name = "github.com/google/gofuzz" - packages = ["."] - pruneopts = "" - revision = "f140a6486e521aad38f5917de355cbf147cc0496" - version = "v1.0.0" - -[[projects]] - digest = "1:ad92aa49f34cbc3546063c7eb2cabb55ee2278b72842eda80e2a20a8a06a8d73" - name = "github.com/google/uuid" - packages = ["."] - pruneopts = "" - revision = "0cd6bf5da1e1c83f8b45653022c74f71af0538a4" - version = "v1.1.1" - -[[projects]] - digest = "1:5facc3828b6a56f9aec988433ea33fb4407a89460952ed75be5347cec07318c0" - name = "github.com/googleapis/gnostic" - packages = [ - "OpenAPIv2", - "compiler", - "extensions", - ] - pruneopts = "" - revision = "e73c7ec21d36ddb0711cb36d1502d18363b5c2c9" - version = "v0.3.0" - -[[projects]] - digest = "1:ebffb4b4c8ddcf66bb549464183ea2ddbac6c58a803658f67249f83395d17455" - name = "github.com/hashicorp/go-version" - packages = ["."] - pruneopts = "" - revision = "59da58cfd357de719a4d16dac30481391a56c002" - version = "v1.2.1" - -[[projects]] - digest = "1:85f8f8d390a03287a563e215ea6bd0610c858042731a8b42062435a0dcbc485f" - name = "github.com/hashicorp/golang-lru" - packages = [ - ".", - "simplelru", - ] - pruneopts = "" - revision = "7087cb70de9f7a8bc0a10c375cb0d2280a8edf9c" - version = "v0.5.1" - -[[projects]] - digest = "1:d14365c51dd1d34d5c79833ec91413bfbb166be978724f15701e17080dc06dec" - name = "github.com/hashicorp/hcl" - packages = [ - ".", - "hcl/ast", - "hcl/parser", - "hcl/printer", - "hcl/scanner", - "hcl/strconv", - "hcl/token", - "json/parser", - "json/scanner", - "json/token", - ] - pruneopts = "" - revision = "8cb6e5b959231cc1119e43259c4a608f9c51a241" - version = "v1.0.0" - -[[projects]] - digest = "1:31bfd110d31505e9ffbc9478e31773bf05bf02adcaeb9b139af42684f9294c13" - name = "github.com/imdario/mergo" - packages = ["."] - pruneopts = "" - revision = "7c29201646fa3de8506f701213473dd407f19646" - version = "v0.3.7" - -[[projects]] - digest = "1:870d441fe217b8e689d7949fef6e43efbc787e50f200cb1e70dbca9204a1d6be" - name = "github.com/inconshreveable/mousetrap" - packages = ["."] - pruneopts = "" - revision = "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75" - version = "v1.0" - -[[projects]] - digest = "1:9fd40d80bd0ef0cbe9fc46330c798a4185a1b309ab049455651afc50396ec924" - name = "github.com/jarcoal/httpmock" - packages = ["."] - pruneopts = "" - revision = "ac2099de8d3789d30b99b740d1a9d242097462df" - version = "v1.0.4" - -[[projects]] - digest = "1:12d3de2c11e54ea37d7f00daf85088ad5e61ec4e8a1f828d6c8b657976856be7" - name = "github.com/json-iterator/go" - packages = ["."] - pruneopts = "" - revision = "0ff49de124c6f76f8494e194af75bde0f1a49a29" - version = "v1.1.6" - -[[projects]] - digest = "1:0f51cee70b0d254dbc93c22666ea2abf211af81c1701a96d04e2284b408621db" - name = "github.com/konsorten/go-windows-terminal-sequences" - packages = ["."] - pruneopts = "" - revision = "f55edac94c9bbba5d6182a4be46d86a2c9b5b50e" - version = "v1.0.2" - -[[projects]] - digest = "1:3108ec0946181c60040ff51b811908f89d03e521e2b4ade5ef5c65b3c0e911ae" - name = "github.com/kr/pretty" - packages = ["."] - pruneopts = "" - revision = "73f6ac0b30a98e433b289500d779f50c1a6f0712" - version = "v0.1.0" - -[[projects]] - digest = "1:11b056b4421396ab14e384ab8ab8c2079b03f1e51aa5eb4d9b81f9e0d1aa8fbf" - name = "github.com/kr/text" - packages = ["."] - pruneopts = "" - revision = "e2ffdb16a802fe2bb95e2e35ff34f0e53aeef34f" - version = "v0.1.0" - -[[projects]] - digest = "1:77629c3c036454b4623e99e20f5591b9551dd81d92db616384af92435b52e9b6" - name = "github.com/kubernetes-sigs/controller-runtime" - packages = ["pkg/runtime/signals"] - pruneopts = "" - revision = "f1eaba5087d69cebb154c6a48193e6667f5b512c" - version = "v0.1.12" - -[[projects]] - digest = "1:7cca6306a07b396095f0d0450060041733caa223e2a7066dc1e651575dd0f0f2" - name = "github.com/lyft/flytestdlib" - packages = [ - "atomic", - "config", - "config/files", - "config/viper", - "contextutils", - "logger", - "profutils", - "promutils", - "promutils/labeled", - "version", - ] - pruneopts = "" - revision = "2577ff228d559b8fdf687f6cfad196bfbf1bd50a" - version = "v0.2.10" - -[[projects]] - digest = "1:ae39921edb7f801f7ce1b6b5484f9715a1dd2b52cb645daef095cd10fd6ee774" - name = "github.com/magiconair/properties" - packages = ["."] - pruneopts = "" - revision = "de8848e004dd33dc07a2947b3d76f618a7fc7ef1" - version = "v1.8.1" - -[[projects]] - digest = "1:9ea83adf8e96d6304f394d40436f2eb44c1dc3250d223b74088cc253a6cd0a1c" - name = "github.com/mattn/go-colorable" - packages = ["."] - pruneopts = "" - revision = "167de6bfdfba052fa6b2d3664c8f5272e23c9072" - version = "v0.0.9" - -[[projects]] - digest = "1:dbfae9da5a674236b914e486086671145b37b5e3880a38da906665aede3c9eab" - name = "github.com/mattn/go-isatty" - packages = ["."] - pruneopts = "" - revision = "1311e847b0cb909da63b5fecfb5370aa66236465" - version = "v0.0.8" - -[[projects]] - digest = "1:63722a4b1e1717be7b98fc686e0b30d5e7f734b9e93d7dee86293b6deab7ea28" - name = "github.com/matttproud/golang_protobuf_extensions" - packages = ["pbutil"] - pruneopts = "" - revision = "c12348ce28de40eed0136aa2b644d0ee0650e56c" - version = "v1.0.1" - -[[projects]] - digest = "1:bcc46a0fbd9e933087bef394871256b5c60269575bb661935874729c65bbbf60" - name = "github.com/mitchellh/mapstructure" - packages = ["."] - pruneopts = "" - revision = "3536a929edddb9a5b34bd6861dc4a9647cb459fe" - version = "v1.1.2" - -[[projects]] - digest = "1:0c0ff2a89c1bb0d01887e1dac043ad7efbf3ec77482ef058ac423d13497e16fd" - name = "github.com/modern-go/concurrent" - packages = ["."] - pruneopts = "" - revision = "bacd9c7ef1dd9b15be4a9909b8ac7a4e313eec94" - version = "1.0.3" - -[[projects]] - digest = "1:e32bdbdb7c377a07a9a46378290059822efdce5c8d96fe71940d87cb4f918855" - name = "github.com/modern-go/reflect2" - packages = ["."] - pruneopts = "" - revision = "4b7aa43c6742a2c18fdef89dd197aaae7dac7ccd" - version = "1.0.1" - -[[projects]] - digest = "1:a5484d4fa43127138ae6e7b2299a6a52ae006c7f803d98d717f60abf3e97192e" - name = "github.com/pborman/uuid" - packages = ["."] - pruneopts = "" - revision = "adf5a7427709b9deb95d29d3fa8a2bf9cfd388f1" - version = "v1.2" - -[[projects]] - digest = "1:3d2c33720d4255686b9f4a7e4d3b94938ee36063f14705c5eb0f73347ed4c496" - name = "github.com/pelletier/go-toml" - packages = ["."] - pruneopts = "" - revision = "728039f679cbcd4f6a54e080d2219a4c4928c546" - version = "v1.4.0" - -[[projects]] - digest = "1:1d7e1867c49a6dd9856598ef7c3123604ea3daabf5b83f303ff457bcbc410b1d" - name = "github.com/pkg/errors" - packages = ["."] - pruneopts = "" - revision = "ba968bfe8b2f7e042a574c888954fccecfa385b4" - version = "v0.8.1" - -[[projects]] - digest = "1:256484dbbcd271f9ecebc6795b2df8cad4c458dd0f5fd82a8c2fa0c29f233411" - name = "github.com/pmezard/go-difflib" - packages = ["difflib"] - pruneopts = "" - revision = "792786c7400a136282c1664665ae0a8db921c6c2" - version = "v1.0.0" - -[[projects]] - digest = "1:c826496cad27bd9a7644a01230a79d472b4093dd33587236e8f8369bb1d8534e" - name = "github.com/prometheus/client_golang" - packages = [ - "prometheus", - "prometheus/internal", - "prometheus/promhttp", - ] - pruneopts = "" - revision = "2641b987480bca71fb39738eb8c8b0d577cb1d76" - version = "v0.9.4" - -[[projects]] - branch = "master" - digest = "1:cd67319ee7536399990c4b00fae07c3413035a53193c644549a676091507cadc" - name = "github.com/prometheus/client_model" - packages = ["go"] - pruneopts = "" - revision = "fd36f4220a901265f90734c3183c5f0c91daa0b8" - -[[projects]] - digest = "1:0f2cee44695a3208fe5d6926076641499c72304e6f015348c9ab2df90a202cdf" - name = "github.com/prometheus/common" - packages = [ - "expfmt", - "internal/bitbucket.org/ww/goautoneg", - "log", - "model", - ] - pruneopts = "" - revision = "31bed53e4047fd6c510e43a941f90cb31be0972a" - version = "v0.6.0" - -[[projects]] - digest = "1:9b33e539d6bf6e4453668a847392d1e9e6345225ea1426f9341212c652bcbee4" - name = "github.com/prometheus/procfs" - packages = [ - ".", - "internal/fs", - ] - pruneopts = "" - revision = "3f98efb27840a48a7a2898ec80be07674d19f9c8" - version = "v0.0.3" - -[[projects]] - digest = "1:1a405cddcf3368445051fb70ab465ae99da56ad7be8d8ca7fc52159d1c2d873c" - name = "github.com/sirupsen/logrus" - packages = ["."] - pruneopts = "" - revision = "839c75faf7f98a33d445d181f3018b5c3409a45e" - version = "v1.4.2" - -[[projects]] - digest = "1:956f655c87b7255c6b1ae6c203ebb0af98cf2a13ef2507e34c9bf1c0332ac0f5" - name = "github.com/spf13/afero" - packages = [ - ".", - "mem", - ] - pruneopts = "" - revision = "588a75ec4f32903aa5e39a2619ba6a4631e28424" - version = "v1.2.2" - -[[projects]] - digest = "1:ae3493c780092be9d576a1f746ab967293ec165e8473425631f06658b6212afc" - name = "github.com/spf13/cast" - packages = ["."] - pruneopts = "" - revision = "8c9545af88b134710ab1cd196795e7f2388358d7" - version = "v1.3.0" - -[[projects]] - digest = "1:0c63b3c7ad6d825a898f28cb854252a3b29d37700c68a117a977263f5ec94efe" - name = "github.com/spf13/cobra" - packages = ["."] - pruneopts = "" - revision = "f2b07da1e2c38d5f12845a4f607e2e1018cbb1f5" - version = "v0.0.5" - -[[projects]] - digest = "1:cc15ae4fbdb02ce31f3392361a70ac041f4f02e0485de8ffac92bd8033e3d26e" - name = "github.com/spf13/jwalterweatherman" - packages = ["."] - pruneopts = "" - revision = "94f6ae3ed3bceceafa716478c5fbf8d29ca601a1" - version = "v1.1.0" - -[[projects]] - digest = "1:cbaf13cdbfef0e4734ed8a7504f57fe893d471d62a35b982bf6fb3f036449a66" - name = "github.com/spf13/pflag" - packages = ["."] - pruneopts = "" - revision = "298182f68c66c05229eb03ac171abe6e309ee79a" - version = "v1.0.3" - -[[projects]] - digest = "1:c25a789c738f7cc8ec7f34026badd4e117853f329334a5aa45cf5d0727d7d442" - name = "github.com/spf13/viper" - packages = ["."] - pruneopts = "" - revision = "ae103d7e593e371c69e832d5eb3347e2b80cbbc9" - -[[projects]] - digest = "1:381bcbeb112a51493d9d998bbba207a529c73dbb49b3fd789e48c63fac1f192c" - name = "github.com/stretchr/testify" - packages = ["assert"] - pruneopts = "" - revision = "ffdc059bfe9ce6a4e144ba849dbedead332c6053" - version = "v1.3.0" - -[[projects]] - branch = "master" - digest = "1:086760278d762dbb0e9a26e09b57f04c89178c86467d8d94fae47d64c222f328" - name = "golang.org/x/crypto" - packages = ["ssh/terminal"] - pruneopts = "" - revision = "4def268fd1a49955bfb3dda92fe3db4f924f2285" - -[[projects]] - branch = "master" - digest = "1:31cd6e3c114e17c5f0c9e8b0bcaa3025ab3c221ce36323c7ce1acaa753d0d0aa" - name = "golang.org/x/net" - packages = [ - "context", - "context/ctxhttp", - "http/httpguts", - "http2", - "http2/hpack", - "idna", - "publicsuffix", - ] - pruneopts = "" - revision = "da137c7871d730100384dbcf36e6f8fa493aef5b" - -[[projects]] - branch = "master" - digest = "1:01bdbbc604dcd5afb6f66a717f69ad45e9643c72d5bc11678d44ffa5c50f9e42" - name = "golang.org/x/oauth2" - packages = [ - ".", - "internal", - ] - pruneopts = "" - revision = "0f29369cfe4552d0e4bcddc57cc75f4d7e672a33" - -[[projects]] - branch = "master" - digest = "1:2579a16d8afda9c9a475808c13324f5e572852e8927905ffa15bb14e71baba4f" - name = "golang.org/x/sys" - packages = [ - "unix", - "windows", - "windows/registry", - "windows/svc/eventlog", - ] - pruneopts = "" - revision = "04f50cda93cbb67f2afa353c52f342100e80e625" - -[[projects]] - digest = "1:740b51a55815493a8d0f2b1e0d0ae48fe48953bf7eaf3fcc4198823bf67768c0" - name = "golang.org/x/text" - packages = [ - "collate", - "collate/build", - "internal/colltab", - "internal/gen", - "internal/language", - "internal/language/compact", - "internal/tag", - "internal/triegen", - "internal/ucd", - "language", - "secure/bidirule", - "transform", - "unicode/bidi", - "unicode/cldr", - "unicode/norm", - "unicode/rangetable", - ] - pruneopts = "" - revision = "342b2e1fbaa52c93f31447ad2c6abc048c63e475" - version = "v0.3.2" - -[[projects]] - branch = "master" - digest = "1:9522af4be529c108010f95b05f1022cb872f2b9ff8b101080f554245673466e1" - name = "golang.org/x/time" - packages = ["rate"] - pruneopts = "" - revision = "9d24e82272b4f38b78bc8cff74fa936d31ccd8ef" - -[[projects]] - branch = "master" - digest = "1:edb0f59d35e2a8d6f4ae6588fd96c737ec01412351f8e9a694e6996b7be7d24b" - name = "golang.org/x/tools" - packages = [ - "go/ast/astutil", - "go/gcexportdata", - "go/internal/gcimporter", - "go/internal/packagesdriver", - "go/packages", - "go/types/typeutil", - "imports", - "internal/fastwalk", - "internal/gopathwalk", - "internal/imports", - "internal/module", - "internal/semver", - ] - pruneopts = "" - revision = "44aeb8b7c377f1eed68ac06f687821c6658c65a2" - -[[projects]] - digest = "1:c7cb9c801cc95782f58acfd9a885bf6ec5d395bf50485f1d68ee0e2d7e6b9e6a" - name = "gomodules.xyz/jsonpatch" - packages = ["v2"] - pruneopts = "" - revision = "e8422f09d27ee2c8cfb2c7f8089eb9eeb0764849" - version = "v2.0.0" - -[[projects]] - digest = "1:47f391ee443f578f01168347818cb234ed819521e49e4d2c8dd2fb80d48ee41a" - name = "google.golang.org/appengine" - packages = [ - "internal", - "internal/base", - "internal/datastore", - "internal/log", - "internal/remote_api", - "internal/urlfetch", - "urlfetch", - ] - pruneopts = "" - revision = "b2f4a3cf3c67576a2ee09e1fe62656a5086ce880" - version = "v1.6.1" - -[[projects]] - digest = "1:15d017551627c8bb091bde628215b2861bed128855343fdd570c62d08871f6e1" - name = "gopkg.in/alecthomas/kingpin.v2" - packages = ["."] - pruneopts = "" - revision = "947dcec5ba9c011838740e680966fd7087a71d0d" - version = "v2.2.6" - -[[projects]] - branch = "v1" - digest = "1:1d01f96bc2293b56c3dec797b8f976d7613fb30ce92bfbc994130404f7f7f031" - name = "gopkg.in/check.v1" - packages = ["."] - pruneopts = "" - revision = "788fd78401277ebd861206a03c884797c6ec5541" - -[[projects]] - digest = "1:eb53021a8aa3f599d29c7102e65026242bdedce998a54837dc67f14b6a97c5fd" - name = "gopkg.in/fsnotify.v1" - packages = ["."] - pruneopts = "" - revision = "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9" - source = "https://github.com/fsnotify/fsnotify.git" - version = "v1.4.7" - -[[projects]] - digest = "1:75fb3fcfc73a8c723efde7777b40e8e8ff9babf30d8c56160d01beffea8a95a6" - name = "gopkg.in/inf.v0" - packages = ["."] - pruneopts = "" - revision = "d2d2541c53f18d2a059457998ce2876cc8e67cbf" - version = "v0.9.1" - -[[projects]] - digest = "1:cedccf16b71e86db87a24f8d4c70b0a855872eb967cb906a66b95de56aefbd0d" - name = "gopkg.in/yaml.v2" - packages = ["."] - pruneopts = "" - revision = "51d6538a90f86fe93ac480b35f37b2be17fef232" - version = "v2.2.2" - -[[projects]] - digest = "1:f123907ebd19568a24bc7d1db2dd9129d2fb5daed201c313e896882296ad05ec" - name = "k8s.io/api" - packages = [ - "admission/v1beta1", - "admissionregistration/v1beta1", - "apps/v1", - "apps/v1beta1", - "apps/v1beta2", - "auditregistration/v1alpha1", - "authentication/v1", - "authentication/v1beta1", - "authorization/v1", - "authorization/v1beta1", - "autoscaling/v1", - "autoscaling/v2beta1", - "autoscaling/v2beta2", - "batch/v1", - "batch/v1beta1", - "batch/v2alpha1", - "certificates/v1beta1", - "coordination/v1", - "coordination/v1beta1", - "core/v1", - "events/v1beta1", - "extensions/v1beta1", - "networking/v1", - "networking/v1beta1", - "node/v1alpha1", - "node/v1beta1", - "policy/v1beta1", - "rbac/v1", - "rbac/v1alpha1", - "rbac/v1beta1", - "scheduling/v1", - "scheduling/v1alpha1", - "scheduling/v1beta1", - "settings/v1alpha1", - "storage/v1", - "storage/v1alpha1", - "storage/v1beta1", - ] - pruneopts = "" - revision = "6e4e0e4f393bf5e8bbff570acd13217aa5a770cd" - version = "kubernetes-1.14.1" - -[[projects]] - digest = "1:a108528de06570dafc607e3f4b25197e5add10212b15d800918caff61963a90e" - name = "k8s.io/apiextensions-apiserver" - packages = [ - "pkg/apis/apiextensions", - "pkg/apis/apiextensions/v1beta1", - "pkg/client/clientset/clientset", - "pkg/client/clientset/clientset/scheme", - "pkg/client/clientset/clientset/typed/apiextensions/v1beta1", - ] - pruneopts = "" - revision = "727a075fdec8319bf095330e344b3ccc668abc73" - version = "kubernetes-1.14.1" - -[[projects]] - digest = "1:a802c91b189a31200cfb66744441fe62dac961ec7c5c58c47716570de7da195c" - name = "k8s.io/apimachinery" - packages = [ - "pkg/api/equality", - "pkg/api/errors", - "pkg/api/meta", - "pkg/api/resource", - "pkg/apis/meta/internalversion", - "pkg/apis/meta/v1", - "pkg/apis/meta/v1/unstructured", - "pkg/apis/meta/v1beta1", - "pkg/conversion", - "pkg/conversion/queryparams", - "pkg/fields", - "pkg/labels", - "pkg/runtime", - "pkg/runtime/schema", - "pkg/runtime/serializer", - "pkg/runtime/serializer/json", - "pkg/runtime/serializer/protobuf", - "pkg/runtime/serializer/recognizer", - "pkg/runtime/serializer/streaming", - "pkg/runtime/serializer/versioning", - "pkg/selection", - "pkg/types", - "pkg/util/cache", - "pkg/util/clock", - "pkg/util/diff", - "pkg/util/errors", - "pkg/util/framer", - "pkg/util/intstr", - "pkg/util/json", - "pkg/util/mergepatch", - "pkg/util/naming", - "pkg/util/net", - "pkg/util/rand", - "pkg/util/runtime", - "pkg/util/sets", - "pkg/util/strategicpatch", - "pkg/util/uuid", - "pkg/util/validation", - "pkg/util/validation/field", - "pkg/util/wait", - "pkg/util/yaml", - "pkg/version", - "pkg/watch", - "third_party/forked/golang/json", - "third_party/forked/golang/reflect", - ] - pruneopts = "" - revision = "6a84e37a896db9780c75367af8d2ed2bb944022e" - version = "kubernetes-1.14.1" - -[[projects]] - digest = "1:a31a3473e1c9d225a4341c117866646399d71e2a9f87dcf7dfa22585656cffd8" - name = "k8s.io/client-go" - packages = [ - "discovery", - "discovery/fake", - "dynamic", - "kubernetes", - "kubernetes/scheme", - "kubernetes/typed/admissionregistration/v1beta1", - "kubernetes/typed/apps/v1", - "kubernetes/typed/apps/v1beta1", - "kubernetes/typed/apps/v1beta2", - "kubernetes/typed/auditregistration/v1alpha1", - "kubernetes/typed/authentication/v1", - "kubernetes/typed/authentication/v1beta1", - "kubernetes/typed/authorization/v1", - "kubernetes/typed/authorization/v1beta1", - "kubernetes/typed/autoscaling/v1", - "kubernetes/typed/autoscaling/v2beta1", - "kubernetes/typed/autoscaling/v2beta2", - "kubernetes/typed/batch/v1", - "kubernetes/typed/batch/v1beta1", - "kubernetes/typed/batch/v2alpha1", - "kubernetes/typed/certificates/v1beta1", - "kubernetes/typed/coordination/v1", - "kubernetes/typed/coordination/v1beta1", - "kubernetes/typed/core/v1", - "kubernetes/typed/events/v1beta1", - "kubernetes/typed/extensions/v1beta1", - "kubernetes/typed/networking/v1", - "kubernetes/typed/networking/v1beta1", - "kubernetes/typed/node/v1alpha1", - "kubernetes/typed/node/v1beta1", - "kubernetes/typed/policy/v1beta1", - "kubernetes/typed/rbac/v1", - "kubernetes/typed/rbac/v1alpha1", - "kubernetes/typed/rbac/v1beta1", - "kubernetes/typed/scheduling/v1", - "kubernetes/typed/scheduling/v1alpha1", - "kubernetes/typed/scheduling/v1beta1", - "kubernetes/typed/settings/v1alpha1", - "kubernetes/typed/storage/v1", - "kubernetes/typed/storage/v1alpha1", - "kubernetes/typed/storage/v1beta1", - "pkg/apis/clientauthentication", - "pkg/apis/clientauthentication/v1alpha1", - "pkg/apis/clientauthentication/v1beta1", - "pkg/version", - "plugin/pkg/client/auth/exec", - "rest", - "rest/watch", - "restmapper", - "testing", - "tools/auth", - "tools/cache", - "tools/clientcmd", - "tools/clientcmd/api", - "tools/clientcmd/api/latest", - "tools/clientcmd/api/v1", - "tools/leaderelection", - "tools/leaderelection/resourcelock", - "tools/metrics", - "tools/pager", - "tools/record", - "tools/record/util", - "tools/reference", - "transport", - "util/cert", - "util/connrotation", - "util/flowcontrol", - "util/homedir", - "util/keyutil", - "util/retry", - "util/workqueue", - ] - pruneopts = "" - revision = "1a26190bd76a9017e289958b9fba936430aa3704" - version = "kubernetes-1.14.1" - -[[projects]] - digest = "1:742ce70d2c6de0f02b5331a25d4d549f55de6b214af22044455fd6e6b451cad9" - name = "k8s.io/code-generator" - packages = [ - "cmd/client-gen", - "cmd/client-gen/args", - "cmd/client-gen/generators", - "cmd/client-gen/generators/fake", - "cmd/client-gen/generators/scheme", - "cmd/client-gen/generators/util", - "cmd/client-gen/path", - "cmd/client-gen/types", - "cmd/conversion-gen", - "cmd/conversion-gen/args", - "cmd/conversion-gen/generators", - "cmd/deepcopy-gen", - "cmd/deepcopy-gen/args", - "cmd/defaulter-gen", - "cmd/defaulter-gen/args", - "cmd/informer-gen", - "cmd/informer-gen/args", - "cmd/informer-gen/generators", - "cmd/lister-gen", - "cmd/lister-gen/args", - "cmd/lister-gen/generators", - "pkg/namer", - "pkg/util", - ] - pruneopts = "" - revision = "50b561225d70b3eb79a1faafd3dfe7b1a62cbe73" - version = "kubernetes-1.14.1" - -[[projects]] - branch = "master" - digest = "1:6a2a63e09a59caff3fd2d36d69b7b92c2fe7cf783390f0b7349fb330820f9a8e" - name = "k8s.io/gengo" - packages = [ - "args", - "examples/deepcopy-gen/generators", - "examples/defaulter-gen/generators", - "examples/set-gen/sets", - "generator", - "namer", - "parser", - "types", - ] - pruneopts = "" - revision = "e17681d19d3ac4837a019ece36c2a0ec31ffe985" - -[[projects]] - digest = "1:9eaf86f4f6fb4a8f177220d488ef1e3255d06a691cca95f14ef085d4cd1cef3c" - name = "k8s.io/klog" - packages = ["."] - pruneopts = "" - revision = "d98d8acdac006fb39831f1b25640813fef9c314f" - version = "v0.3.3" - -[[projects]] - branch = "master" - digest = "1:d2aae07aa745223592ae668f6eb6c2ca0242d66a6dcf16b1e8e2711a79aad0f1" - name = "k8s.io/kube-openapi" - packages = ["pkg/util/proto"] - pruneopts = "" - revision = "db7b694dc208eead64d38030265f702db593fcf2" - -[[projects]] - branch = "master" - digest = "1:4c5d39f7ca1c940d7e74dbc62d2221e2c59b3d35c54f1fa9c77f3fd3113bbcb1" - name = "k8s.io/utils" - packages = [ - "buffer", - "integer", - "trace", - ] - pruneopts = "" - revision = "c55fbcfc754a5b2ec2fbae8fb9dcac36bdba6a12" - -[[projects]] - digest = "1:a24c9ac4cb9e3c67edc0a37a1d828e3fbb92a7e9e12bb84f9c0e781aa42f71b0" - name = "sigs.k8s.io/controller-runtime" - packages = [ - "pkg/cache", - "pkg/cache/internal", - "pkg/client", - "pkg/client/apiutil", - "pkg/client/config", - "pkg/controller", - "pkg/event", - "pkg/handler", - "pkg/internal/controller", - "pkg/internal/controller/metrics", - "pkg/internal/log", - "pkg/internal/objectutil", - "pkg/internal/recorder", - "pkg/leaderelection", - "pkg/log", - "pkg/manager", - "pkg/metrics", - "pkg/predicate", - "pkg/reconcile", - "pkg/recorder", - "pkg/runtime/inject", - "pkg/source", - "pkg/source/internal", - "pkg/webhook", - "pkg/webhook/admission", - "pkg/webhook/internal/certwatcher", - "pkg/webhook/internal/metrics", - ] - pruneopts = "" - revision = "fc5542c693e3340f8abbe91c6345bd64c494a60c" - version = "v0.2.2" - -[[projects]] - digest = "1:321081b4a44256715f2b68411d8eda9a17f17ebfe6f0cc61d2cc52d11c08acfa" - name = "sigs.k8s.io/yaml" - packages = ["."] - pruneopts = "" - revision = "fd68e9863619f6ec2fdd8625fe1f02e7c877e480" - version = "v1.1.0" - -[solve-meta] - analyzer-name = "dep" - analyzer-version = 1 - input-imports = [ - "github.com/benlaurie/objecthash/go/objecthash", - "github.com/go-resty/resty", - "github.com/hashicorp/go-version", - "github.com/jarcoal/httpmock", - "github.com/kubernetes-sigs/controller-runtime/pkg/runtime/signals", - "github.com/lyft/flytestdlib/config", - "github.com/lyft/flytestdlib/config/viper", - "github.com/lyft/flytestdlib/contextutils", - "github.com/lyft/flytestdlib/logger", - "github.com/lyft/flytestdlib/profutils", - "github.com/lyft/flytestdlib/promutils", - "github.com/lyft/flytestdlib/promutils/labeled", - "github.com/lyft/flytestdlib/version", - "github.com/mitchellh/mapstructure", - "github.com/pkg/errors", - "github.com/prometheus/common/log", - "github.com/spf13/cobra", - "github.com/spf13/pflag", - "github.com/stretchr/testify/assert", - "gopkg.in/check.v1", - "k8s.io/api/apps/v1", - "k8s.io/api/core/v1", - "k8s.io/api/extensions/v1beta1", - "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1", - "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset", - "k8s.io/apimachinery/pkg/api/equality", - "k8s.io/apimachinery/pkg/api/errors", - "k8s.io/apimachinery/pkg/api/resource", - "k8s.io/apimachinery/pkg/apis/meta/v1", - "k8s.io/apimachinery/pkg/labels", - "k8s.io/apimachinery/pkg/runtime", - "k8s.io/apimachinery/pkg/runtime/schema", - "k8s.io/apimachinery/pkg/runtime/serializer", - "k8s.io/apimachinery/pkg/types", - "k8s.io/apimachinery/pkg/util/clock", - "k8s.io/apimachinery/pkg/util/intstr", - "k8s.io/apimachinery/pkg/util/json", - "k8s.io/apimachinery/pkg/util/runtime", - "k8s.io/apimachinery/pkg/util/yaml", - "k8s.io/apimachinery/pkg/watch", - "k8s.io/client-go/discovery", - "k8s.io/client-go/discovery/fake", - "k8s.io/client-go/kubernetes", - "k8s.io/client-go/rest", - "k8s.io/client-go/testing", - "k8s.io/client-go/tools/clientcmd", - "k8s.io/client-go/tools/record", - "k8s.io/client-go/util/flowcontrol", - "k8s.io/client-go/util/homedir", - "k8s.io/code-generator/cmd/client-gen", - "k8s.io/code-generator/cmd/conversion-gen", - "k8s.io/code-generator/cmd/deepcopy-gen", - "k8s.io/code-generator/cmd/defaulter-gen", - "k8s.io/code-generator/cmd/informer-gen", - "k8s.io/code-generator/cmd/lister-gen", - "k8s.io/gengo/args", - "k8s.io/klog", - "sigs.k8s.io/controller-runtime/pkg/cache", - "sigs.k8s.io/controller-runtime/pkg/client", - "sigs.k8s.io/controller-runtime/pkg/client/config", - "sigs.k8s.io/controller-runtime/pkg/controller", - "sigs.k8s.io/controller-runtime/pkg/event", - "sigs.k8s.io/controller-runtime/pkg/handler", - "sigs.k8s.io/controller-runtime/pkg/manager", - "sigs.k8s.io/controller-runtime/pkg/predicate", - "sigs.k8s.io/controller-runtime/pkg/reconcile", - "sigs.k8s.io/controller-runtime/pkg/source", - ] - solver-name = "gps-cdcl" - solver-version = 1 diff --git a/Gopkg.toml b/Gopkg.toml deleted file mode 100644 index f779f0d9..00000000 --- a/Gopkg.toml +++ /dev/null @@ -1,48 +0,0 @@ -required = [ - "sigs.k8s.io/controller-runtime/pkg/client/config", - "k8s.io/code-generator/cmd/defaulter-gen", - "k8s.io/code-generator/cmd/deepcopy-gen", - "k8s.io/code-generator/cmd/conversion-gen", - "k8s.io/code-generator/cmd/client-gen", - "k8s.io/code-generator/cmd/lister-gen", - "k8s.io/code-generator/cmd/informer-gen", - "k8s.io/gengo/args", - "github.com/benlaurie/objecthash/go/objecthash", - "github.com/hashicorp/go-version", -] - -[[constraint]] - name = "k8s.io/code-generator" - version = "kubernetes-1.14.1" - -[[constraint]] - name = "sigs.k8s.io/controller-runtime" - version = "v0.2.2" - -[[override]] - name = "k8s.io/api" - version = "kubernetes-1.14.1" - -[[override]] - name = "k8s.io/apimachinery" - version = "kubernetes-1.14.1" - -[[override]] - name = "k8s.io/client-go" - version = "kubernetes-1.14.1" - -[[override]] - name = "k8s.io/apiextensions-apiserver" - version = "kubernetes-1.14.1" - -[[override]] - name = "gopkg.in/fsnotify.v1" - source = "https://github.com/fsnotify/fsnotify.git" - -[[constraint]] - name = "github.com/lyft/flytestdlib" - version = "0.2.10" - -[[constraint]] - name = "github.com/hashicorp/go-version" - version = "1.2.1" diff --git a/boilerplate/lyft/golang_test_targets/dep_install.sh b/boilerplate/lyft/golang_test_targets/dep_install.sh deleted file mode 100755 index 9799b054..00000000 --- a/boilerplate/lyft/golang_test_targets/dep_install.sh +++ /dev/null @@ -1,178 +0,0 @@ -#!/bin/sh - -# This install script is intended to download and install the latest available -# release of the dep dependency manager for Golang. -# -# It attempts to identify the current platform and an error will be thrown if -# the platform is not supported. -# -# Environment variables: -# - INSTALL_DIRECTORY (optional): defaults to $GOPATH/bin -# - DEP_RELEASE_TAG (optional): defaults to fetching the latest release -# - DEP_OS (optional): use a specific value for OS (mostly for testing) -# - DEP_ARCH (optional): use a specific value for ARCH (mostly for testing) -# -# You can install using this script: -# $ curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh - -set -e - -RELEASES_URL="https://github.com/golang/dep/releases" - -downloadJSON() { - url="$2" - - echo "Fetching $url.." - if test -x "$(command -v curl)"; then - response=$(curl -s -L -w 'HTTPSTATUS:%{http_code}' -H 'Accept: application/json' "$url") - body=$(echo "$response" | sed -e 's/HTTPSTATUS\:.*//g') - code=$(echo "$response" | tr -d '\n' | sed -e 's/.*HTTPSTATUS://') - elif test -x "$(command -v wget)"; then - temp=$(mktemp) - body=$(wget -q --header='Accept: application/json' -O - --server-response "$url" 2> "$temp") - code=$(awk '/^ HTTP/{print $2}' < "$temp" | tail -1) - rm "$temp" - else - echo "Neither curl nor wget was available to perform http requests." - exit 1 - fi - if [ "$code" != 200 ]; then - echo "Request failed with code $code" - exit 1 - fi - - eval "$1='$body'" -} - -downloadFile() { - url="$1" - destination="$2" - - echo "Fetching $url.." - if test -x "$(command -v curl)"; then - code=$(curl -s -w '%{http_code}' -L "$url" -o "$destination") - elif test -x "$(command -v wget)"; then - code=$(wget -q -O "$destination" --server-response "$url" 2>&1 | awk '/^ HTTP/{print $2}' | tail -1) - else - echo "Neither curl nor wget was available to perform http requests." - exit 1 - fi - - if [ "$code" != 200 ]; then - echo "Request failed with code $code" - exit 1 - fi -} - -findGoBinDirectory() { - EFFECTIVE_GOPATH=$(go env GOPATH) - # CYGWIN: Convert Windows-style path into sh-compatible path - if [ "$OS_CYGWIN" = "1" ]; then - EFFECTIVE_GOPATH=$(cygpath "$EFFECTIVE_GOPATH") - fi - if [ -z "$EFFECTIVE_GOPATH" ]; then - echo "Installation could not determine your \$GOPATH." - exit 1 - fi - if [ -z "$GOBIN" ]; then - GOBIN=$(echo "${EFFECTIVE_GOPATH%%:*}/bin" | sed s#//*#/#g) - fi - if [ ! -d "$GOBIN" ]; then - echo "Installation requires your GOBIN directory $GOBIN to exist. Please create it." - exit 1 - fi - eval "$1='$GOBIN'" -} - -initArch() { - ARCH=$(uname -m) - if [ -n "$DEP_ARCH" ]; then - echo "Using DEP_ARCH" - ARCH="$DEP_ARCH" - fi - case $ARCH in - amd64) ARCH="amd64";; - x86_64) ARCH="amd64";; - i386) ARCH="386";; - ppc64) ARCH="ppc64";; - ppc64le) ARCH="ppc64le";; - s390x) ARCH="s390x";; - armv6*) ARCH="arm";; - armv7*) ARCH="arm";; - aarch64) ARCH="arm64";; - *) echo "Architecture ${ARCH} is not supported by this installation script"; exit 1;; - esac - echo "ARCH = $ARCH" -} - -initOS() { - OS=$(uname | tr '[:upper:]' '[:lower:]') - OS_CYGWIN=0 - if [ -n "$DEP_OS" ]; then - echo "Using DEP_OS" - OS="$DEP_OS" - fi - case "$OS" in - darwin) OS='darwin';; - linux) OS='linux';; - freebsd) OS='freebsd';; - mingw*) OS='windows';; - msys*) OS='windows';; - cygwin*) - OS='windows' - OS_CYGWIN=1 - ;; - *) echo "OS ${OS} is not supported by this installation script"; exit 1;; - esac - echo "OS = $OS" -} - -# identify platform based on uname output -initArch -initOS - -# determine install directory if required -if [ -z "$INSTALL_DIRECTORY" ]; then - findGoBinDirectory INSTALL_DIRECTORY -fi -echo "Will install into $INSTALL_DIRECTORY" - -# assemble expected release artifact name -if [ "${OS}" != "linux" ] && { [ "${ARCH}" = "ppc64" ] || [ "${ARCH}" = "ppc64le" ];}; then - # ppc64 and ppc64le are only supported on Linux. - echo "${OS}-${ARCH} is not supported by this instalation script" -else - BINARY="dep-${OS}-${ARCH}" -fi - -# add .exe if on windows -if [ "$OS" = "windows" ]; then - BINARY="$BINARY.exe" -fi - -# if DEP_RELEASE_TAG was not provided, assume latest -if [ -z "$DEP_RELEASE_TAG" ]; then - downloadJSON LATEST_RELEASE "$RELEASES_URL/latest" - DEP_RELEASE_TAG=$(echo "${LATEST_RELEASE}" | tr -s '\n' ' ' | sed 's/.*"tag_name":"//' | sed 's/".*//' ) -fi -echo "Release Tag = $DEP_RELEASE_TAG" - -# fetch the real release data to make sure it exists before we attempt a download -downloadJSON RELEASE_DATA "$RELEASES_URL/tag/$DEP_RELEASE_TAG" - -BINARY_URL="$RELEASES_URL/download/$DEP_RELEASE_TAG/$BINARY" -DOWNLOAD_FILE=$(mktemp) - -downloadFile "$BINARY_URL" "$DOWNLOAD_FILE" - -echo "Setting executable permissions." -chmod +x "$DOWNLOAD_FILE" - -INSTALL_NAME="dep" - -if [ "$OS" = "windows" ]; then - INSTALL_NAME="$INSTALL_NAME.exe" -fi - -echo "Moving executable to $INSTALL_DIRECTORY/$INSTALL_NAME" -mv "$DOWNLOAD_FILE" "$INSTALL_DIRECTORY/$INSTALL_NAME" diff --git a/docs/local_dev.md b/docs/local_dev.md index 50d1cbbb..b8d13373 100644 --- a/docs/local_dev.md +++ b/docs/local_dev.md @@ -23,19 +23,9 @@ $ kubectl proxy & $ open http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/overview ``` -### Set up your Go environment - -```bash -$ export GOPATH=~/src/go -``` - -(should probably go into your shell's profile) - ### Checkout the code ```bash -$ mkdir -p $GOPATH/src/github.com/lyft -$ cd $GOPATH/src/github.com/lyft $ git clone git@github.com:lyft/flinkk8soperator.git ``` @@ -60,8 +50,6 @@ $ dep ensure $ KUBERNETES_CONFIG="$HOME/.kube/config" go run ./cmd/flinkk8soperator/main.go --config=local_config.yaml ``` -(you may need to accept a firewall prompt and `brew install dep` if you don't have it installed) - #### Option 2: run inside the kubernetes cluster This mode more realistically emulates how the operator will run in diff --git a/go.mod b/go.mod new file mode 100644 index 00000000..6dd8f80e --- /dev/null +++ b/go.mod @@ -0,0 +1,107 @@ +module github.com/lyft/flinkk8soperator + +go 1.20 + +require ( + github.com/benlaurie/objecthash v0.0.0-20180202135721-d1e3d6079fc1 + github.com/hashicorp/go-version v1.2.1 + github.com/jarcoal/httpmock v1.0.4 + github.com/kubernetes-sigs/controller-runtime v0.1.12 + github.com/lyft/flytestdlib v0.2.10 + github.com/mitchellh/mapstructure v1.1.2 + github.com/pkg/errors v0.9.1 + github.com/prometheus/common v0.6.0 + github.com/spf13/cobra v0.0.5 + github.com/spf13/pflag v1.0.5 + github.com/stretchr/testify v1.8.0 + gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f + gopkg.in/resty.v1 v1.12.0 + k8s.io/api v0.17.2 + k8s.io/apiextensions-apiserver v0.16.15 + k8s.io/apimachinery v0.17.2 + k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible + k8s.io/code-generator v0.16.15 + k8s.io/klog v1.0.0 + sigs.k8s.io/controller-runtime v0.4.0 +) + +require ( + github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc // indirect + github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf // indirect + github.com/beorn7/perks v1.0.0 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/emicklei/go-restful/v3 v3.9.0 // indirect + github.com/evanphx/json-patch v4.9.0+incompatible // indirect + github.com/fatih/color v1.7.0 // indirect + github.com/fsnotify/fsnotify v1.4.7 // indirect + github.com/go-logr/logr v0.4.0 // indirect + github.com/go-logr/zapr v0.4.0 // indirect + github.com/go-openapi/jsonpointer v0.19.5 // indirect + github.com/go-openapi/jsonreference v0.20.0 // indirect + github.com/go-openapi/swag v0.19.14 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 // indirect + github.com/golang/protobuf v1.5.2 // indirect + github.com/google/gnostic v0.5.7-v3refs // indirect + github.com/google/go-cmp v0.5.9 // indirect + github.com/google/gofuzz v1.1.0 // indirect + github.com/google/uuid v1.1.2 // indirect + github.com/googleapis/gnostic v0.3.1 // indirect + github.com/hashicorp/golang-lru v0.5.1 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/imdario/mergo v0.3.7 // indirect + github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/magiconair/properties v1.8.1 // indirect + github.com/mailru/easyjson v0.7.6 // indirect + github.com/mattn/go-colorable v0.0.9 // indirect + github.com/mattn/go-isatty v0.0.8 // 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 v1.0.2 // indirect + github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect + github.com/pelletier/go-toml v1.4.0 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/prometheus/client_golang v1.0.0 // indirect + github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 // indirect + github.com/prometheus/procfs v0.0.3 // indirect + github.com/sirupsen/logrus v1.4.2 // indirect + github.com/spf13/afero v1.2.2 // indirect + github.com/spf13/cast v1.3.0 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/viper v1.3.2 // indirect + go.uber.org/zap v1.24.0 // indirect + golang.org/x/crypto v0.1.0 // indirect + golang.org/x/mod v0.6.0 // indirect + golang.org/x/net v0.7.0 // indirect + golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 // indirect + golang.org/x/sys v0.5.0 // indirect + golang.org/x/term v0.5.0 // indirect + golang.org/x/text v0.7.0 // indirect + golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 // indirect + golang.org/x/tools v0.2.0 // indirect + golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect + gomodules.xyz/jsonpatch/v2 v2.0.1 // indirect + gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485 // indirect + google.golang.org/appengine v1.6.1 // indirect + google.golang.org/protobuf v1.28.1 // indirect + gopkg.in/alecthomas/kingpin.v2 v2.2.6 // indirect + gopkg.in/fsnotify.v1 v1.4.7 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + k8s.io/gengo v0.0.0-20220902162205-c0856e24416d // indirect + k8s.io/klog/v2 v2.10.0 // indirect + k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 // indirect + k8s.io/utils v0.0.0-20210802155522-efc7438f0176 // indirect + sigs.k8s.io/yaml v1.3.0 // indirect +) + +replace ( + k8s.io/api => k8s.io/api v0.16.15 + k8s.io/apimachinery => k8s.io/apimachinery v0.16.15 + k8s.io/client-go => k8s.io/client-go v0.16.15 +) diff --git a/go.sum b/go.sum new file mode 100644 index 00000000..726d81fd --- /dev/null +++ b/go.sum @@ -0,0 +1,591 @@ +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= +github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +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/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/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/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/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc h1:cAKDfWh5VpdgMhJosfJnn5/FoN2SRZ4p7fJNX58YPaU= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf h1:qet1QNfXsQxTZqLG4oE62mJzwPIB8+Tee4RNCL9ulrY= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +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/benlaurie/objecthash v0.0.0-20180202135721-d1e3d6079fc1 h1:VRtJdDi2lqc3MFwmouppm2jlm6icF+7H3WYKpLENMTo= +github.com/benlaurie/objecthash v0.0.0-20180202135721-d1e3d6079fc1/go.mod h1:jvdWlw8vowVGnZqSDC7yhPd7AifQeQbRDkZcQXV2nRg= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0 h1:HWo1m869IqiPhD389kmkxeTalrjNbbJTC8LXupb+sl0= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/coreos/bbolt v1.3.1-coreos.6/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.15+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.17+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +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/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-units v0.3.3/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-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful/v3 v3.9.0 h1:XwGDlfxEnQZzuopoqxwSEllNcCOM9DhhFyhFIIGKwxE= +github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +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.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses= +github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +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/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-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +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/zapr v0.1.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= +github.com/go-logr/zapr v0.4.0 h1:uc1uML3hRYL9/ZZPdgHS/n8Nzo+eaYL/Efxkkamf7OM= +github.com/go-logr/zapr v0.4.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= +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= +github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= +github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= +github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= +github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= +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/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= +github.com/go-openapi/jsonpointer v0.19.5/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= +github.com/go-openapi/jsonreference v0.20.0 h1:MYlu0sBgChmCfJxxUKZ8g1cPWFOB37YSZqewK7OKeyA= +github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= +github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= +github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= +github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= +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= +github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= +github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= +github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= +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= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.14 h1:gm3vOOXfiuw5i9p5N9xJvfjvuofpyvLA9Wr6QfK5Fng= +github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= +github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +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-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20180513044358-24b0969c4cb7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 h1:ZgQEtGgCBiWRM39fZuwSd1LwSqqSW0hOdXCYYDX0R3I= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/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/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.0.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +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.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.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/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= +github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= +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.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +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/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +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/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/googleapis/gnostic v0.3.1 h1:WeAefnSUHlBb0iJKwxFDZdbfGwkd7xRNuV+IpXMJhYk= +github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= +github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.3.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/hashicorp/go-version v1.2.1 h1:zEfKbn2+PDgroKdiOzqiE8rsmLqU2uwi5PB5pBJ3TkI= +github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.7 h1:Y+UAYTZ7gDEuOfhxKWy+dvb5dRQ6rJjFSdX2HZY1/gI= +github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/jarcoal/httpmock v1.0.4 h1:jp+dy/+nonJE4g4xbVtl9QdrUNbn6/3hDT5R4nDIZnA= +github.com/jarcoal/httpmock v1.0.4/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//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.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +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/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 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +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/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/kubernetes-sigs/controller-runtime v0.1.12 h1:L4OZm06W5pyXIAFjgVguSV7ScbGeGai6O4LN+tmwGGk= +github.com/kubernetes-sigs/controller-runtime v0.1.12/go.mod h1:qCvk+77+3Obq7iISpAiNAg+0Uqyb8y+FUqFqBtQuhz8= +github.com/lyft/flytestdlib v0.2.10 h1:RdBRgQlf0+kPFb6y0Ox9SfvcAzH+aa5LJLCULF7AryU= +github.com/lyft/flytestdlib v0.2.10/go.mod h1:cN89OAMbgIB4fc71HTLbENOFFqHGc318Reot9B7dPfw= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +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= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA= +github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +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/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +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-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +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/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.4.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.8.0 h1:VkHVNpR4iVnU8XQR6DBm8BqYjN7CRzw+xKUbVVbbW9w= +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo/v2 v2.1.4 h1:GNapqRSid3zijZ9H77KrgVG4/8KqiyRsxcSxe+7ApXY= +github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.3.0/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.19.0 h1:4ieX6qQjPP/BfC3mpsAtIGGlxTWPeA3Inl/7DtXw1tw= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.4.0 h1:u3Z1r+oOXJIkxqw34zVhyPgjBsm6X2wn21NWs/HfSeg= +github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= +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/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= +github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= +github.com/prometheus/client_golang v1.0.0 h1:vrDKnkGzuGvhNAL56c7DBz29ZL+KxnoR0x7enabFceM= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +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-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.6.0 h1:kRhiuYSXR3+uv2IbVbZhUxK5zVD/2pp3Gd2PpvPkpEo= +github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.3 h1:CTwfnzjQ+8dS6MhHHu4YswVAD99sL2wjPqP+VkURmKE= +github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/soheilhy/cmux v0.1.3/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.5 h1:f0B+LkLX6DtmRH1isoNA9VTtNUK9K8xYd28JNNfOv/s= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +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/spf13/viper v1.3.2 h1:VUFqw5KcqRf7i70GOzW7N+Q7+gxVBkSSqiXB12+JQ4M= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +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/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.uber.org/atomic v0.0.0-20181018215023-8dc6146f7569/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= +go.uber.org/multierr v0.0.0-20180122172545-ddea229ff1df/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/zap v0.0.0-20180814183419-67bc79d13d15/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= +go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +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-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495 h1:I6A9Ag9FpEKOjcKrRNjQkPHawoXIhKyTGfvvjFAiiAk= +golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +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/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0 h1:b9gGHsz9/HhJ3HF5DHQytPpuwocVTChQJK3AvoLRD5I= +golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= +golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180112015858-5ccada7d0a7b/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +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-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/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-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-20190812203447-cdfb69ac37fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/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-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +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 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/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-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-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180117170059-2c42eef0765b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190209173611-3b5209105503/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-20190222072716-a9d3bda3a223/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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/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-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/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.20171227012246-e19ae1496984/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= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/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-20190206041539-40960b6deb8e/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-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +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-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/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-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.2.0 h1:G6AHpWxTMGY1KyEYoAQ5WTtIekUUvDNjan3ugu60JvE= +golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +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= +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= +gomodules.xyz/jsonpatch/v2 v2.0.1 h1:xyiBuvkD2g5n7cYzx6u2sxQvsAy4QJsZFCzGVdzOXZ0= +gomodules.xyz/jsonpatch/v2 v2.0.1/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= +gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485 h1:OB/uP/Puiu5vS5QMRPrXCDWUPb+kt8f1KW8oQzFejQw= +gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e h1:jRyg0XfpwWlhEV8mDfdNGBeSJM2fuyh9Yjrnd8kF2Ts= +gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +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= +google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +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-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +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.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.27.0/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.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/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +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= +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/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= +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/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.0.0/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +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.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +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-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +k8s.io/api v0.16.15 h1:6yvV9YNGwnebDAsA4Sfj+1b1S9j5OYfmckjTdc9b1bI= +k8s.io/api v0.16.15/go.mod h1:8z880CLtpCJqHWe9vmBkZMQeMKHNvdTQuqLW2QUefUA= +k8s.io/apiextensions-apiserver v0.0.0-20190918161926-8f644eb6e783/go.mod h1:xvae1SZB3E17UpV59AWc271W/Ph25N+bjPyR63X6tPY= +k8s.io/apiextensions-apiserver v0.16.15 h1:+tx3F9Yxrmt5iMZsoFOjICv4FF3rHCGkNbxC1nwfTko= +k8s.io/apiextensions-apiserver v0.16.15/go.mod h1:8L35Pijr64c590A9rmne7KCktA+DjovkbnuWcz9WDjA= +k8s.io/apimachinery v0.16.15 h1:4cmEfuRsKuV8pMpaQ6z0AKEUXZ3r+u/NKaz5dvIjySk= +k8s.io/apimachinery v0.16.15/go.mod h1:xAtIC8Gj83Pn2OCs2g57wZpZembRhJhiXIlQIqanwas= +k8s.io/apiserver v0.0.0-20190918160949-bfa5e2e684ad/go.mod h1:XPCXEwhjaFN29a8NldXA901ElnKeKLrLtREO9ZhFyhg= +k8s.io/apiserver v0.16.15/go.mod h1:0tAQf1+cDOwK9m9it6jo1HydLjZJp74e8U4SI1sTSME= +k8s.io/client-go v0.16.15 h1:cuSmM5begnN77V0beNgmhQ9yob6TFUnN+YaqAfRBD40= +k8s.io/client-go v0.16.15/go.mod h1:onpbkg9XeonG579HOlK9RS56ixfOJdbBM5dKluyFM8c= +k8s.io/code-generator v0.0.0-20190912054826-cd179ad6a269/go.mod h1:V5BD6M4CyaN5m+VthcclXWsVcT1Hu+glwa1bi3MIsyE= +k8s.io/code-generator v0.16.15 h1:rDlWqu8cegrg+vVDfgeLOa6K7xHsrYzXB1vhY3AMLuo= +k8s.io/code-generator v0.16.15/go.mod h1:J2H4yLa80/c3JcoMtjfRQ/cqZNWeJnNhrCtedYrPJ+k= +k8s.io/component-base v0.0.0-20190918160511-547f6c5d7090/go.mod h1:933PBGtQFJky3TEwYx4aEPZ4IxqhWh3R6DCmzqIn1hA= +k8s.io/component-base v0.16.15/go.mod h1:KV1nlaKpvS7LmzugCfL8ss3gZV0glkODyJdYNJNB5CM= +k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20220902162205-c0856e24416d h1:U9tB195lKdzwqicbJvyJeOXV7Klv+wNAWENRnXEGi08= +k8s.io/gengo v0.0.0-20220902162205-c0856e24416d/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v0.4.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= +k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= +k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= +k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/klog/v2 v2.10.0 h1:R2HDMDJsHVTHA2n4RjwbeYXdOcBymXdX/JRb1v0VGhE= +k8s.io/klog/v2 v2.10.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= +k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= +k8s.io/kube-openapi v0.0.0-20200410163147-594e756bea31/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= +k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 h1:+70TFaan3hfJzs+7VK2o+OGxg8HsuBr/5f6tVAjDu6E= +k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4= +k8s.io/utils v0.0.0-20190801114015-581e00157fb1/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +k8s.io/utils v0.0.0-20210802155522-efc7438f0176 h1:Mx0aa+SUAcNRQbs5jUzV8lkDlGFU8laZsY9jrcVX5SY= +k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= +modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= +modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= +modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= +modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= +sigs.k8s.io/controller-runtime v0.4.0 h1:wATM6/m+3w8lj8FXNaO6Fs/rq/vqoOjO1Q116Z9NPsg= +sigs.k8s.io/controller-runtime v0.4.0/go.mod h1:ApC79lpY3PHW9xj/w9pj+lYkLgwAAUZwfXkME1Lajns= +sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= +sigs.k8s.io/structured-merge-diff v0.0.0-20190817042607-6149e4549fca/go.mod h1:IIgPezJWb76P0hotTxzDbWsMYB8APh18qZnxkomBpxA= +sigs.k8s.io/structured-merge-diff v1.0.2/go.mod h1:IIgPezJWb76P0hotTxzDbWsMYB8APh18qZnxkomBpxA= +sigs.k8s.io/testing_frameworks v0.1.2 h1:vK0+tvjF0BZ/RYFeZ1E6BYBwHJJXhjuZ3TdsEKH+UQM= +sigs.k8s.io/testing_frameworks v0.1.2/go.mod h1:ToQrwSC3s8Xf/lADdZp3Mktcql9CG0UAmdJG9th5i0w= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/integ/utils/utils.go b/integ/utils/utils.go index d32a5674..47a70d55 100644 --- a/integ/utils/utils.go +++ b/integ/utils/utils.go @@ -12,11 +12,11 @@ import ( errors2 "k8s.io/apimachinery/pkg/api/errors" - "github.com/go-resty/resty" flinkapp "github.com/lyft/flinkk8soperator/pkg/apis/app/v1beta1" clientset "github.com/lyft/flinkk8soperator/pkg/client/clientset/versioned" client "github.com/lyft/flinkk8soperator/pkg/client/clientset/versioned/typed/app/v1beta1" "github.com/prometheus/common/log" + resty "gopkg.in/resty.v1" appsv1 "k8s.io/api/apps/v1" v1 "k8s.io/api/core/v1" "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" diff --git a/pkg/controller/flink/client/api.go b/pkg/controller/flink/client/api.go index 736364f7..58d45500 100644 --- a/pkg/controller/flink/client/api.go +++ b/pkg/controller/flink/client/api.go @@ -12,12 +12,12 @@ import ( "net/http" - "github.com/go-resty/resty" "github.com/lyft/flinkk8soperator/pkg/controller/config" "github.com/lyft/flytestdlib/logger" "github.com/lyft/flytestdlib/promutils" "github.com/lyft/flytestdlib/promutils/labeled" "github.com/pkg/errors" + resty "gopkg.in/resty.v1" ) const GetJobsOverviewURL = "/jobs/%s" diff --git a/tmp/codegen/update-generated.sh b/tmp/codegen/update-generated.sh index 1bbdf169..a7d36e1d 100755 --- a/tmp/codegen/update-generated.sh +++ b/tmp/codegen/update-generated.sh @@ -4,7 +4,7 @@ set -o errexit set -o nounset set -o pipefail -vendor/k8s.io/code-generator/generate-groups.sh \ +bash ./vendor/k8s.io/code-generator/generate-groups.sh \ deepcopy,client \ github.com/lyft/flinkk8soperator/pkg/client \ github.com/lyft/flinkk8soperator/pkg/apis \ diff --git a/tools.go b/tools.go new file mode 100644 index 00000000..4e813f31 --- /dev/null +++ b/tools.go @@ -0,0 +1,7 @@ +//go:build tools + +package tools + +import ( + _ "k8s.io/code-generator" +) From 2e2058007d5989c707415bf74abd46ed4d3dd5cc Mon Sep 17 00:00:00 2001 From: Daniel Metz Date: Mon, 13 Mar 2023 18:42:29 -0400 Subject: [PATCH 02/79] omg it passes tests --- cmd/flinkk8soperator/cmd/root.go | 7 +- go.mod | 72 +-- go.sum | 534 ++++++++++++------ pkg/apis/app/v1beta1/zz_generated.deepcopy.go | 3 +- .../versioned/fake/clientset_generated.go | 7 +- .../clientset/versioned/fake/register.go | 14 +- .../clientset/versioned/scheme/register.go | 14 +- .../versioned/typed/app/v1beta1/app_client.go | 3 +- 8 files changed, 415 insertions(+), 239 deletions(-) diff --git a/cmd/flinkk8soperator/cmd/root.go b/cmd/flinkk8soperator/cmd/root.go index e54d3ad0..f25ea6f8 100644 --- a/cmd/flinkk8soperator/cmd/root.go +++ b/cmd/flinkk8soperator/cmd/root.go @@ -5,7 +5,9 @@ import ( "flag" "fmt" "os" + "os/signal" "strings" + "syscall" "k8s.io/klog" @@ -25,7 +27,6 @@ import ( controllerConfig "github.com/lyft/flinkk8soperator/pkg/controller/config" ctrlRuntimeConfig "sigs.k8s.io/controller-runtime/pkg/client/config" - "github.com/kubernetes-sigs/controller-runtime/pkg/runtime/signals" apis "github.com/lyft/flinkk8soperator/pkg/apis/app" "github.com/lyft/flytestdlib/profutils" "github.com/lyft/flytestdlib/promutils" @@ -187,6 +188,6 @@ func operatorEntryPoint(ctx context.Context, metricsScope promutils.Scope, // Start the Cmd logger.Infof(ctx, "Starting the Cmd.") - stopCh = signals.SetupSignalHandler() - return stopCh, mgr.Start(stopCh) + ctx, _ = signal.NotifyContext(ctx, os.Interrupt, syscall.SIGTERM) + return stopCh, mgr.Start(ctx.Done()) } diff --git a/go.mod b/go.mod index 6dd8f80e..b7dd6b8b 100644 --- a/go.mod +++ b/go.mod @@ -6,43 +6,37 @@ require ( github.com/benlaurie/objecthash v0.0.0-20180202135721-d1e3d6079fc1 github.com/hashicorp/go-version v1.2.1 github.com/jarcoal/httpmock v1.0.4 - github.com/kubernetes-sigs/controller-runtime v0.1.12 github.com/lyft/flytestdlib v0.2.10 - github.com/mitchellh/mapstructure v1.1.2 + github.com/mitchellh/mapstructure v1.4.1 github.com/pkg/errors v0.9.1 github.com/prometheus/common v0.6.0 - github.com/spf13/cobra v0.0.5 + github.com/spf13/cobra v1.6.0 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.0 gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f gopkg.in/resty.v1 v1.12.0 - k8s.io/api v0.17.2 - k8s.io/apiextensions-apiserver v0.16.15 - k8s.io/apimachinery v0.17.2 - k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible - k8s.io/code-generator v0.16.15 + k8s.io/api v0.15.13-beta.0 + k8s.io/apiextensions-apiserver v0.15.12 + k8s.io/apimachinery v0.15.13-beta.0 + k8s.io/client-go v0.15.13-beta.0 + k8s.io/code-generator v0.15.12 k8s.io/klog v1.0.0 - sigs.k8s.io/controller-runtime v0.4.0 + sigs.k8s.io/controller-runtime v0.3.0 ) require ( - github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc // indirect - github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf // indirect - github.com/beorn7/perks v1.0.0 // indirect + github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect + github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d // indirect + github.com/beorn7/perks v1.0.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/emicklei/go-restful/v3 v3.9.0 // indirect - github.com/evanphx/json-patch v4.9.0+incompatible // indirect + github.com/evanphx/json-patch v4.12.0+incompatible // indirect github.com/fatih/color v1.7.0 // indirect - github.com/fsnotify/fsnotify v1.4.7 // indirect - github.com/go-logr/logr v0.4.0 // indirect + github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/go-logr/logr v0.1.0 // indirect github.com/go-logr/zapr v0.4.0 // indirect - github.com/go-openapi/jsonpointer v0.19.5 // indirect - github.com/go-openapi/jsonreference v0.20.0 // indirect - github.com/go-openapi/swag v0.19.14 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.2 // indirect - github.com/google/gnostic v0.5.7-v3refs // indirect github.com/google/go-cmp v0.5.9 // indirect github.com/google/gofuzz v1.1.0 // indirect github.com/google/uuid v1.1.2 // indirect @@ -50,25 +44,22 @@ require ( github.com/hashicorp/golang-lru v0.5.1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/imdario/mergo v0.3.7 // indirect - github.com/inconshreveable/mousetrap v1.0.0 // indirect - github.com/josharian/intern v1.0.0 // indirect + github.com/inconshreveable/mousetrap v1.0.1 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect github.com/kr/text v0.2.0 // indirect github.com/magiconair/properties v1.8.1 // indirect - github.com/mailru/easyjson v0.7.6 // indirect github.com/mattn/go-colorable v0.0.9 // indirect github.com/mattn/go-isatty v0.0.8 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.2 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect - github.com/pelletier/go-toml v1.4.0 // indirect + github.com/pelletier/go-toml v1.7.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.0.0 // indirect - github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 // indirect - github.com/prometheus/procfs v0.0.3 // indirect - github.com/sirupsen/logrus v1.4.2 // indirect + github.com/prometheus/client_golang v1.1.0 // indirect + github.com/prometheus/client_model v0.3.0 // indirect + github.com/prometheus/procfs v0.8.0 // indirect + github.com/sirupsen/logrus v1.8.1 // indirect github.com/spf13/afero v1.2.2 // indirect github.com/spf13/cast v1.3.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect @@ -77,31 +68,24 @@ require ( golang.org/x/crypto v0.1.0 // indirect golang.org/x/mod v0.6.0 // indirect golang.org/x/net v0.7.0 // indirect - golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 // indirect + golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b // indirect golang.org/x/sys v0.5.0 // indirect golang.org/x/term v0.5.0 // indirect golang.org/x/text v0.7.0 // indirect - golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 // indirect + golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect golang.org/x/tools v0.2.0 // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect gomodules.xyz/jsonpatch/v2 v2.0.1 // indirect gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485 // indirect - google.golang.org/appengine v1.6.1 // indirect + google.golang.org/appengine v1.6.7 // indirect google.golang.org/protobuf v1.28.1 // indirect gopkg.in/alecthomas/kingpin.v2 v2.2.6 // indirect gopkg.in/fsnotify.v1 v1.4.7 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/gengo v0.0.0-20220902162205-c0856e24416d // indirect - k8s.io/klog/v2 v2.10.0 // indirect - k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 // indirect - k8s.io/utils v0.0.0-20210802155522-efc7438f0176 // indirect + k8s.io/gengo v0.0.0-20200114144118-36b2048a9120 // indirect + k8s.io/kube-openapi v0.0.0-20200410163147-594e756bea31 // indirect + k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89 // indirect sigs.k8s.io/yaml v1.3.0 // indirect ) - -replace ( - k8s.io/api => k8s.io/api v0.16.15 - k8s.io/apimachinery => k8s.io/apimachinery v0.16.15 - k8s.io/client-go => k8s.io/client-go v0.16.15 -) diff --git a/go.sum b/go.sum index 726d81fd..01c5611d 100644 --- a/go.sum +++ b/go.sum @@ -1,187 +1,221 @@ 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 v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +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/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +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/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +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= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= -github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= -github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= -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/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/Azure/go-autorest v11.1.2+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/BurntSushi/toml v0.3.0/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= 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/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/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/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc h1:cAKDfWh5VpdgMhJosfJnn5/FoN2SRZ4p7fJNX58YPaU= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf h1:qet1QNfXsQxTZqLG4oE62mJzwPIB8+Tee4RNCL9ulrY= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= 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/benlaurie/objecthash v0.0.0-20180202135721-d1e3d6079fc1 h1:VRtJdDi2lqc3MFwmouppm2jlm6icF+7H3WYKpLENMTo= github.com/benlaurie/objecthash v0.0.0-20180202135721-d1e3d6079fc1/go.mod h1:jvdWlw8vowVGnZqSDC7yhPd7AifQeQbRDkZcQXV2nRg= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0 h1:HWo1m869IqiPhD389kmkxeTalrjNbbJTC8LXupb+sl0= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/coreos/bbolt v1.3.1-coreos.6/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.15+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.17+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= +github.com/coreos/go-oidc v0.0.0-20180117170138-065b426bd416/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= +github.com/coreos/go-semver v0.0.0-20180108230905-e214231b295a/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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/dgrijalva/jwt-go v0.0.0-20160705203006-01aeca54ebda/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-units v0.3.3/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-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful/v3 v3.9.0 h1:XwGDlfxEnQZzuopoqxwSEllNcCOM9DhhFyhFIIGKwxE= -github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v0.0.0-20190203023257-5858425f7550/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses= -github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= +github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680 h1:ZktWZesgun21uEDrwW7iEV1zPCGQldM2atlJZ3TdvVM= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/ghodss/yaml v0.0.0-20180820084758-c7ce16629ff4 h1:bRzFpEzvausOAt4va+I/22BZ1vXDtERngp0BNYDKej0= +github.com/ghodss/yaml v0.0.0-20180820084758-c7ce16629ff4/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-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logr/logr v0.1.0 h1:M1Tv3VzNlEHg6uyACnRdtrploV2P7wZqH8BoQMtz0cg= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -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/zapr v0.1.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= github.com/go-logr/zapr v0.4.0 h1:uc1uML3hRYL9/ZZPdgHS/n8Nzo+eaYL/Efxkkamf7OM= github.com/go-logr/zapr v0.4.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= 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= -github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= +github.com/go-openapi/analysis v0.17.2/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= +github.com/go-openapi/errors v0.17.2/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= 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/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= 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= -github.com/go-openapi/jsonreference v0.20.0 h1:MYlu0sBgChmCfJxxUKZ8g1cPWFOB37YSZqewK7OKeyA= -github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= +github.com/go-openapi/jsonreference v0.19.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= +github.com/go-openapi/loads v0.17.2/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= -github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= +github.com/go-openapi/runtime v0.17.2/go.mod h1:QO936ZXeisByFmZEO1IS1Dqhtf4QV1sYYFtIq6Ld86Q= 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= +github.com/go-openapi/spec v0.17.2/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= -github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= -github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= 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= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.14 h1:gm3vOOXfiuw5i9p5N9xJvfjvuofpyvLA9Wr6QfK5Fng= -github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/swag v0.17.2/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= +github.com/go-openapi/validate v0.17.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= -github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v0.0.0-20171007142547-342cbe0a0415/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= 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-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20180513044358-24b0969c4cb7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 h1:ZgQEtGgCBiWRM39fZuwSd1LwSqqSW0hOdXCYYDX0R3I= 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 h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +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/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.0.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= 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.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= 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/google/btree v0.0.0-20160524151835-7d79101e329e/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= -github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= 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.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= 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/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= 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/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/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/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.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.3.1 h1:WeAefnSUHlBb0iJKwxFDZdbfGwkd7xRNuV+IpXMJhYk= github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= -github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/gophercloud/gophercloud v0.0.0-20190126172459-c818fa66e4c8/go.mod h1:3WdhXV3rUYy9p6AUW8d94kr+HS62Y4VL9mBnFxsD8q4= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/go-grpc-prometheus v0.0.0-20170330212424-2500245aa611/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.3.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= github.com/hashicorp/go-version v1.2.1 h1:zEfKbn2+PDgroKdiOzqiE8rsmLqU2uwi5PB5pBJ3TkI= github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= @@ -192,40 +226,35 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= 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/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.7 h1:Y+UAYTZ7gDEuOfhxKWy+dvb5dRQ6rJjFSdX2HZY1/gI= github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= +github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jarcoal/httpmock v1.0.4 h1:jp+dy/+nonJE4g4xbVtl9QdrUNbn6/3hDT5R4nDIZnA= github.com/jarcoal/httpmock v1.0.4/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= -github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/jonboulle/clockwork v0.0.0-20141017032234-72f9bd7c4e0c/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= 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/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -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/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 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= -github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= 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/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/kubernetes-sigs/controller-runtime v0.1.12 h1:L4OZm06W5pyXIAFjgVguSV7ScbGeGai6O4LN+tmwGGk= -github.com/kubernetes-sigs/controller-runtime v0.1.12/go.mod h1:qCvk+77+3Obq7iISpAiNAg+0Uqyb8y+FUqFqBtQuhz8= github.com/lyft/flytestdlib v0.2.10 h1:RdBRgQlf0+kPFb6y0Ox9SfvcAzH+aa5LJLCULF7AryU= github.com/lyft/flytestdlib v0.2.10/go.mod h1:cN89OAMbgIB4fc71HTLbENOFFqHGc318Reot9B7dPfw= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= @@ -233,20 +262,16 @@ github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzR github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= 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= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA= -github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -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/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/matttproud/golang_protobuf_extensions v1.0.2 h1:hAHbPm5IJGijwng3PWk09JkG9WeqChjprR5s9bBZ+OM= +github.com/matttproud/golang_protobuf_extensions v1.0.2/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= 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= @@ -258,22 +283,20 @@ github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjY github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/natefinch/lumberjack v2.0.0+incompatible/go.mod h1:Wi9p2TTF5DG5oU+6YfsmYQpsTIOm0B1VNzQg9Mw6nPk= 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/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.4.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.6.0 h1:Ix8l273rp3QzYgXSR+c8d1fTG7UPgYkOSELPhiY/YGw= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.8.0 h1:VkHVNpR4iVnU8XQR6DBm8BqYjN7CRzw+xKUbVVbbW9w= -github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo/v2 v2.1.4 h1:GNapqRSid3zijZ9H77KrgVG4/8KqiyRsxcSxe+7ApXY= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.3.0/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.19.0 h1:4ieX6qQjPP/BfC3mpsAtIGGlxTWPeA3Inl/7DtXw1tw= +github.com/onsi/gomega v0.0.0-20190113212917-5533ce8a0da3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.4.2 h1:3mYCb7aPxS/RU7TI1y4rkEn1oKmPRjNJLNEXgw7MH2I= +github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.4.0 h1:u3Z1r+oOXJIkxqw34zVhyPgjBsm6X2wn21NWs/HfSeg= -github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= +github.com/pelletier/go-toml v1.7.0 h1:7utD74fnzVc/cpcyy8sjrlFr5vYpypUixARcHIMIGuI= +github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= 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/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -285,12 +308,14 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= -github.com/prometheus/client_golang v1.0.0 h1:vrDKnkGzuGvhNAL56c7DBz29ZL+KxnoR0x7enabFceM= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.1.0 h1:BQ53HtBmfOitExawJ6LokA4x8ov/z0SYYb0+HxJfRI8= +github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -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/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= +github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.6.0 h1:kRhiuYSXR3+uv2IbVbZhUxK5zVD/2pp3Gd2PpvPkpEo= @@ -298,40 +323,42 @@ github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+ github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.3 h1:CTwfnzjQ+8dS6MhHHu4YswVAD99sL2wjPqP+VkURmKE= github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= +github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/soheilhy/cmux v0.1.3/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.5 h1:f0B+LkLX6DtmRH1isoNA9VTtNUK9K8xYd28JNNfOv/s= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v0.0.0-20180319062004-c439c4fa0937/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v1.6.0 h1:42a0n6jwCot1pUmomAp4T7DeMD+20LFv4Q54pxLf2LI= +github.com/spf13/cobra v1.6.0/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.2/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/spf13/viper v1.3.2 h1:VUFqw5KcqRf7i70GOzW7N+Q7+gxVBkSSqiXB12+JQ4M= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -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/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= @@ -339,10 +366,15 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1 github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= 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.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.uber.org/atomic v0.0.0-20181018215023-8dc6146f7569/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= @@ -354,33 +386,51 @@ go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181025213731-e84da0312774/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/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-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495 h1:I6A9Ag9FpEKOjcKrRNjQkPHawoXIhKyTGfvvjFAiiAk= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +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 h1:QE6XYQK6naiK1EPAe1g/ILLxN5RBoH5xkJk3CqlMI/Y= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +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/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/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0 h1:b9gGHsz9/HhJ3HF5DHQytPpuwocVTChQJK3AvoLRD5I= golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180112015858-5ccada7d0a7b/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 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= @@ -391,78 +441,153 @@ golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73r 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-20190628185345-da137c7871d7/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-20190812203447-cdfb69ac37fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/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-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= 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 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= +golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/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/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b h1:clP8eMhB30EHdc0bd2Twtq6kgU7yl5ub2cQLSdrv1Dg= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= 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-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/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/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-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180117170059-2c42eef0765b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190209173611-3b5209105503/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-20190222072716-a9d3bda3a223/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-20190412213103-97732733099d/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-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-20190813064441-fde4db37ae7a/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-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/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-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +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.20171227012246-e19ae1496984/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.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/time v0.0.0-20161028155119-f51c12702a4d/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ= 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-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= +golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/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-20190206041539-40960b6deb8e/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-20190328211700-ab21143f2384/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-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-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +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-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-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +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-20200227222343-706bc42d1f0d/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-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.2.0 h1:G6AHpWxTMGY1KyEYoAQ5WTtIekUUvDNjan3ugu60JvE= golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= @@ -479,29 +604,82 @@ gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6d gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e h1:jRyg0XfpwWlhEV8mDfdNGBeSJM2fuyh9Yjrnd8kF2Ts= gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= 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.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= 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= -google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20170731182057-09f6ed296fc6/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= 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-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= 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/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/grpc v1.13.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= 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.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +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/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= 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.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= @@ -510,82 +688,90 @@ gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQ gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= 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= 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/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +gopkg.in/natefinch/lumberjack.v2 v2.0.0-20150622162204-20b71e5b60d7/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.0.0-20180411045311-89060dee6a84/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.0.0/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0/go.mod h1:WDnlLJ4WF5VGsH/HVa3CI79GS0ol3YnhVnKP89i0kNg= 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.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= 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= -k8s.io/api v0.16.15 h1:6yvV9YNGwnebDAsA4Sfj+1b1S9j5OYfmckjTdc9b1bI= -k8s.io/api v0.16.15/go.mod h1:8z880CLtpCJqHWe9vmBkZMQeMKHNvdTQuqLW2QUefUA= -k8s.io/apiextensions-apiserver v0.0.0-20190918161926-8f644eb6e783/go.mod h1:xvae1SZB3E17UpV59AWc271W/Ph25N+bjPyR63X6tPY= -k8s.io/apiextensions-apiserver v0.16.15 h1:+tx3F9Yxrmt5iMZsoFOjICv4FF3rHCGkNbxC1nwfTko= -k8s.io/apiextensions-apiserver v0.16.15/go.mod h1:8L35Pijr64c590A9rmne7KCktA+DjovkbnuWcz9WDjA= -k8s.io/apimachinery v0.16.15 h1:4cmEfuRsKuV8pMpaQ6z0AKEUXZ3r+u/NKaz5dvIjySk= -k8s.io/apimachinery v0.16.15/go.mod h1:xAtIC8Gj83Pn2OCs2g57wZpZembRhJhiXIlQIqanwas= -k8s.io/apiserver v0.0.0-20190918160949-bfa5e2e684ad/go.mod h1:XPCXEwhjaFN29a8NldXA901ElnKeKLrLtREO9ZhFyhg= -k8s.io/apiserver v0.16.15/go.mod h1:0tAQf1+cDOwK9m9it6jo1HydLjZJp74e8U4SI1sTSME= -k8s.io/client-go v0.16.15 h1:cuSmM5begnN77V0beNgmhQ9yob6TFUnN+YaqAfRBD40= -k8s.io/client-go v0.16.15/go.mod h1:onpbkg9XeonG579HOlK9RS56ixfOJdbBM5dKluyFM8c= -k8s.io/code-generator v0.0.0-20190912054826-cd179ad6a269/go.mod h1:V5BD6M4CyaN5m+VthcclXWsVcT1Hu+glwa1bi3MIsyE= -k8s.io/code-generator v0.16.15 h1:rDlWqu8cegrg+vVDfgeLOa6K7xHsrYzXB1vhY3AMLuo= -k8s.io/code-generator v0.16.15/go.mod h1:J2H4yLa80/c3JcoMtjfRQ/cqZNWeJnNhrCtedYrPJ+k= -k8s.io/component-base v0.0.0-20190918160511-547f6c5d7090/go.mod h1:933PBGtQFJky3TEwYx4aEPZ4IxqhWh3R6DCmzqIn1hA= -k8s.io/component-base v0.16.15/go.mod h1:KV1nlaKpvS7LmzugCfL8ss3gZV0glkODyJdYNJNB5CM= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +k8s.io/api v0.0.0-20190918195907-bd6ac527cfd2/go.mod h1:AOxZTnaXR/xiarlQL0JUfwQPxjmKDvVYoRp58cA7lUo= +k8s.io/api v0.15.12/go.mod h1:S1SvCPVhZhYj/dWFUo86dk0Ej/NKuoGuJFhAJiDLYEI= +k8s.io/api v0.15.13-beta.0 h1:LJy6qXUEVNfWCoI5dSeFEsmLYtZDrXfEo2+da7qty30= +k8s.io/api v0.15.13-beta.0/go.mod h1:+1kF7Ndo0iNY7nYyy00GQfUzc0GD47sOCCHfc+VrG+A= +k8s.io/apiextensions-apiserver v0.0.0-20190918201827-3de75813f604/go.mod h1:7H8sjDlWQu89yWB3FhZfsLyRCRLuoXoCoY5qtwW1q6I= +k8s.io/apiextensions-apiserver v0.15.12 h1:akOs6/aOpn2TLqWBDdzu3dvnC25tvhDSAtt7+CVAVL4= +k8s.io/apiextensions-apiserver v0.15.12/go.mod h1:lHDUNSxSQpwf/7gVg8GMWnQ486cu2SNEXpvdnBUBcIk= +k8s.io/apimachinery v0.0.0-20190817020851-f2f3a405f61d/go.mod h1:3jediapYqJ2w1BFw7lAZPCx7scubsTfosqHkhXCWJKw= +k8s.io/apimachinery v0.15.12/go.mod h1:ZRw+v83FjgEqlzqaBkxL3XB21MSLYdzjsY9Bgxclhdw= +k8s.io/apimachinery v0.15.13-beta.0 h1:BsRKzHBNVG5WslotgJIjADuIUxa7M8elgWfgNRy0zvI= +k8s.io/apimachinery v0.15.13-beta.0/go.mod h1:ZRw+v83FjgEqlzqaBkxL3XB21MSLYdzjsY9Bgxclhdw= +k8s.io/apiserver v0.0.0-20190918200908-1e17798da8c1/go.mod h1:4FuDU+iKPjdsdQSN3GsEKZLB/feQsj1y9dhhBDVV2Ns= +k8s.io/apiserver v0.15.12/go.mod h1:dzcY88tjzTVC1JVtzJrtHnoX+kph3jhJX4mfqrjB/1s= +k8s.io/client-go v0.0.0-20190918200256-06eb1244587a/go.mod h1:3YAcTbI2ArBRmhHns5vlHRX8YQqvkVYpz+U/N5i1mVU= +k8s.io/client-go v0.15.12/go.mod h1:lODF5jBINl0daZimzPM2IuodA6m81jgHUngyKZ+J5kU= +k8s.io/client-go v0.15.13-beta.0 h1:u4tqyo+zlZwQ/2a4oCmcPS4onpNn/jsxBrAVdYOLL3U= +k8s.io/client-go v0.15.13-beta.0/go.mod h1:9XtkiHBbhymSjORqMaTYBK5RZHB/GIVGJyvHwa0j0dc= +k8s.io/code-generator v0.0.0-20190612205613-18da4a14b22b/go.mod h1:G8bQwmHm2eafm5bgtX67XDZQ8CWKSGu9DekI+yN4Y5I= +k8s.io/code-generator v0.15.12 h1:gT9pzUFkbaGsyyI88mD2rbYPTqiJ58vHJkzrQemMFgo= +k8s.io/code-generator v0.15.12/go.mod h1:G8bQwmHm2eafm5bgtX67XDZQ8CWKSGu9DekI+yN4Y5I= +k8s.io/component-base v0.0.0-20190918200425-ed2f0867c778/go.mod h1:DFWQCXgXVLiWtzFaS17KxHdlUeUymP7FLxZSkmL9/jU= +k8s.io/component-base v0.15.12/go.mod h1:x5BynzfY8o8RIPISpgU1U2DDbsXnEUBVNSMCzaMJFXQ= +k8s.io/gengo v0.0.0-20190116091435-f8a0810f38af/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20220902162205-c0856e24416d h1:U9tB195lKdzwqicbJvyJeOXV7Klv+wNAWENRnXEGi08= -k8s.io/gengo v0.0.0-20220902162205-c0856e24416d/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/gengo v0.0.0-20200114144118-36b2048a9120 h1:RPscN6KhmG54S33L+lr3GS+oD1jmchIU0ll519K6FA4= +k8s.io/gengo v0.0.0-20200114144118-36b2048a9120/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.4.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= +k8s.io/klog v0.3.1/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v0.3.3/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= -k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= -k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.10.0 h1:R2HDMDJsHVTHA2n4RjwbeYXdOcBymXdX/JRb1v0VGhE= -k8s.io/klog/v2 v2.10.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= -k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= +k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30/go.mod h1:BXM9ceUBTj2QnfH2MK1odQs778ajze1RxcmP6S8RVVc= +k8s.io/kube-openapi v0.0.0-20200410163147-594e756bea31 h1:PsbYeEz2x7ll6JYUzBEG+DT78910DDTlvn5Ma10F5/E= k8s.io/kube-openapi v0.0.0-20200410163147-594e756bea31/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= -k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 h1:+70TFaan3hfJzs+7VK2o+OGxg8HsuBr/5f6tVAjDu6E= -k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4= -k8s.io/utils v0.0.0-20190801114015-581e00157fb1/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -k8s.io/utils v0.0.0-20210802155522-efc7438f0176 h1:Mx0aa+SUAcNRQbs5jUzV8lkDlGFU8laZsY9jrcVX5SY= -k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20190221042446-c2654d5206da/go.mod h1:8k8uAuAQ0rXslZKaEWd0c3oVhZz7sSzSiPnVZayjIX0= +k8s.io/utils v0.0.0-20190506122338-8fab8cb257d5/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89 h1:d4vVOjXm687F1iLSP2q3lyPPuyvTUt3aVoBpi2DqRsU= +k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= -sigs.k8s.io/controller-runtime v0.4.0 h1:wATM6/m+3w8lj8FXNaO6Fs/rq/vqoOjO1Q116Z9NPsg= -sigs.k8s.io/controller-runtime v0.4.0/go.mod h1:ApC79lpY3PHW9xj/w9pj+lYkLgwAAUZwfXkME1Lajns= +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/controller-runtime v0.3.0 h1:ZtdgqJXVHsIytjdmDuk0QjagnzyLq9FjojXRqIp+dU4= +sigs.k8s.io/controller-runtime v0.3.0/go.mod h1:Cw6PkEg0Sa7dAYovGT4R0tRkGhHXpYijwNxYhAnAZZk= +sigs.k8s.io/structured-merge-diff v0.0.0-20190302045857-e85c7b244fd2/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= -sigs.k8s.io/structured-merge-diff v0.0.0-20190817042607-6149e4549fca/go.mod h1:IIgPezJWb76P0hotTxzDbWsMYB8APh18qZnxkomBpxA= -sigs.k8s.io/structured-merge-diff v1.0.2/go.mod h1:IIgPezJWb76P0hotTxzDbWsMYB8APh18qZnxkomBpxA= -sigs.k8s.io/testing_frameworks v0.1.2 h1:vK0+tvjF0BZ/RYFeZ1E6BYBwHJJXhjuZ3TdsEKH+UQM= -sigs.k8s.io/testing_frameworks v0.1.2/go.mod h1:ToQrwSC3s8Xf/lADdZp3Mktcql9CG0UAmdJG9th5i0w= +sigs.k8s.io/testing_frameworks v0.1.1 h1:cP2l8fkA3O9vekpy5Ks8mmA0NW/F7yBdXf8brkWhVrs= +sigs.k8s.io/testing_frameworks v0.1.1/go.mod h1:VVBKrHmJ6Ekkfz284YKhQePcdycOzNH9qL6ht1zEr/U= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/pkg/apis/app/v1beta1/zz_generated.deepcopy.go b/pkg/apis/app/v1beta1/zz_generated.deepcopy.go index 01b77003..2b46a942 100644 --- a/pkg/apis/app/v1beta1/zz_generated.deepcopy.go +++ b/pkg/apis/app/v1beta1/zz_generated.deepcopy.go @@ -1,3 +1,4 @@ +//go:build !ignore_autogenerated // +build !ignore_autogenerated // Code generated by deepcopy-gen. DO NOT EDIT. @@ -91,7 +92,7 @@ func (in *FlinkApplicationError) DeepCopy() *FlinkApplicationError { func (in *FlinkApplicationList) DeepCopyInto(out *FlinkApplicationList) { *out = *in out.TypeMeta = in.TypeMeta - out.ListMeta = in.ListMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) if in.Items != nil { in, out := &in.Items, &out.Items *out = make([]FlinkApplication, len(*in)) diff --git a/pkg/client/clientset/versioned/fake/clientset_generated.go b/pkg/client/clientset/versioned/fake/clientset_generated.go index 664662d9..bdc4a629 100644 --- a/pkg/client/clientset/versioned/fake/clientset_generated.go +++ b/pkg/client/clientset/versioned/fake/clientset_generated.go @@ -25,7 +25,7 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset { } } - cs := &Clientset{} + cs := &Clientset{tracker: o} cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake} cs.AddReactor("*", "*", testing.ObjectReaction(o)) cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) { @@ -47,12 +47,17 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset { type Clientset struct { testing.Fake discovery *fakediscovery.FakeDiscovery + tracker testing.ObjectTracker } func (c *Clientset) Discovery() discovery.DiscoveryInterface { return c.discovery } +func (c *Clientset) Tracker() testing.ObjectTracker { + return c.tracker +} + var _ clientset.Interface = &Clientset{} // FlinkV1beta1 retrieves the FlinkV1beta1Client diff --git a/pkg/client/clientset/versioned/fake/register.go b/pkg/client/clientset/versioned/fake/register.go index 61bc01de..c0a3fd3e 100644 --- a/pkg/client/clientset/versioned/fake/register.go +++ b/pkg/client/clientset/versioned/fake/register.go @@ -21,14 +21,14 @@ var localSchemeBuilder = runtime.SchemeBuilder{ // AddToScheme adds all types of this clientset into the given scheme. This allows composition // of clientsets, like in: // -// import ( -// "k8s.io/client-go/kubernetes" -// clientsetscheme "k8s.io/client-go/kubernetes/scheme" -// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" -// ) +// import ( +// "k8s.io/client-go/kubernetes" +// clientsetscheme "k8s.io/client-go/kubernetes/scheme" +// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" +// ) // -// kclientset, _ := kubernetes.NewForConfig(c) -// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) +// kclientset, _ := kubernetes.NewForConfig(c) +// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) // // After this, RawExtensions in Kubernetes types will serialize kube-aggregator types // correctly. diff --git a/pkg/client/clientset/versioned/scheme/register.go b/pkg/client/clientset/versioned/scheme/register.go index 8b472789..4ab99391 100644 --- a/pkg/client/clientset/versioned/scheme/register.go +++ b/pkg/client/clientset/versioned/scheme/register.go @@ -21,14 +21,14 @@ var localSchemeBuilder = runtime.SchemeBuilder{ // AddToScheme adds all types of this clientset into the given scheme. This allows composition // of clientsets, like in: // -// import ( -// "k8s.io/client-go/kubernetes" -// clientsetscheme "k8s.io/client-go/kubernetes/scheme" -// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" -// ) +// import ( +// "k8s.io/client-go/kubernetes" +// clientsetscheme "k8s.io/client-go/kubernetes/scheme" +// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" +// ) // -// kclientset, _ := kubernetes.NewForConfig(c) -// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) +// kclientset, _ := kubernetes.NewForConfig(c) +// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) // // After this, RawExtensions in Kubernetes types will serialize kube-aggregator types // correctly. diff --git a/pkg/client/clientset/versioned/typed/app/v1beta1/app_client.go b/pkg/client/clientset/versioned/typed/app/v1beta1/app_client.go index 0ad0754a..69c5d8e2 100644 --- a/pkg/client/clientset/versioned/typed/app/v1beta1/app_client.go +++ b/pkg/client/clientset/versioned/typed/app/v1beta1/app_client.go @@ -5,7 +5,6 @@ package v1beta1 import ( v1beta1 "github.com/lyft/flinkk8soperator/pkg/apis/app/v1beta1" "github.com/lyft/flinkk8soperator/pkg/client/clientset/versioned/scheme" - serializer "k8s.io/apimachinery/pkg/runtime/serializer" rest "k8s.io/client-go/rest" ) @@ -55,7 +54,7 @@ func setConfigDefaults(config *rest.Config) error { gv := v1beta1.SchemeGroupVersion config.GroupVersion = &gv config.APIPath = "/apis" - config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + config.NegotiatedSerializer = scheme.Codecs.WithoutConversion() if config.UserAgent == "" { config.UserAgent = rest.DefaultKubernetesUserAgent() From 84481bc6008473769d4d749b225d6563242dd6fa Mon Sep 17 00:00:00 2001 From: Daniel Metz Date: Mon, 13 Mar 2023 18:43:28 -0400 Subject: [PATCH 03/79] add this back --- docs/local_dev.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/local_dev.md b/docs/local_dev.md index b8d13373..d9c40e89 100644 --- a/docs/local_dev.md +++ b/docs/local_dev.md @@ -23,9 +23,19 @@ $ kubectl proxy & $ open http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/overview ``` +### Set up your Go environment + +```bash +$ export GOPATH=~/src/go +``` + +(should probably go into your shell's profile) + ### Checkout the code ```bash +$ mkdir -p $GOPATH/src/github.com/lyft +$ cd $GOPATH/src/github.com/lyft $ git clone git@github.com:lyft/flinkk8soperator.git ``` From 959bb448836ef2fdbd571189a2c12a9db830b64e Mon Sep 17 00:00:00 2001 From: Daniel Metz Date: Mon, 13 Mar 2023 18:44:47 -0400 Subject: [PATCH 04/79] drop install --- .github/workflows/actions.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 109ef142..f79f9d1d 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -22,8 +22,6 @@ jobs: uses: actions/setup-go@v2 with: go-version: 1.20 - - name: install - run: make install - name: test run: make test_unit lint: @@ -43,8 +41,6 @@ jobs: uses: actions/setup-go@v2 with: go-version: 1.20 - - name: install - run: make install - name: test run: make lint # TODO: restore this test From d24f1bd6984e3a7a9d171ef721ba7307de15495e Mon Sep 17 00:00:00 2001 From: Daniel Metz Date: Mon, 13 Mar 2023 18:46:36 -0400 Subject: [PATCH 05/79] quote --- .github/workflows/actions.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index f79f9d1d..94437658 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -21,7 +21,7 @@ jobs: - name: install go uses: actions/setup-go@v2 with: - go-version: 1.20 + go-version: "1.20" - name: test run: make test_unit lint: @@ -40,7 +40,7 @@ jobs: - name: install go uses: actions/setup-go@v2 with: - go-version: 1.20 + go-version: "1.20" - name: test run: make lint # TODO: restore this test @@ -60,7 +60,7 @@ jobs: # - name: install go # uses: actions/setup-go@v2 # with: - # go-version: 1.20 + # go-version: "1.20" # - name: install # run: integ/install.sh # - name: setup From 6f9078cc4a258b22d47bba93e5ec47bec3e28a8d Mon Sep 17 00:00:00 2001 From: Daniel Metz Date: Mon, 13 Mar 2023 18:57:25 -0400 Subject: [PATCH 06/79] fix lint --- boilerplate/lyft/golang_test_targets/Makefile | 4 +-- cmd/flinkk8soperator/cmd/root.go | 29 +++++++------------ integ/checkpoint_failure_test.go | 3 +- integ/utils/utils.go | 1 + pkg/controller/flink/client/error_handler.go | 3 +- pkg/controller/flink/container_utils.go | 12 ++------ .../flinkapplication/flink_state_machine.go | 1 + 7 files changed, 18 insertions(+), 35 deletions(-) diff --git a/boilerplate/lyft/golang_test_targets/Makefile b/boilerplate/lyft/golang_test_targets/Makefile index 0ed9a718..13e302db 100644 --- a/boilerplate/lyft/golang_test_targets/Makefile +++ b/boilerplate/lyft/golang_test_targets/Makefile @@ -1,6 +1,6 @@ .PHONY: lint lint: #lints the package for common code smells - which golangci-lint || sh boilerplate/lyft/golang_test_targets/golangci-lint.sh -b $$GOPATH/bin v1.16.0 + which golangci-lint || sh boilerplate/lyft/golang_test_targets/golangci-lint.sh -b $$GOPATH/bin v1.51.2 golangci-lint run # If code is failing goimports linter, this will fix. @@ -28,4 +28,4 @@ test_unit_cover: .PHONY: test_unit_visual test_unit_visual: - go test ./... -coverprofile /tmp/cover.out -covermode=count; go tool cover -html=/tmp/cover.out + go test ./... -coverprofile /tmp/cover.out -covermode=count; go tool cover -html=/tmp/cover.out diff --git a/cmd/flinkk8soperator/cmd/root.go b/cmd/flinkk8soperator/cmd/root.go index f25ea6f8..635c7397 100644 --- a/cmd/flinkk8soperator/cmd/root.go +++ b/cmd/flinkk8soperator/cmd/root.go @@ -126,30 +126,21 @@ func executeRootCmd(controllerCfg *controllerConfig.Config) error { } }() - stopCh, err := operatorEntryPoint(ctx, operatorScope, controllerCfg) - if err != nil { + if err := operatorEntryPoint(ctx, operatorScope, controllerCfg); err != nil { cancelNow() return err } - for { - select { - case <-stopCh: - cancelNow() - os.Exit(0) - case <-ctx.Done(): - cancelNow() - } - } + <-ctx.Done() + cancelNow() + return nil } -func operatorEntryPoint(ctx context.Context, metricsScope promutils.Scope, - controllerCfg *controllerConfig.Config) (stopCh <-chan struct{}, err error) { - +func operatorEntryPoint(ctx context.Context, metricsScope promutils.Scope, controllerCfg *controllerConfig.Config) error { // Get a config to talk to the apiserver cfg, err := ctrlRuntimeConfig.GetConfig() if err != nil { - return nil, err + return err } limitNameSpace := strings.TrimSpace(controllerCfg.LimitNamespace) @@ -168,14 +159,14 @@ func operatorEntryPoint(ctx context.Context, metricsScope promutils.Scope, } if err != nil { - return nil, err + return err } logger.Infof(ctx, "Registering Components.") // Setup Scheme for all resources if err := apis.AddToScheme(mgr.GetScheme()); err != nil { - return nil, err + return err } // Setup all Controllers @@ -183,11 +174,11 @@ func operatorEntryPoint(ctx context.Context, metricsScope promutils.Scope, if err := controller.AddToManager(ctx, mgr, controllerConfig.RuntimeConfig{ MetricsScope: metricsScope, }); err != nil { - return nil, err + return err } // Start the Cmd logger.Infof(ctx, "Starting the Cmd.") ctx, _ = signal.NotifyContext(ctx, os.Interrupt, syscall.SIGTERM) - return stopCh, mgr.Start(ctx.Done()) + return mgr.Start(ctx.Done()) } diff --git a/integ/checkpoint_failure_test.go b/integ/checkpoint_failure_test.go index 9f7a596c..200f94ba 100644 --- a/integ/checkpoint_failure_test.go +++ b/integ/checkpoint_failure_test.go @@ -2,7 +2,6 @@ package integ import ( "fmt" - "io/ioutil" "os" "time" @@ -78,7 +77,7 @@ func (s *IntegSuite) TestJobWithTaskFailures(c *C) { func (s *IntegSuite) TestCheckpointTimeout(c *C) { failingJobTest(s, c, "checkpointtimeout", func() { // cause checkpoints to take 120 seconds - err := ioutil.WriteFile(s.Util.CheckpointDir+"/checkpoint_delay", []byte("120000"), 0644) + err := os.WriteFile(s.Util.CheckpointDir+"/checkpoint_delay", []byte("120000"), 0644) // nolint: gosec c.Assert(err, IsNil) }) } diff --git a/integ/utils/utils.go b/integ/utils/utils.go index 47a70d55..6d26c78c 100644 --- a/integ/utils/utils.go +++ b/integ/utils/utils.go @@ -93,6 +93,7 @@ func (f *TestUtil) Cleanup() { } else { // make sure none of the apps have left-over finalizers for _, app := range flinkApps.Items { + app := app if len(app.Finalizers) != 0 { app.Finalizers = []string{} _, _ = f.FlinkApps().Update(&app) diff --git a/pkg/controller/flink/client/error_handler.go b/pkg/controller/flink/client/error_handler.go index 01bbf33e..74f0f255 100644 --- a/pkg/controller/flink/client/error_handler.go +++ b/pkg/controller/flink/client/error_handler.go @@ -69,7 +69,6 @@ type RetryHandler struct { } func NewRetryHandler(baseBackoff time.Duration, timeToWait time.Duration, maxBackOff time.Duration) RetryHandler { - rand.Seed(time.Now().UnixNano()) return RetryHandler{baseBackoff, timeToWait, maxBackOff} } func (r RetryHandler) IsErrorRetryable(err error) bool { @@ -104,7 +103,7 @@ func (r RetryHandler) GetRetryDelay(retryCount int32) time.Duration { timeInMillis = 1 } maxBackoffMillis := int(r.maxBackOffMillisDuration.Nanoseconds() / int64(time.Millisecond)) - delay := 1 << uint(retryCount) * (rand.Intn(timeInMillis) + timeInMillis) + delay := 1 << uint(retryCount) * (rand.Intn(timeInMillis) + timeInMillis) // nolint: gosec return time.Duration(min(delay, maxBackoffMillis)) * time.Millisecond } func (r RetryHandler) IsTimeToRetry(clock clock.Clock, lastUpdatedTime time.Time, retryCount int32) bool { diff --git a/pkg/controller/flink/container_utils.go b/pkg/controller/flink/container_utils.go index a5607108..3c61e880 100644 --- a/pkg/controller/flink/container_utils.go +++ b/pkg/controller/flink/container_utils.go @@ -139,14 +139,6 @@ func ImagePullPolicy(app *v1beta1.FlinkApplication) v1.PullPolicy { return app.Spec.ImagePullPolicy } -func fromHashToByteArray(input [32]byte) []byte { - output := make([]byte, 32) - for idx, val := range input { - output[idx] = val - } - return output -} - // Generate a deterministic hash in bytes for the pb object func ComputeDeploymentHash(deployment appsv1.Deployment) ([]byte, error) { // json marshalling includes: @@ -163,7 +155,7 @@ func ComputeDeploymentHash(deployment appsv1.Deployment) ([]byte, error) { return nil, err } - return fromHashToByteArray(hash), err + return hash[:], err } // Returns an 8 character hash sensitive to the application name, labels, annotations, and spec. @@ -255,7 +247,7 @@ func RandomPodDeploymentSelector() string { s := make([]byte, 8) for i := range s { - s[i] = alphabet[rand.Int31n(int32(len(alphabet)))] + s[i] = alphabet[rand.Int31n(int32(len(alphabet)))] // nolint: gosec } return string(s) diff --git a/pkg/controller/flinkapplication/flink_state_machine.go b/pkg/controller/flinkapplication/flink_state_machine.go index 4a63abc1..05899cb1 100644 --- a/pkg/controller/flinkapplication/flink_state_machine.go +++ b/pkg/controller/flinkapplication/flink_state_machine.go @@ -308,6 +308,7 @@ func (s *FlinkStateMachine) handleRescaling(ctx context.Context, app *v1beta1.Fl var jmDeployment *appsv1.Deployment for i, d := range deployments.Items { + d := d if flink.DeploymentIsJobmanager(&d) { jmDeployment = &deployments.Items[i] } else if flink.DeploymentIsTaskmanager(&d) { From b7d1509a65d3decc9914ee4a46570dd806f1b7d7 Mon Sep 17 00:00:00 2001 From: Daniel Metz Date: Mon, 13 Mar 2023 19:03:47 -0400 Subject: [PATCH 07/79] try this --- .github/workflows/actions.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 94437658..21060a3b 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -41,6 +41,8 @@ jobs: uses: actions/setup-go@v2 with: go-version: "1.20" + - name: deps + run: go mod download - name: test run: make lint # TODO: restore this test From 5f28d83974f45a1ca0a15bd47bd7c723296ce3c9 Mon Sep 17 00:00:00 2001 From: Daniel Metz Date: Mon, 13 Mar 2023 19:05:56 -0400 Subject: [PATCH 08/79] just keep swimming --- .github/workflows/actions.yml | 2 -- boilerplate/lyft/golang_test_targets/Makefile | 7 +------ 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 21060a3b..94437658 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -41,8 +41,6 @@ jobs: uses: actions/setup-go@v2 with: go-version: "1.20" - - name: deps - run: go mod download - name: test run: make lint # TODO: restore this test diff --git a/boilerplate/lyft/golang_test_targets/Makefile b/boilerplate/lyft/golang_test_targets/Makefile index 13e302db..af60af13 100644 --- a/boilerplate/lyft/golang_test_targets/Makefile +++ b/boilerplate/lyft/golang_test_targets/Makefile @@ -1,7 +1,7 @@ .PHONY: lint lint: #lints the package for common code smells which golangci-lint || sh boilerplate/lyft/golang_test_targets/golangci-lint.sh -b $$GOPATH/bin v1.51.2 - golangci-lint run + golangci-lint run --timeout 5m # If code is failing goimports linter, this will fix. # skips 'vendor' @@ -9,11 +9,6 @@ lint: #lints the package for common code smells goimports: @boilerplate/lyft/golang_test_targets/goimports -.PHONY: install -install: #download dependencies (including test deps) for the package - which dep || sh boilerplate/lyft/golang_test_targets/dep_install.sh - dep ensure - .PHONY: test_unit test_unit: go test -cover ./... -race From a0a90a0ba62867e3c2c7dd959bdd7d4f48c0e113 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Tue, 21 Mar 2023 16:36:56 -0700 Subject: [PATCH 09/79] local test working for TestJobCancellationWithoutSavepoint --- integ/README.md | 42 ++++++++++++++++++++++++++++++++++++++++++ integ/test_app.yaml | 5 +++-- integ/utils/utils.go | 2 ++ 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/integ/README.md b/integ/README.md index 8f5ab0e9..29fb4bc2 100644 --- a/integ/README.md +++ b/integ/README.md @@ -79,3 +79,45 @@ variables. Supported options include: You can also pass [gocheck](http://labix.org/gocheck) options to the test runner. Particularly useful is `-check.vv` which will output logs from the operator and Flink pods to help debugging test failures. + +### Minikube Setup + +Ideally we'd use k8s 1.16 to match the deployed k8s version, however, this +is non-trivial due to cgroup configurations. Instead, we will use a version +that is compatible with v1beta1 CRD's which corresponds to <1.22. CRD's v1 +is only available with client >=1.16, however, the client used here is 1.14 +and the upgrade is non-trivial. + + +1. Install Dependencies + Run dep ensure -vendor-only + +2. Create directory /tmp/checkpoints if it does not exist already. + +3. Start minikube + minikube start --kubernetes-version=v1.20.15 --mount --mount-string="/tmp/checkpoints:/tmp/checkpoints" + +4. Proxy minikube + kubectl proxy --port 8001 & + +5. Create the operator image + export DOCKER_IMAGE=flinkk8soperator:$(git rev-parse HEAD) + docker build -t $DOCKER_IMAGE . + minikube image load $DOCKER_IMAGE + +6. Load images for integ test to minikube + docker pull lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 + minikube image load lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 + docker pull lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.2 + minikube image load lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.2 + +7. Configure the test app to use the local image + Add imagePullPolicy: Never to integ/test-app.yaml + +8. Set the following for the Go test: + Package path: github.com/lyft/flinkk8soperator/integ + Env: INTEGRATION=true;OPERATOR_IMAGE=flinkk8soperator:d5883988975fc8fc5d5bd0ccdf9cb035f1f636a4;RUN_DIRECT=true + Program Args: -timeout 40m -check.vv + +9. Between test failures delete all resources if test timed out + kubectl delete namespace flinkoperatortest diff --git a/integ/test_app.yaml b/integ/test_app.yaml index 1d56d4e0..f0a4bd36 100644 --- a/integ/test_app.yaml +++ b/integ/test_app.yaml @@ -7,6 +7,7 @@ metadata: environment: development spec: image: lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 +# imagePullPolicy: Never imagePullSecrets: - name: dockerhub flinkConfig: @@ -27,8 +28,8 @@ spec: requests: memory: "400Mi" cpu: "0.2" - limits: - memory: "400Mi" +# limits: +# memory: "400Mi" volumeMounts: - mountPath: /checkpoints name: checkpoints diff --git a/integ/utils/utils.go b/integ/utils/utils.go index d32a5674..1233c0af 100644 --- a/integ/utils/utils.go +++ b/integ/utils/utils.go @@ -215,7 +215,9 @@ func (f *TestUtil) CreateOperator() error { VolumeMounts: []v1.VolumeMount{ {Name: "config-volume", MountPath: "/etc/flinkk8soperator/config"}, }, + // TODO: revert this ImagePullPolicy: v1.PullIfNotPresent, + // ImagePullPolicy: v1.PullNever, }, }, }, From 0cc931c86677b2c90efbdd51895c88a7045ca8c8 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Tue, 21 Mar 2023 16:40:28 -0700 Subject: [PATCH 10/79] comment back in tests --- .github/workflows/actions.yml | 47 +++++++++++++++++------------------ 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index a7f2c654..f4d144f5 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -47,27 +47,26 @@ jobs: run: make install - name: test run: make lint - # TODO: restore this test - # integration-tests: - # runs-on: ubuntu-18.04 - # defaults: - # run: - # working-directory: go/src/github.com/lyft/flinkk8soperator - # env: - # GOPATH: "/home/runner/work/flinkk8soperator/flinkk8soperator/go/" - # steps: - # - name: checkout - # uses: actions/checkout@v2 - # with: - # fetch-depth: 1 - # path: go/src/github.com/lyft/flinkk8soperator - # - name: install go - # uses: actions/setup-go@v2 - # with: - # go-version: 1.12 - # - name: install - # run: integ/install.sh - # - name: setup - # run: integ/setup.sh - # - name: test - # run: sudo "PATH=$PATH" "GOPATH=$GOPATH" integ/test.sh + integration-tests: + runs-on: ubuntu-18.04 + defaults: + run: + working-directory: go/src/github.com/lyft/flinkk8soperator + env: + GOPATH: "/home/runner/work/flinkk8soperator/flinkk8soperator/go/" + steps: + - name: checkout + uses: actions/checkout@v2 + with: + fetch-depth: 1 + path: go/src/github.com/lyft/flinkk8soperator + - name: install go + uses: actions/setup-go@v2 + with: + go-version: 1.12 + - name: install + run: integ/install.sh + - name: setup + run: integ/setup.sh + - name: test + run: sudo "PATH=$PATH" "GOPATH=$GOPATH" integ/test.sh From 3859dc30fb70f87ea4000255c3e3ef7f23288c34 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Tue, 21 Mar 2023 17:06:49 -0700 Subject: [PATCH 11/79] waits between cancel --- integ/job_cancellation_test.go | 4 +++- integ/main_test.go | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/integ/job_cancellation_test.go b/integ/job_cancellation_test.go index a1a229b1..0eed8895 100644 --- a/integ/job_cancellation_test.go +++ b/integ/job_cancellation_test.go @@ -157,13 +157,15 @@ func (s *IntegSuite) TestCancelledJobWithoutSavepoint(c *C) { job := s.Util.GetJobOverview(currApp) c.Assert(job["status"], Equals, "RUNNING") + time.Sleep(10 * time.Second) + // trigger a cancel on the existing job endpoint := fmt.Sprintf("jobs/%s?mode=cancel", currApp.Status.JobStatus.JobID) _, err = s.Util.FlinkAPIPatch(currApp, endpoint) c.Assert(err, IsNil) // wait a bit - time.Sleep(1 * time.Second) + time.Sleep(10 * time.Second) job = s.Util.GetJobOverview(currApp) c.Assert(job["status"], Equals, "CANCELED") diff --git a/integ/main_test.go b/integ/main_test.go index aa6a57f6..5130985b 100644 --- a/integ/main_test.go +++ b/integ/main_test.go @@ -79,7 +79,7 @@ func (s *IntegSuite) SetUpSuite(c *C) { LimitNamespace: namespace, UseProxy: true, ResyncPeriod: flyteConfig.Duration{Duration: 3 * time.Second}, - MaxErrDuration: flyteConfig.Duration{Duration: 30 * time.Second}, + MaxErrDuration: flyteConfig.Duration{Duration: 60 * time.Second}, MetricsPrefix: "flinkk8soperator", ProxyPort: flyteConfig.Port{Port: 8001}, } From 33234ca49cfd1471117761df91d1968b81b18d3b Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Tue, 21 Mar 2023 17:07:48 -0700 Subject: [PATCH 12/79] 5 min timeout --- integ/test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integ/test.sh b/integ/test.sh index b845df35..9863463a 100755 --- a/integ/test.sh +++ b/integ/test.sh @@ -9,5 +9,5 @@ export OPERATOR_IMAGE=127.0.0.1:32000/flinkk8soperator:local umask 000 cd $(dirname "$0") -go test -timeout 40m -check.vv IntegSuite +go test -timeout 5m -check.vv IntegSuite From a43addff84680587edc9ce8e5cc219b395b62040 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Wed, 22 Mar 2023 07:35:54 -0700 Subject: [PATCH 13/79] additional logging --- integ/job_cancellation_test.go | 4 +++- integ/main_test.go | 21 ++++++++++++++------- integ/operator-test-app/flink-conf.yaml | 2 +- integ/test_app.yaml | 2 +- integ/utils/utils.go | 16 ++++++++++++++-- 5 files changed, 33 insertions(+), 12 deletions(-) diff --git a/integ/job_cancellation_test.go b/integ/job_cancellation_test.go index 0eed8895..2affdfe4 100644 --- a/integ/job_cancellation_test.go +++ b/integ/job_cancellation_test.go @@ -165,7 +165,9 @@ func (s *IntegSuite) TestCancelledJobWithoutSavepoint(c *C) { c.Assert(err, IsNil) // wait a bit - time.Sleep(10 * time.Second) + time.Sleep(20 * time.Second) + + _ = s.Util.GetEvents() job = s.Util.GetJobOverview(currApp) c.Assert(job["status"], Equals, "CANCELED") diff --git a/integ/main_test.go b/integ/main_test.go index 5130985b..ded9e74f 100644 --- a/integ/main_test.go +++ b/integ/main_test.go @@ -111,9 +111,9 @@ func (s *IntegSuite) TearDownSuite(c *C) { func (s *IntegSuite) SetUpTest(c *C) { // create checkpoint directory - if _, err := os.Stat(s.Util.CheckpointDir); os.IsNotExist(err) { - c.Assert(os.Mkdir(s.Util.CheckpointDir, 0777), IsNil) - } + //if _, err := os.Stat(s.Util.CheckpointDir); os.IsNotExist(err) { + // c.Assert(os.Mkdir(s.Util.CheckpointDir, 0777), IsNil) + //} } func (s *IntegSuite) TearDownTest(c *C) { @@ -132,13 +132,20 @@ func (s *IntegSuite) TearDownTest(c *C) { } } + flinkApps, err := s.Util.FlinkApps().List(v1.ListOptions{}) + for _, app := range flinkApps.Items { + fmt.Printf("\n\n######### FlinkApplication %s "+ + "#########\n---------------------------\n", app.Name) + fmt.Println(app) + } + err = s.Util.FlinkApps().DeleteCollection(nil, v1.ListOptions{}) if err != nil { log.Fatalf("Failed to clean up flink applications") } - err = os.RemoveAll(s.Util.CheckpointDir) - if err != nil { - log.Fatalf("Failed to clean up checkpoints directory: %v", err) - } + //err = os.RemoveAll(s.Util.CheckpointDir) + //if err != nil { + // log.Fatalf("Failed to clean up checkpoints directory: %v", err) + //} } diff --git a/integ/operator-test-app/flink-conf.yaml b/integ/operator-test-app/flink-conf.yaml index 7eae05bd..3a60c653 100644 --- a/integ/operator-test-app/flink-conf.yaml +++ b/integ/operator-test-app/flink-conf.yaml @@ -24,7 +24,7 @@ restart-strategy.fixed-delay.attempts: 2147483647 # These parameters control how often TaskManagers try to connect to a JobManager. # These values are set a bit lower than the defaults to make recovery and cluster restarts # a bit faster -taskmanager.maxRegistrationDuration: Inf +taskmanager.maxRegistrationDuration: 3000 s taskmanager.initial-registration-pause: 500 ms taskmanager.max-registration-pause: 5 s taskmanager.refused-registration-pause: 5 s diff --git a/integ/test_app.yaml b/integ/test_app.yaml index f0a4bd36..cb440bf3 100644 --- a/integ/test_app.yaml +++ b/integ/test_app.yaml @@ -7,7 +7,7 @@ metadata: environment: development spec: image: lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 -# imagePullPolicy: Never + imagePullPolicy: Never imagePullSecrets: - name: dockerhub flinkConfig: diff --git a/integ/utils/utils.go b/integ/utils/utils.go index 1233c0af..99ad163a 100644 --- a/integ/utils/utils.go +++ b/integ/utils/utils.go @@ -216,8 +216,8 @@ func (f *TestUtil) CreateOperator() error { {Name: "config-volume", MountPath: "/etc/flinkk8soperator/config"}, }, // TODO: revert this - ImagePullPolicy: v1.PullIfNotPresent, - // ImagePullPolicy: v1.PullNever, + // ImagePullPolicy: v1.PullIfNotPresent, + ImagePullPolicy: v1.PullNever, }, }, }, @@ -287,6 +287,18 @@ func (f *TestUtil) GetLogs(podName string, lines *int64) error { return nil } +func (f *TestUtil) GetEvents() error { + events, err := f.KubeClient.CoreV1().Events("flinkoperatortest").List(metav1.ListOptions{}) + if err != nil { + return err + } + for _, event := range events.Items { + fmt.Printf("\nType: %s, Reason: %s, Object: %s, Message: %s \n", + event.Type, event.Reason, event.Name, event.Message) + } + return nil +} + func (f *TestUtil) TailOperatorLogs() error { var podName string for { From 698bc349cec3719547ff355340a80f14dd6afba5 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Wed, 22 Mar 2023 07:37:33 -0700 Subject: [PATCH 14/79] remove local debug changes --- integ/main_test.go | 14 +++++++------- integ/test_app.yaml | 2 +- integ/utils/utils.go | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/integ/main_test.go b/integ/main_test.go index ded9e74f..3a6ff347 100644 --- a/integ/main_test.go +++ b/integ/main_test.go @@ -111,9 +111,9 @@ func (s *IntegSuite) TearDownSuite(c *C) { func (s *IntegSuite) SetUpTest(c *C) { // create checkpoint directory - //if _, err := os.Stat(s.Util.CheckpointDir); os.IsNotExist(err) { - // c.Assert(os.Mkdir(s.Util.CheckpointDir, 0777), IsNil) - //} + if _, err := os.Stat(s.Util.CheckpointDir); os.IsNotExist(err) { + c.Assert(os.Mkdir(s.Util.CheckpointDir, 0777), IsNil) + } } func (s *IntegSuite) TearDownTest(c *C) { @@ -144,8 +144,8 @@ func (s *IntegSuite) TearDownTest(c *C) { log.Fatalf("Failed to clean up flink applications") } - //err = os.RemoveAll(s.Util.CheckpointDir) - //if err != nil { - // log.Fatalf("Failed to clean up checkpoints directory: %v", err) - //} + err = os.RemoveAll(s.Util.CheckpointDir) + if err != nil { + log.Fatalf("Failed to clean up checkpoints directory: %v", err) + } } diff --git a/integ/test_app.yaml b/integ/test_app.yaml index cb440bf3..04466242 100644 --- a/integ/test_app.yaml +++ b/integ/test_app.yaml @@ -7,7 +7,7 @@ metadata: environment: development spec: image: lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 - imagePullPolicy: Never + # imagePullPolicy: Never imagePullSecrets: - name: dockerhub flinkConfig: diff --git a/integ/utils/utils.go b/integ/utils/utils.go index 99ad163a..5d1e0107 100644 --- a/integ/utils/utils.go +++ b/integ/utils/utils.go @@ -216,8 +216,8 @@ func (f *TestUtil) CreateOperator() error { {Name: "config-volume", MountPath: "/etc/flinkk8soperator/config"}, }, // TODO: revert this - // ImagePullPolicy: v1.PullIfNotPresent, - ImagePullPolicy: v1.PullNever, + ImagePullPolicy: v1.PullIfNotPresent, + // ImagePullPolicy: v1.PullNever, }, }, }, From 4e81a8d5754ac5c12cb1aab7ab73a3941b0aedf4 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Thu, 23 Mar 2023 11:25:09 -0700 Subject: [PATCH 15/79] test app on flink 1.11 --- integ/main_test.go | 14 +++++++------- integ/operator-test-app/Dockerfile | 4 ++-- integ/operator-test-app/flink-conf.yaml | 2 +- integ/operator-test-app/pom.xml | 4 ++-- integ/setup.sh | 5 +++++ integ/simple_test.go | 2 +- integ/test_app.yaml | 22 +++++++++++++++++----- 7 files changed, 35 insertions(+), 18 deletions(-) diff --git a/integ/main_test.go b/integ/main_test.go index 3a6ff347..ded9e74f 100644 --- a/integ/main_test.go +++ b/integ/main_test.go @@ -111,9 +111,9 @@ func (s *IntegSuite) TearDownSuite(c *C) { func (s *IntegSuite) SetUpTest(c *C) { // create checkpoint directory - if _, err := os.Stat(s.Util.CheckpointDir); os.IsNotExist(err) { - c.Assert(os.Mkdir(s.Util.CheckpointDir, 0777), IsNil) - } + //if _, err := os.Stat(s.Util.CheckpointDir); os.IsNotExist(err) { + // c.Assert(os.Mkdir(s.Util.CheckpointDir, 0777), IsNil) + //} } func (s *IntegSuite) TearDownTest(c *C) { @@ -144,8 +144,8 @@ func (s *IntegSuite) TearDownTest(c *C) { log.Fatalf("Failed to clean up flink applications") } - err = os.RemoveAll(s.Util.CheckpointDir) - if err != nil { - log.Fatalf("Failed to clean up checkpoints directory: %v", err) - } + //err = os.RemoveAll(s.Util.CheckpointDir) + //if err != nil { + // log.Fatalf("Failed to clean up checkpoints directory: %v", err) + //} } diff --git a/integ/operator-test-app/Dockerfile b/integ/operator-test-app/Dockerfile index 6a7fc27e..e42031b9 100644 --- a/integ/operator-test-app/Dockerfile +++ b/integ/operator-test-app/Dockerfile @@ -9,7 +9,7 @@ ENV PATH=$FLINK_HOME/bin:$HADOOP_HOME/bin:$MAVEN_HOME/bin:$PATH COPY . /code # Configure Flink version -ENV FLINK_VERSION=1.8.1 \ +ENV FLINK_VERSION=1.11.6 \ HADOOP_SCALA_VARIANT=scala_2.12 # Install dependencies @@ -51,7 +51,7 @@ RUN groupadd --system --gid=9999 flink && \ WORKDIR $FLINK_HOME ENV FLINK_URL_FILE_PATH=flink/flink-${FLINK_VERSION}/flink-${FLINK_VERSION}-bin-${HADOOP_SCALA_VARIANT}.tgz -ENV FLINK_TGZ_URL=https://mirrors.ocf.berkeley.edu/apache/$FLINK_URL_FILE_PATH +ENV FLINK_TGZ_URL=https://archive.apache.org/dist/$FLINK_URL_FILE_PATH # Install Flink RUN set -ex; \ diff --git a/integ/operator-test-app/flink-conf.yaml b/integ/operator-test-app/flink-conf.yaml index 3a60c653..53d9515d 100644 --- a/integ/operator-test-app/flink-conf.yaml +++ b/integ/operator-test-app/flink-conf.yaml @@ -24,7 +24,7 @@ restart-strategy.fixed-delay.attempts: 2147483647 # These parameters control how often TaskManagers try to connect to a JobManager. # These values are set a bit lower than the defaults to make recovery and cluster restarts # a bit faster -taskmanager.maxRegistrationDuration: 3000 s +taskmanager.maxRegistrationDuration: inf taskmanager.initial-registration-pause: 500 ms taskmanager.max-registration-pause: 5 s taskmanager.refused-registration-pause: 5 s diff --git a/integ/operator-test-app/pom.xml b/integ/operator-test-app/pom.xml index 54ed3ea9..be20aac8 100644 --- a/integ/operator-test-app/pom.xml +++ b/integ/operator-test-app/pom.xml @@ -19,12 +19,12 @@ org.apache.flink flink-java - 1.8.1 + 1.11.6 org.apache.flink flink-streaming-java_2.11 - 1.8.1 + 1.11.6 diff --git a/integ/setup.sh b/integ/setup.sh index c13b82bd..8ce6a7aa 100755 --- a/integ/setup.sh +++ b/integ/setup.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash +export TEST_APP_IMAGE=operator-test-app:$(git rev-parse HEAD) +microk8s.docker build -f integ/Dockerfile -t ${TEST_APP_IMAGE} +microk8s.docker tag $TEST_APP_IMAGE 127.0.0.1:3200/flink-test-app:local.1 +microk8s.docker tag $TEST_APP_IMAGE 127.0.0.1:3200/flink-test-app:local.2 + export DOCKER_IMAGE=flinkk8soperator:$(git rev-parse HEAD) export OPERATOR_IMAGE=127.0.0.1:32000/flinkk8soperator:local diff --git a/integ/simple_test.go b/integ/simple_test.go index 636235b5..4356ab54 100644 --- a/integ/simple_test.go +++ b/integ/simple_test.go @@ -15,7 +15,7 @@ import ( v1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) -const NewImage = "lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.2" +const NewImage = "127.0.0.1:3200/flink-test-app:local.2" func updateAndValidate(c *C, s *IntegSuite, name string, updateFn func(app *v1beta1.FlinkApplication), failurePhase v1beta1.FlinkApplicationPhase) *v1beta1.FlinkApplication { app, err := s.Util.Update(name, updateFn) diff --git a/integ/test_app.yaml b/integ/test_app.yaml index 04466242..fa2970f0 100644 --- a/integ/test_app.yaml +++ b/integ/test_app.yaml @@ -6,11 +6,23 @@ metadata: labels: environment: development spec: - image: lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 - # imagePullPolicy: Never + image: 127.0.0.1:3200/flink-test-app:local.1 + # image: operator-test-app:test1 + # image: lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 + imagePullPolicy: Never imagePullSecrets: - name: dockerhub flinkConfig: + jobmanager.memory.jvm-overhead.min: "50 mb" + jobmanager.memory.jvm-metaspace.size: "80 mb" + jobmanager.memory.off-heap.size: "40 mb" + taskmanager.memory.jvm-overhead.min: "30 mb" + taskmanager.memory.jvm-metaspace.size: "50 mb" + taskmanager.memory.off-heap.size: "20 mb" + taskmanager.memory.task.heap.size: "20 mb" + taskmanager.memory.network.min: "20 mb" + taskmanager.memory.framework.heap.size: "20 mb" + taskmanager.memory.framework.off-heap.size: "20 mb" state.backend.fs.checkpointdir: file:///checkpoints/flink/checkpoints state.checkpoints.dir: file:///checkpoints/flink/externalized-checkpoints state.savepoints.dir: file:///checkpoints/flink/savepoints @@ -18,7 +30,7 @@ spec: systemMemoryFraction: 0.2 resources: requests: - memory: "200Mi" + memory: "400Mi" cpu: "0.2" replicas: 1 taskManagerConfig: @@ -26,10 +38,10 @@ spec: systemMemoryFraction: 0.5 resources: requests: - memory: "400Mi" + memory: "500Mi" cpu: "0.2" # limits: -# memory: "400Mi" +# memory: "500Mi" volumeMounts: - mountPath: /checkpoints name: checkpoints From cb21077e7323ed478d53dd0b9aff81ee85a9eb5e Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Thu, 23 Mar 2023 11:26:18 -0700 Subject: [PATCH 16/79] remove local changes --- integ/main_test.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/integ/main_test.go b/integ/main_test.go index ded9e74f..3a6ff347 100644 --- a/integ/main_test.go +++ b/integ/main_test.go @@ -111,9 +111,9 @@ func (s *IntegSuite) TearDownSuite(c *C) { func (s *IntegSuite) SetUpTest(c *C) { // create checkpoint directory - //if _, err := os.Stat(s.Util.CheckpointDir); os.IsNotExist(err) { - // c.Assert(os.Mkdir(s.Util.CheckpointDir, 0777), IsNil) - //} + if _, err := os.Stat(s.Util.CheckpointDir); os.IsNotExist(err) { + c.Assert(os.Mkdir(s.Util.CheckpointDir, 0777), IsNil) + } } func (s *IntegSuite) TearDownTest(c *C) { @@ -144,8 +144,8 @@ func (s *IntegSuite) TearDownTest(c *C) { log.Fatalf("Failed to clean up flink applications") } - //err = os.RemoveAll(s.Util.CheckpointDir) - //if err != nil { - // log.Fatalf("Failed to clean up checkpoints directory: %v", err) - //} + err = os.RemoveAll(s.Util.CheckpointDir) + if err != nil { + log.Fatalf("Failed to clean up checkpoints directory: %v", err) + } } From 8a7811b24795691454205dc4b36b1d13388580bf Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Thu, 23 Mar 2023 11:40:02 -0700 Subject: [PATCH 17/79] fix docker location --- integ/operator-test-app/flink-conf.yaml | 2 +- integ/setup.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/integ/operator-test-app/flink-conf.yaml b/integ/operator-test-app/flink-conf.yaml index 53d9515d..7eae05bd 100644 --- a/integ/operator-test-app/flink-conf.yaml +++ b/integ/operator-test-app/flink-conf.yaml @@ -24,7 +24,7 @@ restart-strategy.fixed-delay.attempts: 2147483647 # These parameters control how often TaskManagers try to connect to a JobManager. # These values are set a bit lower than the defaults to make recovery and cluster restarts # a bit faster -taskmanager.maxRegistrationDuration: inf +taskmanager.maxRegistrationDuration: Inf taskmanager.initial-registration-pause: 500 ms taskmanager.max-registration-pause: 5 s taskmanager.refused-registration-pause: 5 s diff --git a/integ/setup.sh b/integ/setup.sh index 8ce6a7aa..cd15e9eb 100755 --- a/integ/setup.sh +++ b/integ/setup.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash export TEST_APP_IMAGE=operator-test-app:$(git rev-parse HEAD) -microk8s.docker build -f integ/Dockerfile -t ${TEST_APP_IMAGE} +microk8s.docker build -f integ/operator-test-app/Dockerfile -t ${TEST_APP_IMAGE} . microk8s.docker tag $TEST_APP_IMAGE 127.0.0.1:3200/flink-test-app:local.1 microk8s.docker tag $TEST_APP_IMAGE 127.0.0.1:3200/flink-test-app:local.2 From 68b23305fd46391ec7e666ec1b57ec5a028047a4 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Thu, 23 Mar 2023 11:51:37 -0700 Subject: [PATCH 18/79] move to proper dir --- integ/setup.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/integ/setup.sh b/integ/setup.sh index cd15e9eb..2ef071f4 100755 --- a/integ/setup.sh +++ b/integ/setup.sh @@ -1,9 +1,11 @@ #!/usr/bin/env bash +cd integ/operator-test-app export TEST_APP_IMAGE=operator-test-app:$(git rev-parse HEAD) -microk8s.docker build -f integ/operator-test-app/Dockerfile -t ${TEST_APP_IMAGE} . +docker build -t ${TEST_APP_IMAGE} . microk8s.docker tag $TEST_APP_IMAGE 127.0.0.1:3200/flink-test-app:local.1 microk8s.docker tag $TEST_APP_IMAGE 127.0.0.1:3200/flink-test-app:local.2 +cd ../../ export DOCKER_IMAGE=flinkk8soperator:$(git rev-parse HEAD) export OPERATOR_IMAGE=127.0.0.1:32000/flinkk8soperator:local From b0eede88b6283e1f0f1f3a89e5839d8e9dd4fb77 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Thu, 23 Mar 2023 15:15:20 -0700 Subject: [PATCH 19/79] break waiting after 30s so errors show --- integ/job_cancellation_test.go | 20 ++++++++++++++++++++ integ/test_app.yaml | 2 +- integ/utils/utils.go | 8 +++++++- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/integ/job_cancellation_test.go b/integ/job_cancellation_test.go index 2affdfe4..cdc088dc 100644 --- a/integ/job_cancellation_test.go +++ b/integ/job_cancellation_test.go @@ -150,6 +150,26 @@ func (s *IntegSuite) TestCancelledJobWithoutSavepoint(c *C) { Commentf("Failed to create flink application")) c.Assert(s.Util.WaitForPhase(config.Name, v1beta1.FlinkApplicationRunning, v1beta1.FlinkApplicationDeployFailed), IsNil) + //for { + // app, err := s.Util.FlinkApps().Get(config.Name, metav1.GetOptions{}) + // + // if err != nil { + // log.Errorf("Application failed to running %s", err) + // } + // + // if app.Status.Phase == v1beta1.FlinkApplicationRunning { + // break + // } + // + // if app.Status.Phase == v1beta1.FlinkApplicationDeployFailed { + // log.Errorf("application entered %s phase", v1beta1.FlinkApplicationDeployFailed) + // } + // + // time.Sleep(60 * time.Second) + // + // + //} + c.Assert(s.Util.WaitForAllTasksRunning(config.Name), IsNil) currApp, _ := s.Util.GetFlinkApplication(config.Name) diff --git a/integ/test_app.yaml b/integ/test_app.yaml index fa2970f0..7ea20327 100644 --- a/integ/test_app.yaml +++ b/integ/test_app.yaml @@ -9,7 +9,7 @@ spec: image: 127.0.0.1:3200/flink-test-app:local.1 # image: operator-test-app:test1 # image: lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 - imagePullPolicy: Never + imagePullPolicy: IfNotPresent imagePullSecrets: - name: dockerhub flinkConfig: diff --git a/integ/utils/utils.go b/integ/utils/utils.go index 5d1e0107..d4d35036 100644 --- a/integ/utils/utils.go +++ b/integ/utils/utils.go @@ -375,6 +375,7 @@ func (f *TestUtil) GetFlinkApplication(name string) (*flinkapp.FlinkApplication, } func (f *TestUtil) WaitForPhase(name string, phase flinkapp.FlinkApplicationPhase, failurePhases ...flinkapp.FlinkApplicationPhase) error { + waitTime := 0 for { app, err := f.FlinkApps().Get(name, metav1.GetOptions{}) @@ -392,7 +393,12 @@ func (f *TestUtil) WaitForPhase(name string, phase flinkapp.FlinkApplicationPhas } } - time.Sleep(200 * time.Millisecond) + waitTime += 1 + time.Sleep(1 * time.Second) + + if waitTime > 30 { + return errors.New("did not get to phase Running") + } } } From 490f38593059445ece464793ecad15f5dc834b3a Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Thu, 23 Mar 2023 15:28:15 -0700 Subject: [PATCH 20/79] log all events at failure --- integ/main_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/integ/main_test.go b/integ/main_test.go index 3a6ff347..c7a0cbd6 100644 --- a/integ/main_test.go +++ b/integ/main_test.go @@ -139,6 +139,8 @@ func (s *IntegSuite) TearDownTest(c *C) { fmt.Println(app) } + _ = s.Util.GetEvents() + err = s.Util.FlinkApps().DeleteCollection(nil, v1.ListOptions{}) if err != nil { log.Fatalf("Failed to clean up flink applications") From f821e91daf4a014b0b0bb00e624cf93e104914a1 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Thu, 23 Mar 2023 15:30:17 -0700 Subject: [PATCH 21/79] forgot to add microk8s docker build and push --- integ/setup.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/integ/setup.sh b/integ/setup.sh index 2ef071f4..c049de3f 100755 --- a/integ/setup.sh +++ b/integ/setup.sh @@ -2,9 +2,12 @@ cd integ/operator-test-app export TEST_APP_IMAGE=operator-test-app:$(git rev-parse HEAD) -docker build -t ${TEST_APP_IMAGE} . +microk8s.docker build -t ${TEST_APP_IMAGE} . microk8s.docker tag $TEST_APP_IMAGE 127.0.0.1:3200/flink-test-app:local.1 microk8s.docker tag $TEST_APP_IMAGE 127.0.0.1:3200/flink-test-app:local.2 +microk8s.docker push 127.0.0.1:3200/flink-test-app:local.1 +microk8s.docker push 127.0.0.1:3200/flink-test-app:local.2 + cd ../../ export DOCKER_IMAGE=flinkk8soperator:$(git rev-parse HEAD) From 3e6dbfe168d73df12b6e0a2debf1f33e1be138c8 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Thu, 23 Mar 2023 15:46:34 -0700 Subject: [PATCH 22/79] wait longer for running app --- integ/main_test.go | 2 ++ integ/utils/utils.go | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/integ/main_test.go b/integ/main_test.go index c7a0cbd6..5fc1ff0a 100644 --- a/integ/main_test.go +++ b/integ/main_test.go @@ -139,6 +139,8 @@ func (s *IntegSuite) TearDownTest(c *C) { fmt.Println(app) } + fmt.Printf("\n\n######### K8s Events" + + "#########\n---------------------------\n") _ = s.Util.GetEvents() err = s.Util.FlinkApps().DeleteCollection(nil, v1.ListOptions{}) diff --git a/integ/utils/utils.go b/integ/utils/utils.go index d4d35036..cdef311b 100644 --- a/integ/utils/utils.go +++ b/integ/utils/utils.go @@ -396,7 +396,7 @@ func (f *TestUtil) WaitForPhase(name string, phase flinkapp.FlinkApplicationPhas waitTime += 1 time.Sleep(1 * time.Second) - if waitTime > 30 { + if waitTime > 180 { return errors.New("did not get to phase Running") } } From 5101df2f9f876b46a5741590c87137b14069f19b Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Thu, 23 Mar 2023 16:11:24 -0700 Subject: [PATCH 23/79] tm logs first --- integ/main_test.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/integ/main_test.go b/integ/main_test.go index 5fc1ff0a..98a4643a 100644 --- a/integ/main_test.go +++ b/integ/main_test.go @@ -117,12 +117,6 @@ func (s *IntegSuite) SetUpTest(c *C) { } func (s *IntegSuite) TearDownTest(c *C) { - jm, err := s.Util.GetJobManagerPod() - if err == nil { - fmt.Printf("\n\n######### JobManager logs for debugging #########\n---------------------------\n") - _ = s.Util.GetLogs(jm, nil) - } - tms, err := s.Util.GetTaskManagerPods() if err == nil { for i, tm := range tms { @@ -132,6 +126,12 @@ func (s *IntegSuite) TearDownTest(c *C) { } } + jm, err := s.Util.GetJobManagerPod() + if err == nil { + fmt.Printf("\n\n######### JobManager logs for debugging #########\n---------------------------\n") + _ = s.Util.GetLogs(jm, nil) + } + flinkApps, err := s.Util.FlinkApps().List(v1.ListOptions{}) for _, app := range flinkApps.Items { fmt.Printf("\n\n######### FlinkApplication %s "+ From e904616f2eb50fa6077ff515374eb0c04759f735 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Thu, 23 Mar 2023 16:31:03 -0700 Subject: [PATCH 24/79] see if microk8s can take the memory --- integ/test_app.yaml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/integ/test_app.yaml b/integ/test_app.yaml index 7ea20327..ec6b2151 100644 --- a/integ/test_app.yaml +++ b/integ/test_app.yaml @@ -13,16 +13,16 @@ spec: imagePullSecrets: - name: dockerhub flinkConfig: - jobmanager.memory.jvm-overhead.min: "50 mb" - jobmanager.memory.jvm-metaspace.size: "80 mb" - jobmanager.memory.off-heap.size: "40 mb" - taskmanager.memory.jvm-overhead.min: "30 mb" - taskmanager.memory.jvm-metaspace.size: "50 mb" - taskmanager.memory.off-heap.size: "20 mb" - taskmanager.memory.task.heap.size: "20 mb" - taskmanager.memory.network.min: "20 mb" - taskmanager.memory.framework.heap.size: "20 mb" - taskmanager.memory.framework.off-heap.size: "20 mb" +# jobmanager.memory.jvm-overhead.min: "50 mb" +# jobmanager.memory.jvm-metaspace.size: "80 mb" +# jobmanager.memory.off-heap.size: "40 mb" +# taskmanager.memory.jvm-overhead.min: "30 mb" +# taskmanager.memory.jvm-metaspace.size: "50 mb" +# taskmanager.memory.off-heap.size: "20 mb" +# taskmanager.memory.task.heap.size: "20 mb" +# taskmanager.memory.network.min: "20 mb" +# taskmanager.memory.framework.heap.size: "20 mb" +# taskmanager.memory.framework.off-heap.size: "20 mb" state.backend.fs.checkpointdir: file:///checkpoints/flink/checkpoints state.checkpoints.dir: file:///checkpoints/flink/externalized-checkpoints state.savepoints.dir: file:///checkpoints/flink/savepoints @@ -30,7 +30,7 @@ spec: systemMemoryFraction: 0.2 resources: requests: - memory: "400Mi" + memory: "1Gi" cpu: "0.2" replicas: 1 taskManagerConfig: @@ -38,7 +38,7 @@ spec: systemMemoryFraction: 0.5 resources: requests: - memory: "500Mi" + memory: "2Gi" cpu: "0.2" # limits: # memory: "500Mi" From 0196be5a18a01835dc3a1df9da3e19cd2a593276 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Thu, 23 Mar 2023 18:35:01 -0700 Subject: [PATCH 25/79] bump memory for tm due to 20mb allocated to task heap --- integ/test_app.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integ/test_app.yaml b/integ/test_app.yaml index ec6b2151..a1b36129 100644 --- a/integ/test_app.yaml +++ b/integ/test_app.yaml @@ -38,7 +38,7 @@ spec: systemMemoryFraction: 0.5 resources: requests: - memory: "2Gi" + memory: "3Gi" cpu: "0.2" # limits: # memory: "500Mi" From abc7186fb5e566789043be43b234b3958eb274ed Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Thu, 23 Mar 2023 18:59:47 -0700 Subject: [PATCH 26/79] increase flink tm heap size --- integ/test_app.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/integ/test_app.yaml b/integ/test_app.yaml index a1b36129..0902bf93 100644 --- a/integ/test_app.yaml +++ b/integ/test_app.yaml @@ -19,7 +19,7 @@ spec: # taskmanager.memory.jvm-overhead.min: "30 mb" # taskmanager.memory.jvm-metaspace.size: "50 mb" # taskmanager.memory.off-heap.size: "20 mb" -# taskmanager.memory.task.heap.size: "20 mb" + taskmanager.memory.task.heap.size: "100 mb" # taskmanager.memory.network.min: "20 mb" # taskmanager.memory.framework.heap.size: "20 mb" # taskmanager.memory.framework.off-heap.size: "20 mb" @@ -38,7 +38,7 @@ spec: systemMemoryFraction: 0.5 resources: requests: - memory: "3Gi" + memory: "2Gi" cpu: "0.2" # limits: # memory: "500Mi" From 3965f45a730f3b53fef9ecf479d6b618c32fe54a Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Thu, 23 Mar 2023 19:22:10 -0700 Subject: [PATCH 27/79] set memory param. likely oom on second cluster --- integ/test_app.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/integ/test_app.yaml b/integ/test_app.yaml index 0902bf93..3fb0aba1 100644 --- a/integ/test_app.yaml +++ b/integ/test_app.yaml @@ -20,7 +20,8 @@ spec: # taskmanager.memory.jvm-metaspace.size: "50 mb" # taskmanager.memory.off-heap.size: "20 mb" taskmanager.memory.task.heap.size: "100 mb" -# taskmanager.memory.network.min: "20 mb" + taskmanager.memory.managed.fraction: 0.2 + # taskmanager.memory.network.min: "20 mb" # taskmanager.memory.framework.heap.size: "20 mb" # taskmanager.memory.framework.off-heap.size: "20 mb" state.backend.fs.checkpointdir: file:///checkpoints/flink/checkpoints From 74bebca4ec561ce8d60bfcfc6d5f588c899fb716 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Thu, 23 Mar 2023 19:25:16 -0700 Subject: [PATCH 28/79] fix typo --- integ/simple_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/integ/simple_test.go b/integ/simple_test.go index 4356ab54..0fab94b7 100644 --- a/integ/simple_test.go +++ b/integ/simple_test.go @@ -17,6 +17,8 @@ import ( const NewImage = "127.0.0.1:3200/flink-test-app:local.2" +// const NewImage = "operator-test-app:test1.2" + func updateAndValidate(c *C, s *IntegSuite, name string, updateFn func(app *v1beta1.FlinkApplication), failurePhase v1beta1.FlinkApplicationPhase) *v1beta1.FlinkApplication { app, err := s.Util.Update(name, updateFn) c.Assert(err, IsNil) From bca42b4536e74b5ca0cf5ca07cf15263e4120d77 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Fri, 24 Mar 2023 06:35:44 -0700 Subject: [PATCH 29/79] change memory configs --- integ/test_app.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/integ/test_app.yaml b/integ/test_app.yaml index 3fb0aba1..10ab0a6f 100644 --- a/integ/test_app.yaml +++ b/integ/test_app.yaml @@ -19,8 +19,9 @@ spec: # taskmanager.memory.jvm-overhead.min: "30 mb" # taskmanager.memory.jvm-metaspace.size: "50 mb" # taskmanager.memory.off-heap.size: "20 mb" - taskmanager.memory.task.heap.size: "100 mb" - taskmanager.memory.managed.fraction: 0.2 + taskmanager.memory.task.heap.size: "80 mb" + taskmanager.memory.managed.fraction: 0.1 + taskmanager.memory.task.off-heap.size: "100 mb" # taskmanager.memory.network.min: "20 mb" # taskmanager.memory.framework.heap.size: "20 mb" # taskmanager.memory.framework.off-heap.size: "20 mb" @@ -36,7 +37,7 @@ spec: replicas: 1 taskManagerConfig: taskSlots: 2 - systemMemoryFraction: 0.5 + systemMemoryFraction: 0.4 resources: requests: memory: "2Gi" From 02ebaefd4a88cf7a75173f3f1e33868e08714d1f Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Fri, 24 Mar 2023 12:14:10 -0700 Subject: [PATCH 30/79] add limits to containers. add concurrency limit to go test --- integ/simple_test.go | 3 ++- integ/test.sh | 2 +- integ/test_app.yaml | 26 ++++++++++++++++---------- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/integ/simple_test.go b/integ/simple_test.go index 0fab94b7..e8375aa7 100644 --- a/integ/simple_test.go +++ b/integ/simple_test.go @@ -15,9 +15,10 @@ import ( v1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) -const NewImage = "127.0.0.1:3200/flink-test-app:local.2" +// const NewImage = "127.0.0.1:3200/flink-test-app:local.2" // const NewImage = "operator-test-app:test1.2" +const NewImage = "lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.2" func updateAndValidate(c *C, s *IntegSuite, name string, updateFn func(app *v1beta1.FlinkApplication), failurePhase v1beta1.FlinkApplicationPhase) *v1beta1.FlinkApplication { app, err := s.Util.Update(name, updateFn) diff --git a/integ/test.sh b/integ/test.sh index 9863463a..626fd42e 100755 --- a/integ/test.sh +++ b/integ/test.sh @@ -9,5 +9,5 @@ export OPERATOR_IMAGE=127.0.0.1:32000/flinkk8soperator:local umask 000 cd $(dirname "$0") -go test -timeout 5m -check.vv IntegSuite +go test -p 1 -timeout 10m -check.vv IntegSuite diff --git a/integ/test_app.yaml b/integ/test_app.yaml index 10ab0a6f..89a4d354 100644 --- a/integ/test_app.yaml +++ b/integ/test_app.yaml @@ -6,9 +6,9 @@ metadata: labels: environment: development spec: - image: 127.0.0.1:3200/flink-test-app:local.1 + # image: 127.0.0.1:3200/flink-test-app:local.1 # image: operator-test-app:test1 - # image: lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 + image: lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 imagePullPolicy: IfNotPresent imagePullSecrets: - name: dockerhub @@ -19,9 +19,13 @@ spec: # taskmanager.memory.jvm-overhead.min: "30 mb" # taskmanager.memory.jvm-metaspace.size: "50 mb" # taskmanager.memory.off-heap.size: "20 mb" - taskmanager.memory.task.heap.size: "80 mb" - taskmanager.memory.managed.fraction: 0.1 - taskmanager.memory.task.off-heap.size: "100 mb" + +# +# taskmanager.memory.task.heap.size: "80 mb" +# taskmanager.memory.managed.fraction: 0.1 +# taskmanager.memory.task.off-heap.size: "100 mb" + + # taskmanager.memory.network.min: "20 mb" # taskmanager.memory.framework.heap.size: "20 mb" # taskmanager.memory.framework.off-heap.size: "20 mb" @@ -32,18 +36,20 @@ spec: systemMemoryFraction: 0.2 resources: requests: - memory: "1Gi" + memory: "200Mi" cpu: "0.2" + limits: + memory: "400Mi" replicas: 1 taskManagerConfig: taskSlots: 2 - systemMemoryFraction: 0.4 + systemMemoryFraction: 0.5 resources: requests: - memory: "2Gi" + memory: "400Mi" cpu: "0.2" -# limits: -# memory: "500Mi" + limits: + memory: "800Mi" volumeMounts: - mountPath: /checkpoints name: checkpoints From c469f1089b1c72ed740509787c1310cb6365722a Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Fri, 24 Mar 2023 12:34:14 -0700 Subject: [PATCH 31/79] limit cpu --- integ/test_app.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/integ/test_app.yaml b/integ/test_app.yaml index 89a4d354..83b29c48 100644 --- a/integ/test_app.yaml +++ b/integ/test_app.yaml @@ -36,20 +36,22 @@ spec: systemMemoryFraction: 0.2 resources: requests: - memory: "200Mi" + memory: "400Mi" cpu: "0.2" limits: memory: "400Mi" + cpu: "0.2" replicas: 1 taskManagerConfig: taskSlots: 2 systemMemoryFraction: 0.5 resources: requests: - memory: "400Mi" + memory: "800Mi" cpu: "0.2" limits: memory: "800Mi" + cpu: "0.2" volumeMounts: - mountPath: /checkpoints name: checkpoints From bd5a7b769c4989f0c8d38db34d0c1aeda34946db Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Fri, 24 Mar 2023 13:15:17 -0700 Subject: [PATCH 32/79] describe k8s resources on failure --- integ/job_cancellation_test.go | 9 ++++++++- integ/main_test.go | 11 ----------- integ/utils/utils.go | 29 ++++++++++++++++------------- 3 files changed, 24 insertions(+), 25 deletions(-) diff --git a/integ/job_cancellation_test.go b/integ/job_cancellation_test.go index cdc088dc..22bcbb65 100644 --- a/integ/job_cancellation_test.go +++ b/integ/job_cancellation_test.go @@ -187,7 +187,14 @@ func (s *IntegSuite) TestCancelledJobWithoutSavepoint(c *C) { // wait a bit time.Sleep(20 * time.Second) - _ = s.Util.GetEvents() + err = s.Util.ExecuteCommand("kubectl", "describe", "nodes") + c.Assert(err, IsNil) + + err = s.Util.ExecuteCommand("kubectl", "describe", "pods", "-n", "flinkoperatortest") + c.Assert(err, IsNil) + + err = s.Util.ExecuteCommand("kubectl", "describe", "flinkapplications", "-n", "flinkoperatortest") + c.Assert(err, IsNil) job = s.Util.GetJobOverview(currApp) c.Assert(job["status"], Equals, "CANCELED") diff --git a/integ/main_test.go b/integ/main_test.go index 98a4643a..f6d8c46d 100644 --- a/integ/main_test.go +++ b/integ/main_test.go @@ -132,17 +132,6 @@ func (s *IntegSuite) TearDownTest(c *C) { _ = s.Util.GetLogs(jm, nil) } - flinkApps, err := s.Util.FlinkApps().List(v1.ListOptions{}) - for _, app := range flinkApps.Items { - fmt.Printf("\n\n######### FlinkApplication %s "+ - "#########\n---------------------------\n", app.Name) - fmt.Println(app) - } - - fmt.Printf("\n\n######### K8s Events" + - "#########\n---------------------------\n") - _ = s.Util.GetEvents() - err = s.Util.FlinkApps().DeleteCollection(nil, v1.ListOptions{}) if err != nil { log.Fatalf("Failed to clean up flink applications") diff --git a/integ/utils/utils.go b/integ/utils/utils.go index cdef311b..ac8ef1c9 100644 --- a/integ/utils/utils.go +++ b/integ/utils/utils.go @@ -6,6 +6,7 @@ import ( "fmt" "io" "os" + "os/exec" "path/filepath" "strings" "time" @@ -99,7 +100,6 @@ func (f *TestUtil) Cleanup() { } } } - err = f.KubeClient.CoreV1().Namespaces().Delete(f.Namespace.Name, &metav1.DeleteOptions{}) if err != nil { log.Errorf("Failed to clean up after test: %v", err) @@ -107,6 +107,21 @@ func (f *TestUtil) Cleanup() { } } +func (f *TestUtil) ExecuteCommand(name string, arg ...string) error { + cmd := exec.Command(name, arg...) + stdout, err := cmd.Output() + + if err != nil { + fmt.Println(err.Error()) + return err + } + + // Print the output + fmt.Println(string(stdout)) + + return nil +} + func getFile(relativePath string) (*os.File, error) { path, err := filepath.Abs(relativePath) if err != nil { @@ -287,18 +302,6 @@ func (f *TestUtil) GetLogs(podName string, lines *int64) error { return nil } -func (f *TestUtil) GetEvents() error { - events, err := f.KubeClient.CoreV1().Events("flinkoperatortest").List(metav1.ListOptions{}) - if err != nil { - return err - } - for _, event := range events.Items { - fmt.Printf("\nType: %s, Reason: %s, Object: %s, Message: %s \n", - event.Type, event.Reason, event.Name, event.Message) - } - return nil -} - func (f *TestUtil) TailOperatorLogs() error { var podName string for { From b3fabc61e9b62d938e877061557cda04efc437f5 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Fri, 24 Mar 2023 13:16:14 -0700 Subject: [PATCH 33/79] add get pods to view restarts --- integ/job_cancellation_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/integ/job_cancellation_test.go b/integ/job_cancellation_test.go index 22bcbb65..a6b311b4 100644 --- a/integ/job_cancellation_test.go +++ b/integ/job_cancellation_test.go @@ -190,6 +190,9 @@ func (s *IntegSuite) TestCancelledJobWithoutSavepoint(c *C) { err = s.Util.ExecuteCommand("kubectl", "describe", "nodes") c.Assert(err, IsNil) + err = s.Util.ExecuteCommand("kubectl", "get", "pods", "-n", "flinkoperatortest") + c.Assert(err, IsNil) + err = s.Util.ExecuteCommand("kubectl", "describe", "pods", "-n", "flinkoperatortest") c.Assert(err, IsNil) From f425da763d599e26f227f9af2e4e632cb3af1555 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Fri, 24 Mar 2023 16:05:57 -0700 Subject: [PATCH 34/79] try with minikube --- .github/workflows/actions.yml | 6 +++--- integ/main_test.go | 14 +++++++------- integ/minikube_install.sh | 12 ++++++++++++ integ/minikube_setup.sh | 24 ++++++++++++++++++++++++ integ/minikube_test.sh | 12 ++++++++++++ integ/simple_test.go | 4 ++-- integ/test_app.yaml | 8 ++++---- 7 files changed, 64 insertions(+), 16 deletions(-) create mode 100644 integ/minikube_install.sh create mode 100644 integ/minikube_setup.sh create mode 100644 integ/minikube_test.sh diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index f4d144f5..8be157d3 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -65,8 +65,8 @@ jobs: with: go-version: 1.12 - name: install - run: integ/install.sh + run: integ/minikube_install.sh - name: setup - run: integ/setup.sh + run: integ/minikube_setup.sh - name: test - run: sudo "PATH=$PATH" "GOPATH=$GOPATH" integ/test.sh + run: sudo "PATH=$PATH" "GOPATH=$GOPATH" integ/minikube_test.sh diff --git a/integ/main_test.go b/integ/main_test.go index f6d8c46d..afd7f7eb 100644 --- a/integ/main_test.go +++ b/integ/main_test.go @@ -111,9 +111,9 @@ func (s *IntegSuite) TearDownSuite(c *C) { func (s *IntegSuite) SetUpTest(c *C) { // create checkpoint directory - if _, err := os.Stat(s.Util.CheckpointDir); os.IsNotExist(err) { - c.Assert(os.Mkdir(s.Util.CheckpointDir, 0777), IsNil) - } + //if _, err := os.Stat(s.Util.CheckpointDir); os.IsNotExist(err) { + // c.Assert(os.Mkdir(s.Util.CheckpointDir, 0777), IsNil) + //} } func (s *IntegSuite) TearDownTest(c *C) { @@ -137,8 +137,8 @@ func (s *IntegSuite) TearDownTest(c *C) { log.Fatalf("Failed to clean up flink applications") } - err = os.RemoveAll(s.Util.CheckpointDir) - if err != nil { - log.Fatalf("Failed to clean up checkpoints directory: %v", err) - } + //err = os.RemoveAll(s.Util.CheckpointDir) + //if err != nil { + // log.Fatalf("Failed to clean up checkpoints directory: %v", err) + //} } diff --git a/integ/minikube_install.sh b/integ/minikube_install.sh new file mode 100644 index 00000000..c80736cc --- /dev/null +++ b/integ/minikube_install.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env sh + +set -e + +curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 +sudo install minikube-linux-amd64 /usr/local/bin/minikube + +minikube start --kubernetes-version=v1.20.15 + +sh boilerplate/lyft/golang_test_targets/dep_install.sh + +dep ensure diff --git a/integ/minikube_setup.sh b/integ/minikube_setup.sh new file mode 100644 index 00000000..49f9c99a --- /dev/null +++ b/integ/minikube_setup.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +# Test App Setup + +cd integ/operator-test-app +export TEST_APP_IMAGE=operator-test-app:$(git rev-parse HEAD) +docker build -t $TEST_APP_IMAGE . +docker tag $TEST_APP_IMAGE flink-test-app:local.1 +docker tag $TEST_APP_IMAGE flink-test-app:local.2 +minikube image push flink-test-app:local.1 +minikube image push flink-test-app:local.2 + +cd ../../ + +# Operator Setup + +export DOCKER_IMAGE=flinkk8soperator:$(git rev-parse HEAD) +export OPERATOR_IMAGE=flinkk8soperator:local + +docker build -t $DOCKER_IMAGE . +docker tag $DOCKER_IMAGE $OPERATOR_IMAGE +minikube image push $OPERATOR_IMAGE + +microk8s.kubectl proxy --port 8001 & diff --git a/integ/minikube_test.sh b/integ/minikube_test.sh new file mode 100644 index 00000000..c061dd95 --- /dev/null +++ b/integ/minikube_test.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +set -e + +export INTEGRATION=true +export OPERATOR_IMAGE=flinkk8soperator:local + +minikube ssh 'mkdir /tmp/checkpoints' +minikube ssh 'sudo chmod -R 0777 /tmp/checkpoints' + +cd $(dirname "$0") +go test -p 1 -timeout 10m -check.vv IntegSuite diff --git a/integ/simple_test.go b/integ/simple_test.go index e8375aa7..56a60f5b 100644 --- a/integ/simple_test.go +++ b/integ/simple_test.go @@ -15,10 +15,10 @@ import ( v1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) -// const NewImage = "127.0.0.1:3200/flink-test-app:local.2" +const NewImage = "flink-test-app:local.2" // const NewImage = "operator-test-app:test1.2" -const NewImage = "lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.2" +// const NewImage = "lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.2" func updateAndValidate(c *C, s *IntegSuite, name string, updateFn func(app *v1beta1.FlinkApplication), failurePhase v1beta1.FlinkApplicationPhase) *v1beta1.FlinkApplication { app, err := s.Util.Update(name, updateFn) diff --git a/integ/test_app.yaml b/integ/test_app.yaml index 83b29c48..16af27cc 100644 --- a/integ/test_app.yaml +++ b/integ/test_app.yaml @@ -6,12 +6,12 @@ metadata: labels: environment: development spec: - # image: 127.0.0.1:3200/flink-test-app:local.1 + image: flink-test-app:local.1 # image: operator-test-app:test1 - image: lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 + # image: lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 imagePullPolicy: IfNotPresent - imagePullSecrets: - - name: dockerhub +# imagePullSecrets: +# - name: dockerhub flinkConfig: # jobmanager.memory.jvm-overhead.min: "50 mb" # jobmanager.memory.jvm-metaspace.size: "80 mb" From 5350c373000b14b1a01484198c537a5d5efcb070 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Fri, 24 Mar 2023 16:10:35 -0700 Subject: [PATCH 35/79] flink 1.8 not 1.11 --- integ/simple_test.go | 4 ++-- integ/test_app.yaml | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/integ/simple_test.go b/integ/simple_test.go index 56a60f5b..663e06f9 100644 --- a/integ/simple_test.go +++ b/integ/simple_test.go @@ -15,10 +15,10 @@ import ( v1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) -const NewImage = "flink-test-app:local.2" +// const NewImage = "flink-test-app:local.2" // const NewImage = "operator-test-app:test1.2" -// const NewImage = "lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.2" +const NewImage = "lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.2" func updateAndValidate(c *C, s *IntegSuite, name string, updateFn func(app *v1beta1.FlinkApplication), failurePhase v1beta1.FlinkApplicationPhase) *v1beta1.FlinkApplication { app, err := s.Util.Update(name, updateFn) diff --git a/integ/test_app.yaml b/integ/test_app.yaml index 16af27cc..515f8c91 100644 --- a/integ/test_app.yaml +++ b/integ/test_app.yaml @@ -6,12 +6,12 @@ metadata: labels: environment: development spec: - image: flink-test-app:local.1 + # image: flink-test-app:local.1 # image: operator-test-app:test1 - # image: lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 + image: lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 imagePullPolicy: IfNotPresent -# imagePullSecrets: -# - name: dockerhub + imagePullSecrets: + - name: dockerhub flinkConfig: # jobmanager.memory.jvm-overhead.min: "50 mb" # jobmanager.memory.jvm-metaspace.size: "80 mb" From 3110b64d76e8156dc606880f5b468db496b8a753 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Fri, 24 Mar 2023 16:12:17 -0700 Subject: [PATCH 36/79] make executable --- integ/minikube_install.sh | 0 integ/minikube_setup.sh | 0 integ/minikube_test.sh | 0 3 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 integ/minikube_install.sh mode change 100644 => 100755 integ/minikube_setup.sh mode change 100644 => 100755 integ/minikube_test.sh diff --git a/integ/minikube_install.sh b/integ/minikube_install.sh old mode 100644 new mode 100755 diff --git a/integ/minikube_setup.sh b/integ/minikube_setup.sh old mode 100644 new mode 100755 diff --git a/integ/minikube_test.sh b/integ/minikube_test.sh old mode 100644 new mode 100755 From f6cc0405fb1fc0ebfe8c968d81b1daf74fdf30b1 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Fri, 24 Mar 2023 16:21:15 -0700 Subject: [PATCH 37/79] remove microk8s from proxy kube --- integ/minikube_setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integ/minikube_setup.sh b/integ/minikube_setup.sh index 49f9c99a..918b2219 100755 --- a/integ/minikube_setup.sh +++ b/integ/minikube_setup.sh @@ -21,4 +21,4 @@ docker build -t $DOCKER_IMAGE . docker tag $DOCKER_IMAGE $OPERATOR_IMAGE minikube image push $OPERATOR_IMAGE -microk8s.kubectl proxy --port 8001 & +kubectl proxy --port 8001 & From 15787c6bc028dbb327b006973452701938908873 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Fri, 24 Mar 2023 18:09:29 -0700 Subject: [PATCH 38/79] fix minikube command --- integ/minikube_install.sh | 2 +- integ/minikube_setup.sh | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/integ/minikube_install.sh b/integ/minikube_install.sh index c80736cc..559f362e 100755 --- a/integ/minikube_install.sh +++ b/integ/minikube_install.sh @@ -2,7 +2,7 @@ set -e -curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 +curl -LO -s https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube minikube start --kubernetes-version=v1.20.15 diff --git a/integ/minikube_setup.sh b/integ/minikube_setup.sh index 918b2219..5c4cf0c2 100755 --- a/integ/minikube_setup.sh +++ b/integ/minikube_setup.sh @@ -2,15 +2,15 @@ # Test App Setup -cd integ/operator-test-app -export TEST_APP_IMAGE=operator-test-app:$(git rev-parse HEAD) -docker build -t $TEST_APP_IMAGE . -docker tag $TEST_APP_IMAGE flink-test-app:local.1 -docker tag $TEST_APP_IMAGE flink-test-app:local.2 -minikube image push flink-test-app:local.1 -minikube image push flink-test-app:local.2 - -cd ../../ +#cd integ/operator-test-app +#export TEST_APP_IMAGE=operator-test-app:$(git rev-parse HEAD) +#docker build -t $TEST_APP_IMAGE . +#docker tag $TEST_APP_IMAGE flink-test-app:local.1 +#docker tag $TEST_APP_IMAGE flink-test-app:local.2 +#minikube image load flink-test-app:local.1 +#minikube image load flink-test-app:local.2 +# +#cd ../../ # Operator Setup @@ -19,6 +19,6 @@ export OPERATOR_IMAGE=flinkk8soperator:local docker build -t $DOCKER_IMAGE . docker tag $DOCKER_IMAGE $OPERATOR_IMAGE -minikube image push $OPERATOR_IMAGE +minikube image load $OPERATOR_IMAGE kubectl proxy --port 8001 & From 521bac5a6992f45895ae138c1485d57962741788 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Fri, 24 Mar 2023 18:27:56 -0700 Subject: [PATCH 39/79] disable rbac --- integ/minikube_install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integ/minikube_install.sh b/integ/minikube_install.sh index 559f362e..1c58df0f 100755 --- a/integ/minikube_install.sh +++ b/integ/minikube_install.sh @@ -5,7 +5,7 @@ set -e curl -LO -s https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube -minikube start --kubernetes-version=v1.20.15 +minikube start --kubernetes-version=v1.20.15 --extra-config=apiserver.authorization-mode=AlwaysAllow sh boilerplate/lyft/golang_test_targets/dep_install.sh From 2c09fb2a02498ba3eb5d161ec30a5634bebb4ac6 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Fri, 24 Mar 2023 18:38:40 -0700 Subject: [PATCH 40/79] workaround auth --- integ/README.md | 2 +- integ/minikube_install.sh | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/integ/README.md b/integ/README.md index 29fb4bc2..ebf46d97 100644 --- a/integ/README.md +++ b/integ/README.md @@ -95,7 +95,7 @@ and the upgrade is non-trivial. 2. Create directory /tmp/checkpoints if it does not exist already. 3. Start minikube - minikube start --kubernetes-version=v1.20.15 --mount --mount-string="/tmp/checkpoints:/tmp/checkpoints" + minikube start --kubernetes-version=v1.20.15 --extra-config=apiserver.authorization-mode=AlwaysAllow 4. Proxy minikube kubectl proxy --port 8001 & diff --git a/integ/minikube_install.sh b/integ/minikube_install.sh index 1c58df0f..f685e30a 100755 --- a/integ/minikube_install.sh +++ b/integ/minikube_install.sh @@ -5,7 +5,8 @@ set -e curl -LO -s https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube -minikube start --kubernetes-version=v1.20.15 --extra-config=apiserver.authorization-mode=AlwaysAllow +minikube start --kubernetes-version=v1.20.15 +minikube ssh 'sudo cat /etc/kubernetes/manifests/kube-apiserver.yaml | sed -r "s/--authorization-mode=.+/--authorization-mode=AlwaysAllow/g" | sudo tee /etc/kubernetes/manifests/kube-apiserver.yaml' sh boilerplate/lyft/golang_test_targets/dep_install.sh From 4cb11e578b97d5413917a96f164f15e3a9c8f059 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Sat, 25 Mar 2023 10:14:11 -0700 Subject: [PATCH 41/79] fix file writing --- integ/README.md | 11 +++++++++++ integ/checkpoint_failure_test.go | 10 +++++----- integ/main_test.go | 13 ++++++++++++- integ/minikube_setup.sh | 6 ++++++ integ/minikube_test.sh | 3 --- integ/simple_test.go | 9 +++++---- 6 files changed, 39 insertions(+), 13 deletions(-) diff --git a/integ/README.md b/integ/README.md index ebf46d97..22b07cf2 100644 --- a/integ/README.md +++ b/integ/README.md @@ -121,3 +121,14 @@ and the upgrade is non-trivial. 9. Between test failures delete all resources if test timed out kubectl delete namespace flinkoperatortest + +Helpers: +- Kill kube proxy + ps -ef | grep "kubectl proxy" + kill -9 +- Kill stuck flink app + kubectl patch FlinkApplication invalidcanceljob -p '{"metadata":{"finalizers":[]}}' --type=merge +- Set default namespace + kubectl config set-context --current --namespace=flinkoperatortest +- + diff --git a/integ/checkpoint_failure_test.go b/integ/checkpoint_failure_test.go index 9f7a596c..f850fbbc 100644 --- a/integ/checkpoint_failure_test.go +++ b/integ/checkpoint_failure_test.go @@ -2,8 +2,6 @@ package integ import ( "fmt" - "io/ioutil" - "os" "time" "github.com/lyft/flinkk8soperator/pkg/apis/app/v1beta1" @@ -68,9 +66,10 @@ func failingJobTest(s *IntegSuite, c *C, testName string, causeFailure func()) { // Tests that we correctly handle updating a job with task failures func (s *IntegSuite) TestJobWithTaskFailures(c *C) { failingJobTest(s, c, "taskfailure", func() { - f, err := os.OpenFile(s.Util.CheckpointDir+"/fail", os.O_RDONLY|os.O_CREATE, 0666) + // f, err := os.OpenFile(s.Util.CheckpointDir+"/fail", os.O_RDONLY|os.O_CREATE, 0666) + err := s.Util.ExecuteCommand("minikube", "ssh", "touch /tmp/checkpoints/fail && chmod 0644 /tmp/checkpoints/fail") c.Assert(err, IsNil) - c.Assert(f.Close(), IsNil) + // c.Assert(f.Close(), IsNil) }) } @@ -78,7 +77,8 @@ func (s *IntegSuite) TestJobWithTaskFailures(c *C) { func (s *IntegSuite) TestCheckpointTimeout(c *C) { failingJobTest(s, c, "checkpointtimeout", func() { // cause checkpoints to take 120 seconds - err := ioutil.WriteFile(s.Util.CheckpointDir+"/checkpoint_delay", []byte("120000"), 0644) + err := s.Util.ExecuteCommand("minikube", "ssh", "echo 120000 >> /tmp/checkpoints/checkpoint_delay && sudo chmod 0644 /tmp/checkpoints/checkpoint_delay") + // err := ioutil.WriteFile(s.Util.CheckpointDir+"/checkpoint_delay", []byte("120000"), 0644) c.Assert(err, IsNil) }) } diff --git a/integ/main_test.go b/integ/main_test.go index afd7f7eb..9c679779 100644 --- a/integ/main_test.go +++ b/integ/main_test.go @@ -114,6 +114,13 @@ func (s *IntegSuite) SetUpTest(c *C) { //if _, err := os.Stat(s.Util.CheckpointDir); os.IsNotExist(err) { // c.Assert(os.Mkdir(s.Util.CheckpointDir, 0777), IsNil) //} + if err := s.Util.ExecuteCommand("minikube", "ssh", "sudo mkdir /tmp/checkpoints"); err != nil { + c.Fatalf("Failed to create checkpoint directory: %v", err) + } + + if err := s.Util.ExecuteCommand("minikube", "ssh", "sudo chmod -R 0777 /tmp/checkpoints"); err != nil { + c.Fatalf("Failed to elevate permissions on checkpoint directory: %v", err) + } } func (s *IntegSuite) TearDownTest(c *C) { @@ -134,11 +141,15 @@ func (s *IntegSuite) TearDownTest(c *C) { err = s.Util.FlinkApps().DeleteCollection(nil, v1.ListOptions{}) if err != nil { - log.Fatalf("Failed to clean up flink applications") + log.Fatalf("Failed to clean up flink applications: %v", err) } //err = os.RemoveAll(s.Util.CheckpointDir) //if err != nil { // log.Fatalf("Failed to clean up checkpoints directory: %v", err) //} + + if err := s.Util.ExecuteCommand("minikube", "ssh", "sudo rm -rf /tmp/checkpoints"); err != nil { + c.Fatalf("Failed to delete checkpoint directory: %v", err) + } } diff --git a/integ/minikube_setup.sh b/integ/minikube_setup.sh index 5c4cf0c2..788a31c7 100755 --- a/integ/minikube_setup.sh +++ b/integ/minikube_setup.sh @@ -12,6 +12,12 @@ # #cd ../../ +docker pull lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 +docker pull lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.2 +minikube image load lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 +minikube image load lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.2 + + # Operator Setup export DOCKER_IMAGE=flinkk8soperator:$(git rev-parse HEAD) diff --git a/integ/minikube_test.sh b/integ/minikube_test.sh index c061dd95..794df66a 100755 --- a/integ/minikube_test.sh +++ b/integ/minikube_test.sh @@ -5,8 +5,5 @@ set -e export INTEGRATION=true export OPERATOR_IMAGE=flinkk8soperator:local -minikube ssh 'mkdir /tmp/checkpoints' -minikube ssh 'sudo chmod -R 0777 /tmp/checkpoints' - cd $(dirname "$0") go test -p 1 -timeout 10m -check.vv IntegSuite diff --git a/integ/simple_test.go b/integ/simple_test.go index 663e06f9..1bbee052 100644 --- a/integ/simple_test.go +++ b/integ/simple_test.go @@ -4,7 +4,6 @@ import ( "encoding/json" "fmt" - "os" "time" "github.com/lyft/flinkk8soperator/pkg/apis/app/v1beta1" @@ -316,9 +315,10 @@ func (s *IntegSuite) TestRecovery(c *C) { } // cause the app to start failing - f, err := os.OpenFile(s.Util.CheckpointDir+"/fail", os.O_RDONLY|os.O_CREATE, 0666) + err = s.Util.ExecuteCommand("minikube", "ssh", "touch /tmp/checkpoints/fail && chmod 0644 /tmp/checkpoints/fail") + // f, err := os.OpenFile(s.Util.CheckpointDir+"/fail", os.O_RDONLY|os.O_CREATE, 0666) c.Assert(err, IsNil) - c.Assert(f.Close(), IsNil) + // c.Assert(f.Close(), IsNil) log.Info("Triggered failure") @@ -347,7 +347,8 @@ func (s *IntegSuite) TestRecovery(c *C) { c.Assert(s.Util.WaitForPhase(config.Name, v1beta1.FlinkApplicationRunning, v1beta1.FlinkApplicationDeployFailed), IsNil) // stop it from failing - c.Assert(os.Remove(s.Util.CheckpointDir+"/fail"), IsNil) + c.Assert(s.Util.ExecuteCommand("minikube", "ssh", "sudo rm /tmp/checkpoints/fail"), IsNil) + // c.Assert(os.Remove(s.Util.CheckpointDir+"/fail"), IsNil) c.Assert(s.Util.WaitForAllTasksRunning(config.Name), IsNil) // delete the application From 80b8251eb1a3563eccf71e99fb7a67c59a31bbef Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Sat, 25 Mar 2023 10:15:13 -0700 Subject: [PATCH 42/79] raise timeout --- integ/minikube_test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integ/minikube_test.sh b/integ/minikube_test.sh index 794df66a..5124d889 100755 --- a/integ/minikube_test.sh +++ b/integ/minikube_test.sh @@ -6,4 +6,4 @@ export INTEGRATION=true export OPERATOR_IMAGE=flinkk8soperator:local cd $(dirname "$0") -go test -p 1 -timeout 10m -check.vv IntegSuite +go test -p 1 -timeout 15m -check.vv IntegSuite From 38d31d6781e62758954e51408ee191d51fceca25 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Sun, 26 Mar 2023 18:38:20 -0700 Subject: [PATCH 43/79] all integ tests passing local direct --- integ/README.md | 17 +++++++++-------- integ/blue_green_deployment_test.go | 4 ++-- integ/job_cancellation_test.go | 4 ++-- integ/simple_test.go | 4 ++-- integ/test_app.yaml | 4 ++-- 5 files changed, 17 insertions(+), 16 deletions(-) diff --git a/integ/README.md b/integ/README.md index 22b07cf2..ab39714b 100644 --- a/integ/README.md +++ b/integ/README.md @@ -95,32 +95,33 @@ and the upgrade is non-trivial. 2. Create directory /tmp/checkpoints if it does not exist already. 3. Start minikube - minikube start --kubernetes-version=v1.20.15 --extra-config=apiserver.authorization-mode=AlwaysAllow + minikube start --kubernetes-version=v1.20.15 + minikube ssh 'sudo cat /etc/kubernetes/manifests/kube-apiserver.yaml | sed -r "s/--authorization-mode=.+/--authorization-mode=AlwaysAllow/g" | sudo tee /etc/kubernetes/manifests/kube-apiserver.yaml' -4. Proxy minikube +5. Proxy minikube kubectl proxy --port 8001 & -5. Create the operator image +6. Create the operator image export DOCKER_IMAGE=flinkk8soperator:$(git rev-parse HEAD) docker build -t $DOCKER_IMAGE . minikube image load $DOCKER_IMAGE -6. Load images for integ test to minikube +7. Load images for integ test to minikube docker pull lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 minikube image load lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 docker pull lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.2 minikube image load lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.2 -7. Configure the test app to use the local image +8. Configure the test app to use the local image Add imagePullPolicy: Never to integ/test-app.yaml -8. Set the following for the Go test: +9. Set the following for the Go test: Package path: github.com/lyft/flinkk8soperator/integ Env: INTEGRATION=true;OPERATOR_IMAGE=flinkk8soperator:d5883988975fc8fc5d5bd0ccdf9cb035f1f636a4;RUN_DIRECT=true Program Args: -timeout 40m -check.vv -9. Between test failures delete all resources if test timed out - kubectl delete namespace flinkoperatortest +10. Between test failures delete all resources if test timed out + kubectl delete namespace flinkoperatortest Helpers: - Kill kube proxy diff --git a/integ/blue_green_deployment_test.go b/integ/blue_green_deployment_test.go index 6b51e2ed..c94de704 100644 --- a/integ/blue_green_deployment_test.go +++ b/integ/blue_green_deployment_test.go @@ -55,7 +55,7 @@ func (s *IntegSuite) TestUpdateWithBlueGreenDeploymentMode(c *C) { pods, err := s.Util.KubeClient.CoreV1().Pods(s.Util.Namespace.Name). List(v1.ListOptions{LabelSelector: "integTest=" + testName}) c.Assert(err, IsNil) - c.Assert(len(pods.Items), Equals, 3) + c.Assert(len(pods.Items), Equals, 2) for _, pod := range pods.Items { c.Assert(pod.Spec.Containers[0].Image, Equals, config.Spec.Image) } @@ -72,7 +72,7 @@ func (s *IntegSuite) TestUpdateWithBlueGreenDeploymentMode(c *C) { List(v1.ListOptions{LabelSelector: "integTest=" + testName}) c.Assert(err, IsNil) // We have 2 applications running - c.Assert(len(pods.Items), Equals, 6) + c.Assert(len(pods.Items), Equals, 4) c.Assert(s.Util.WaitForPhase(config.Name, v1beta1.FlinkApplicationDualRunning, v1beta1.FlinkApplicationDeployFailed), IsNil) c.Assert(s.Util.GetJobID(newApp), NotNil) c.Assert(newApp.Status.UpdatingVersion, Equals, v1beta1.BlueFlinkApplication) diff --git a/integ/job_cancellation_test.go b/integ/job_cancellation_test.go index a6b311b4..4ee2b8b9 100644 --- a/integ/job_cancellation_test.go +++ b/integ/job_cancellation_test.go @@ -81,7 +81,7 @@ func (s *IntegSuite) TestJobCancellationWithoutSavepoint(c *C) { pods, err := s.Util.KubeClient.CoreV1().Pods(s.Util.Namespace.Name). List(v1.ListOptions{LabelSelector: "integTest=" + testName}) c.Assert(err, IsNil) - c.Assert(len(pods.Items), Equals, 3) + c.Assert(len(pods.Items), Equals, 2) for _, pod := range pods.Items { c.Assert(pod.Spec.Containers[0].Image, Equals, config.Spec.Image) } @@ -97,7 +97,7 @@ func (s *IntegSuite) TestJobCancellationWithoutSavepoint(c *C) { pods, err = s.Util.KubeClient.CoreV1().Pods(s.Util.Namespace.Name). List(v1.ListOptions{LabelSelector: "integTest=" + testName}) c.Assert(err, IsNil) - c.Assert(len(pods.Items), Equals, 3) + c.Assert(len(pods.Items), Equals, 2) for _, pod := range pods.Items { c.Assert(pod.Spec.Containers[0].Image, Equals, NewImage) } diff --git a/integ/simple_test.go b/integ/simple_test.go index 1bbee052..d902748f 100644 --- a/integ/simple_test.go +++ b/integ/simple_test.go @@ -90,7 +90,7 @@ func (s *IntegSuite) TestSimple(c *C) { pods, err := s.Util.KubeClient.CoreV1().Pods(s.Util.Namespace.Name). List(v1.ListOptions{LabelSelector: "integTest=test_simple"}) c.Assert(err, IsNil) - c.Assert(len(pods.Items), Equals, 3) + c.Assert(len(pods.Items), Equals, 2) for _, pod := range pods.Items { c.Assert(pod.Spec.Containers[0].Image, Equals, config.Spec.Image) } @@ -106,7 +106,7 @@ func (s *IntegSuite) TestSimple(c *C) { pods, err = s.Util.KubeClient.CoreV1().Pods(s.Util.Namespace.Name). List(v1.ListOptions{LabelSelector: "integTest=test_simple"}) c.Assert(err, IsNil) - c.Assert(len(pods.Items), Equals, 3) + c.Assert(len(pods.Items), Equals, 2) for _, pod := range pods.Items { c.Assert(pod.Spec.Containers[0].Image, Equals, NewImage) } diff --git a/integ/test_app.yaml b/integ/test_app.yaml index 515f8c91..80fd6582 100644 --- a/integ/test_app.yaml +++ b/integ/test_app.yaml @@ -39,7 +39,7 @@ spec: memory: "400Mi" cpu: "0.2" limits: - memory: "400Mi" + memory: "800Mi" cpu: "0.2" replicas: 1 taskManagerConfig: @@ -63,5 +63,5 @@ spec: flinkVersion: "1.11" deploymentMode: Dual jarName: "operator-test-app-1.0.0-SNAPSHOT.jar" - parallelism: 3 + parallelism: 2 entryClass: "com.lyft.OperatorTestApp" From 9ea26a86171310f082ddb07d915359fd04b71304 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Sun, 26 Mar 2023 18:39:40 -0700 Subject: [PATCH 44/79] bump minikube mem --- integ/minikube_install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/integ/minikube_install.sh b/integ/minikube_install.sh index f685e30a..c7986528 100755 --- a/integ/minikube_install.sh +++ b/integ/minikube_install.sh @@ -5,6 +5,7 @@ set -e curl -LO -s https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube +minikube config set memory 7000 minikube start --kubernetes-version=v1.20.15 minikube ssh 'sudo cat /etc/kubernetes/manifests/kube-apiserver.yaml | sed -r "s/--authorization-mode=.+/--authorization-mode=AlwaysAllow/g" | sudo tee /etc/kubernetes/manifests/kube-apiserver.yaml' From 9a2f36b2f759757c8b3545edc4f65b4331047762 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Sun, 26 Mar 2023 18:43:55 -0700 Subject: [PATCH 45/79] decrease minikube mem --- integ/minikube_install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integ/minikube_install.sh b/integ/minikube_install.sh index c7986528..3cdafd4b 100755 --- a/integ/minikube_install.sh +++ b/integ/minikube_install.sh @@ -5,7 +5,7 @@ set -e curl -LO -s https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube -minikube config set memory 7000 +minikube config set memory 6800 minikube start --kubernetes-version=v1.20.15 minikube ssh 'sudo cat /etc/kubernetes/manifests/kube-apiserver.yaml | sed -r "s/--authorization-mode=.+/--authorization-mode=AlwaysAllow/g" | sudo tee /etc/kubernetes/manifests/kube-apiserver.yaml' From 6a8b657638d98a026a274b7c646f54875dd3f6bb Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Sun, 26 Mar 2023 18:57:25 -0700 Subject: [PATCH 46/79] removing permissions crashes minikube api --- integ/minikube_install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integ/minikube_install.sh b/integ/minikube_install.sh index 3cdafd4b..61b485f8 100755 --- a/integ/minikube_install.sh +++ b/integ/minikube_install.sh @@ -7,7 +7,7 @@ sudo install minikube-linux-amd64 /usr/local/bin/minikube minikube config set memory 6800 minikube start --kubernetes-version=v1.20.15 -minikube ssh 'sudo cat /etc/kubernetes/manifests/kube-apiserver.yaml | sed -r "s/--authorization-mode=.+/--authorization-mode=AlwaysAllow/g" | sudo tee /etc/kubernetes/manifests/kube-apiserver.yaml' +# minikube ssh 'sudo cat /etc/kubernetes/manifests/kube-apiserver.yaml | sed -r "s/--authorization-mode=.+/--authorization-mode=AlwaysAllow/g" | sudo tee /etc/kubernetes/manifests/kube-apiserver.yaml' sh boilerplate/lyft/golang_test_targets/dep_install.sh From f4bfd5b1cffc19f8f11851e633a16724da8173a2 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Sun, 26 Mar 2023 19:32:09 -0700 Subject: [PATCH 47/79] add role --- deploy/role-binding.yaml | 3 ++- deploy/role.yaml | 3 ++- integ/main_test.go | 8 ++++++++ integ/utils/utils.go | 3 +-- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/deploy/role-binding.yaml b/deploy/role-binding.yaml index e46a1f91..15ddf9b1 100644 --- a/deploy/role-binding.yaml +++ b/deploy/role-binding.yaml @@ -10,4 +10,5 @@ roleRef: subjects: - kind: ServiceAccount name: flinkoperator - namespace: flink-operator + # namespace: flink-operator + namespace: flinkoperatortest diff --git a/deploy/role.yaml b/deploy/role.yaml index ed44bd95..f4a55041 100644 --- a/deploy/role.yaml +++ b/deploy/role.yaml @@ -80,4 +80,5 @@ apiVersion: v1 kind: ServiceAccount metadata: name: flinkoperator - namespace: flink-operator + # namespace: flink-operator + namespace: flinkoperatortest diff --git a/integ/main_test.go b/integ/main_test.go index 9c679779..c54acd68 100644 --- a/integ/main_test.go +++ b/integ/main_test.go @@ -92,6 +92,14 @@ func (s *IntegSuite) SetUpSuite(c *C) { } }() } else { + if err = s.Util.ExecuteCommand("kubectl", "create", "-f", "../deploy/role.yaml"); err != nil { + c.Fatalf("Failed to create role: %v", err) + } + + if err = s.Util.ExecuteCommand("kubectl", "create", "-f", "../deploy/role-binding.yaml"); err != nil { + c.Fatalf("Failed to create role binding: %v", err) + } + if err = s.Util.CreateOperator(); err != nil { c.Fatalf("Failed to create operator: %v", err) } diff --git a/integ/utils/utils.go b/integ/utils/utils.go index ac8ef1c9..6fce7ba6 100644 --- a/integ/utils/utils.go +++ b/integ/utils/utils.go @@ -194,6 +194,7 @@ func (f *TestUtil) CreateOperator() error { }, }, Spec: v1.PodSpec{ + ServiceAccountName: "flinkoperator", Volumes: []v1.Volume{ { Name: "config-volume", @@ -230,9 +231,7 @@ func (f *TestUtil) CreateOperator() error { VolumeMounts: []v1.VolumeMount{ {Name: "config-volume", MountPath: "/etc/flinkk8soperator/config"}, }, - // TODO: revert this ImagePullPolicy: v1.PullIfNotPresent, - // ImagePullPolicy: v1.PullNever, }, }, }, From f1d51ff91d7c8ae919d256167c12436412aef62f Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Mon, 27 Mar 2023 13:56:14 -0700 Subject: [PATCH 48/79] update timeouts --- integ/README.md | 29 ++++++----------------------- integ/minikube_install.sh | 1 - integ/minikube_test.sh | 2 +- integ/utils/utils.go | 2 +- 4 files changed, 8 insertions(+), 26 deletions(-) diff --git a/integ/README.md b/integ/README.md index ab39714b..5ce36f3d 100644 --- a/integ/README.md +++ b/integ/README.md @@ -92,36 +92,20 @@ and the upgrade is non-trivial. 1. Install Dependencies Run dep ensure -vendor-only -2. Create directory /tmp/checkpoints if it does not exist already. - 3. Start minikube minikube start --kubernetes-version=v1.20.15 - minikube ssh 'sudo cat /etc/kubernetes/manifests/kube-apiserver.yaml | sed -r "s/--authorization-mode=.+/--authorization-mode=AlwaysAllow/g" | sudo tee /etc/kubernetes/manifests/kube-apiserver.yaml' -5. Proxy minikube +4. Proxy minikube kubectl proxy --port 8001 & -6. Create the operator image - export DOCKER_IMAGE=flinkk8soperator:$(git rev-parse HEAD) - docker build -t $DOCKER_IMAGE . - minikube image load $DOCKER_IMAGE - -7. Load images for integ test to minikube - docker pull lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 - minikube image load lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 - docker pull lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.2 - minikube image load lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.2 - -8. Configure the test app to use the local image - Add imagePullPolicy: Never to integ/test-app.yaml +5. Set up test app images and operator image + integ/minikube_setup.sh -9. Set the following for the Go test: +8. Set the following for the Go test: Package path: github.com/lyft/flinkk8soperator/integ - Env: INTEGRATION=true;OPERATOR_IMAGE=flinkk8soperator:d5883988975fc8fc5d5bd0ccdf9cb035f1f636a4;RUN_DIRECT=true - Program Args: -timeout 40m -check.vv + Env: INTEGRATION=true;OPERATOR_IMAGE=flinkk8soperator:local;RUN_DIRECT=true + Program Args: -timeout 40m -check.vv IntegTest -10. Between test failures delete all resources if test timed out - kubectl delete namespace flinkoperatortest Helpers: - Kill kube proxy @@ -131,5 +115,4 @@ Helpers: kubectl patch FlinkApplication invalidcanceljob -p '{"metadata":{"finalizers":[]}}' --type=merge - Set default namespace kubectl config set-context --current --namespace=flinkoperatortest -- diff --git a/integ/minikube_install.sh b/integ/minikube_install.sh index 61b485f8..beceeaa5 100755 --- a/integ/minikube_install.sh +++ b/integ/minikube_install.sh @@ -7,7 +7,6 @@ sudo install minikube-linux-amd64 /usr/local/bin/minikube minikube config set memory 6800 minikube start --kubernetes-version=v1.20.15 -# minikube ssh 'sudo cat /etc/kubernetes/manifests/kube-apiserver.yaml | sed -r "s/--authorization-mode=.+/--authorization-mode=AlwaysAllow/g" | sudo tee /etc/kubernetes/manifests/kube-apiserver.yaml' sh boilerplate/lyft/golang_test_targets/dep_install.sh diff --git a/integ/minikube_test.sh b/integ/minikube_test.sh index 5124d889..aa25375f 100755 --- a/integ/minikube_test.sh +++ b/integ/minikube_test.sh @@ -6,4 +6,4 @@ export INTEGRATION=true export OPERATOR_IMAGE=flinkk8soperator:local cd $(dirname "$0") -go test -p 1 -timeout 15m -check.vv IntegSuite +go test -p 1 -timeout 40m -check.vv IntegSuite diff --git a/integ/utils/utils.go b/integ/utils/utils.go index 6fce7ba6..ac48f216 100644 --- a/integ/utils/utils.go +++ b/integ/utils/utils.go @@ -398,7 +398,7 @@ func (f *TestUtil) WaitForPhase(name string, phase flinkapp.FlinkApplicationPhas waitTime += 1 time.Sleep(1 * time.Second) - if waitTime > 180 { + if waitTime > 500 { return errors.New("did not get to phase Running") } } From 532906d5bd4f6f32e658cbdd12c30e1730adb1a2 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Mon, 27 Mar 2023 14:34:14 -0700 Subject: [PATCH 49/79] raise timeout for cluster start. add tags to tests --- integ/blue_green_deployment_test.go | 2 ++ integ/checkpoint_failure_test.go | 7 +++++++ integ/job_cancellation_test.go | 7 ++++++- integ/scaleup_test.go | 3 +++ integ/simple_test.go | 6 ++++++ integ/utils/utils.go | 2 +- 6 files changed, 25 insertions(+), 2 deletions(-) diff --git a/integ/blue_green_deployment_test.go b/integ/blue_green_deployment_test.go index c94de704..c29855a2 100644 --- a/integ/blue_green_deployment_test.go +++ b/integ/blue_green_deployment_test.go @@ -33,6 +33,7 @@ func WaitForUpdate(c *C, s *IntegSuite, name string, updateFn func(app *v1beta1. } func (s *IntegSuite) TestUpdateWithBlueGreenDeploymentMode(c *C) { + log.Info("Starting test TestUpdateWithBlueGreenDeploymentMode") testName := "bluegreenupdate" const finalizer = "bluegreen.finalizers.test.com" @@ -153,4 +154,5 @@ func (s *IntegSuite) TestUpdateWithBlueGreenDeploymentMode(c *C) { } } log.Info("All pods torn down") + log.Info("Completed test TestUpdateWithBlueGreenDeploymentMode") } diff --git a/integ/checkpoint_failure_test.go b/integ/checkpoint_failure_test.go index f850fbbc..b3f82ecc 100644 --- a/integ/checkpoint_failure_test.go +++ b/integ/checkpoint_failure_test.go @@ -65,20 +65,27 @@ func failingJobTest(s *IntegSuite, c *C, testName string, causeFailure func()) { // Tests that we correctly handle updating a job with task failures func (s *IntegSuite) TestJobWithTaskFailures(c *C) { + log.Info("Starting test TestJobWithTaskFailures") + failingJobTest(s, c, "taskfailure", func() { // f, err := os.OpenFile(s.Util.CheckpointDir+"/fail", os.O_RDONLY|os.O_CREATE, 0666) err := s.Util.ExecuteCommand("minikube", "ssh", "touch /tmp/checkpoints/fail && chmod 0644 /tmp/checkpoints/fail") c.Assert(err, IsNil) // c.Assert(f.Close(), IsNil) }) + log.Info("Completed test TestJobWithTaskFailures") } // Tests that we correctly handle updating a job with a checkpoint timeout func (s *IntegSuite) TestCheckpointTimeout(c *C) { + log.Info("Starting test TestCheckpointTimeout") + failingJobTest(s, c, "checkpointtimeout", func() { // cause checkpoints to take 120 seconds err := s.Util.ExecuteCommand("minikube", "ssh", "echo 120000 >> /tmp/checkpoints/checkpoint_delay && sudo chmod 0644 /tmp/checkpoints/checkpoint_delay") // err := ioutil.WriteFile(s.Util.CheckpointDir+"/checkpoint_delay", []byte("120000"), 0644) c.Assert(err, IsNil) }) + log.Info("Completed test TestCheckpointTimeout") + } diff --git a/integ/job_cancellation_test.go b/integ/job_cancellation_test.go index 4ee2b8b9..6dc8ec9b 100644 --- a/integ/job_cancellation_test.go +++ b/integ/job_cancellation_test.go @@ -58,7 +58,7 @@ func WaitUpdateAndValidate(c *C, s *IntegSuite, name string, updateFn func(app * // tests the workflow of job cancellation without savepoint func (s *IntegSuite) TestJobCancellationWithoutSavepoint(c *C) { - + log.Info("Starting test TestJobCancellationWithoutSavepoint") testName := "cancelsuccess" const finalizer = "simple.finalizers.test.com" @@ -131,11 +131,13 @@ func (s *IntegSuite) TestJobCancellationWithoutSavepoint(c *C) { } } log.Info("All pods torn down") + log.Info("Completed test TestJobCancellationWithoutSavepoint") } // tests a job update with the existing job already in cancelled state. // here, the new submitted job starts without a savepoint. func (s *IntegSuite) TestCancelledJobWithoutSavepoint(c *C) { + log.Info("Starting test TestCancelledJobWithoutSavepoint") testName := "invalidcancel" config, err := s.Util.ReadFlinkApplication("test_app.yaml") @@ -239,10 +241,12 @@ func (s *IntegSuite) TestCancelledJobWithoutSavepoint(c *C) { } } log.Info("All pods torn down") + log.Info("Completed test TestCancelledJobWithoutSavepoint") } // tests the recovery workflow of the job when savepoint is disabled. func (s *IntegSuite) TestJobRecoveryWithoutSavepoint(c *C) { + log.Info("Starting test TestJobRecoveryWithoutSavepoint") const finalizer = "simple.finalizers.test.com" const testName = "cancelrecovery" @@ -334,4 +338,5 @@ func (s *IntegSuite) TestJobRecoveryWithoutSavepoint(c *C) { time.Sleep(100 * time.Millisecond) } log.Info("All pods torn down") + log.Info("Completed test TestJobRecoveryWithoutSavepoint") } diff --git a/integ/scaleup_test.go b/integ/scaleup_test.go index cc29acff..5cae8862 100644 --- a/integ/scaleup_test.go +++ b/integ/scaleup_test.go @@ -11,6 +11,8 @@ import ( ) func (s *IntegSuite) TestInPlaceScaleUp(c *C) { + log.Info("Starting test TestInPlaceScaleUp") + const finalizer = "scaleup.finalizers.test.com" const testName = "test_in_place_scale_up" @@ -148,4 +150,5 @@ func (s *IntegSuite) TestInPlaceScaleUp(c *C) { time.Sleep(100 * time.Millisecond) } log.Info("All pods torn down") + log.Info("Completed test TestInPlaceScaleUp") } diff --git a/integ/simple_test.go b/integ/simple_test.go index d902748f..1d3e0dc2 100644 --- a/integ/simple_test.go +++ b/integ/simple_test.go @@ -71,6 +71,8 @@ func updateAndValidate(c *C, s *IntegSuite, name string, updateFn func(app *v1be // Tests job submission, upgrade, rollback, and deletion func (s *IntegSuite) TestSimple(c *C) { + log.Info("Starting test TestSimple") + const finalizer = "simple.finalizers.test.com" // start a simple app @@ -263,9 +265,12 @@ func (s *IntegSuite) TestSimple(c *C) { time.Sleep(100 * time.Millisecond) } log.Info("All pods torn down") + log.Info("Completed test TestSimple") } func (s *IntegSuite) TestRecovery(c *C) { + log.Info("Starting test TestRecovery") + config, err := s.Util.ReadFlinkApplication("test_app.yaml") c.Assert(err, IsNil, Commentf("Failed to read test app yaml")) @@ -362,4 +367,5 @@ func (s *IntegSuite) TestRecovery(c *C) { } } log.Info("All pods torn down") + log.Info("Completed test TestRecovery") } diff --git a/integ/utils/utils.go b/integ/utils/utils.go index ac48f216..ac70ba18 100644 --- a/integ/utils/utils.go +++ b/integ/utils/utils.go @@ -156,7 +156,7 @@ func (f *TestUtil) CreateCRD() error { func (f *TestUtil) CreateOperator() error { configValue := make(map[string]string) configValue["development"] = "operator:\n containerNameFormat: \"%s-unknown\"\n resyncPeriod: 5s\n" + - " baseBackoffDuration: 50ms\n maxBackoffDuration: 2s\n maxErrDuration: 90s\n" + + " baseBackoffDuration: 50ms\n maxBackoffDuration: 2s\n maxErrDuration: 180s\n" + "logger:\n formatter:\n type: text\n" configMap := v1.ConfigMap{ From b5d66268b6fe34e483e488f7bb41724e6996e686 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Mon, 27 Mar 2023 16:38:07 -0700 Subject: [PATCH 50/79] add better gc. add longer timeout --- integ/job_cancellation_test.go | 33 +-------------------------------- integ/main_test.go | 12 ++++++++++++ integ/test_app.yaml | 1 + integ/utils/utils.go | 4 ++-- 4 files changed, 16 insertions(+), 34 deletions(-) diff --git a/integ/job_cancellation_test.go b/integ/job_cancellation_test.go index 6dc8ec9b..47cf051c 100644 --- a/integ/job_cancellation_test.go +++ b/integ/job_cancellation_test.go @@ -152,25 +152,6 @@ func (s *IntegSuite) TestCancelledJobWithoutSavepoint(c *C) { Commentf("Failed to create flink application")) c.Assert(s.Util.WaitForPhase(config.Name, v1beta1.FlinkApplicationRunning, v1beta1.FlinkApplicationDeployFailed), IsNil) - //for { - // app, err := s.Util.FlinkApps().Get(config.Name, metav1.GetOptions{}) - // - // if err != nil { - // log.Errorf("Application failed to running %s", err) - // } - // - // if app.Status.Phase == v1beta1.FlinkApplicationRunning { - // break - // } - // - // if app.Status.Phase == v1beta1.FlinkApplicationDeployFailed { - // log.Errorf("application entered %s phase", v1beta1.FlinkApplicationDeployFailed) - // } - // - // time.Sleep(60 * time.Second) - // - // - //} c.Assert(s.Util.WaitForAllTasksRunning(config.Name), IsNil) @@ -187,19 +168,7 @@ func (s *IntegSuite) TestCancelledJobWithoutSavepoint(c *C) { c.Assert(err, IsNil) // wait a bit - time.Sleep(20 * time.Second) - - err = s.Util.ExecuteCommand("kubectl", "describe", "nodes") - c.Assert(err, IsNil) - - err = s.Util.ExecuteCommand("kubectl", "get", "pods", "-n", "flinkoperatortest") - c.Assert(err, IsNil) - - err = s.Util.ExecuteCommand("kubectl", "describe", "pods", "-n", "flinkoperatortest") - c.Assert(err, IsNil) - - err = s.Util.ExecuteCommand("kubectl", "describe", "flinkapplications", "-n", "flinkoperatortest") - c.Assert(err, IsNil) + time.Sleep(5 * time.Second) job = s.Util.GetJobOverview(currApp) c.Assert(job["status"], Equals, "CANCELED") diff --git a/integ/main_test.go b/integ/main_test.go index c54acd68..0dd3ceef 100644 --- a/integ/main_test.go +++ b/integ/main_test.go @@ -147,6 +147,18 @@ func (s *IntegSuite) TearDownTest(c *C) { _ = s.Util.GetLogs(jm, nil) } + err = s.Util.ExecuteCommand("kubectl", "describe", "nodes") + c.Assert(err, IsNil) + + err = s.Util.ExecuteCommand("kubectl", "get", "pods", "-n", "flinkoperatortest") + c.Assert(err, IsNil) + + err = s.Util.ExecuteCommand("kubectl", "describe", "pods", "-n", "flinkoperatortest") + c.Assert(err, IsNil) + + err = s.Util.ExecuteCommand("kubectl", "describe", "flinkapplications", "-n", "flinkoperatortest") + c.Assert(err, IsNil) + err = s.Util.FlinkApps().DeleteCollection(nil, v1.ListOptions{}) if err != nil { log.Fatalf("Failed to clean up flink applications: %v", err) diff --git a/integ/test_app.yaml b/integ/test_app.yaml index 80fd6582..4fcda4d6 100644 --- a/integ/test_app.yaml +++ b/integ/test_app.yaml @@ -32,6 +32,7 @@ spec: state.backend.fs.checkpointdir: file:///checkpoints/flink/checkpoints state.checkpoints.dir: file:///checkpoints/flink/externalized-checkpoints state.savepoints.dir: file:///checkpoints/flink/savepoints + env.java.opts.jobmanager: "-XX:+UseG1GC" jobManagerConfig: systemMemoryFraction: 0.2 resources: diff --git a/integ/utils/utils.go b/integ/utils/utils.go index ac70ba18..d4c4ebd8 100644 --- a/integ/utils/utils.go +++ b/integ/utils/utils.go @@ -156,7 +156,7 @@ func (f *TestUtil) CreateCRD() error { func (f *TestUtil) CreateOperator() error { configValue := make(map[string]string) configValue["development"] = "operator:\n containerNameFormat: \"%s-unknown\"\n resyncPeriod: 5s\n" + - " baseBackoffDuration: 50ms\n maxBackoffDuration: 2s\n maxErrDuration: 180s\n" + + " baseBackoffDuration: 50ms\n maxBackoffDuration: 2s\n maxErrDuration: 240s\n" + "logger:\n formatter:\n type: text\n" configMap := v1.ConfigMap{ @@ -395,7 +395,7 @@ func (f *TestUtil) WaitForPhase(name string, phase flinkapp.FlinkApplicationPhas } } - waitTime += 1 + waitTime++ time.Sleep(1 * time.Second) if waitTime > 500 { From eb7ede2116e8b02cf0258c7739702e12e617f034 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Mon, 27 Mar 2023 17:49:27 -0700 Subject: [PATCH 51/79] comment out scale up test as it uses too much cpu --- integ/scaleup_test.go | 294 ++++++++++++++++++++---------------------- 1 file changed, 142 insertions(+), 152 deletions(-) diff --git a/integ/scaleup_test.go b/integ/scaleup_test.go index 5cae8862..696b6c76 100644 --- a/integ/scaleup_test.go +++ b/integ/scaleup_test.go @@ -1,154 +1,144 @@ package integ -import ( - "fmt" - "time" - - "github.com/lyft/flinkk8soperator/pkg/apis/app/v1beta1" - "github.com/prometheus/common/log" - . "gopkg.in/check.v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -func (s *IntegSuite) TestInPlaceScaleUp(c *C) { - log.Info("Starting test TestInPlaceScaleUp") - - const finalizer = "scaleup.finalizers.test.com" - const testName = "test_in_place_scale_up" - - // start a simple app - config, err := s.Util.ReadFlinkApplication("test_app.yaml") - c.Assert(err, IsNil, Commentf("Failed to read test app yaml")) - - config.Spec.ScaleMode = "InPlace" - config.Spec.Parallelism = 2 - config.ObjectMeta.Name = "inplace" - config.ObjectMeta.Labels["integTest"] = testName - // add a finalizer so that the flinkapplication won't be deleted until we've had a chance to look at it - config.Finalizers = append(config.Finalizers, finalizer) - - c.Assert(s.Util.CreateFlinkApplication(config), IsNil, - Commentf("Failed to create flink application")) - - c.Assert(s.Util.WaitForPhase(config.Name, v1beta1.FlinkApplicationRunning, v1beta1.FlinkApplicationDeployFailed), IsNil) - c.Assert(s.Util.WaitForAllTasksRunning(config.Name), IsNil) - - pods, err := s.Util.KubeClient.CoreV1().Pods(s.Util.Namespace.Name). - List(v1.ListOptions{LabelSelector: "integTest=" + testName}) - c.Assert(err, IsNil) - c.Assert(len(pods.Items), Equals, 2) - for _, pod := range pods.Items { - c.Assert(pod.Spec.Containers[0].Image, Equals, config.Spec.Image) - } - - deployments, err := s.Util.KubeClient.AppsV1().Deployments(s.Util.Namespace.Name). - List(v1.ListOptions{LabelSelector: "flink-app=inplace,flink-deployment-type=taskmanager"}) - c.Assert(err, IsNil) - c.Assert(len(deployments.Items), Equals, 1) - deployment := deployments.Items[0] - - log.Info("Application started successfully") - - // test updating the app with a new scale - _, err = s.Util.Update("inplace", func(app *v1beta1.FlinkApplication) { - app.Spec.Parallelism = 4 - }) - c.Assert(err, IsNil) - - c.Assert(s.Util.WaitForPhase("inplace", v1beta1.FlinkApplicationRescaling, v1beta1.FlinkApplicationDeployFailed), IsNil) - c.Assert(s.Util.WaitForPhase("inplace", v1beta1.FlinkApplicationSavepointing, v1beta1.FlinkApplicationDeployFailed), IsNil) - c.Assert(s.Util.WaitForPhase("inplace", v1beta1.FlinkApplicationRunning, v1beta1.FlinkApplicationDeployFailed), IsNil) - c.Assert(s.Util.WaitForAllTasksRunning("inplace"), IsNil) - - log.Info("Rescaled job started successfully") - newApp, err := s.Util.GetFlinkApplication(config.Name) - c.Assert(err, IsNil) - - // check that we savepointed and restored correctly - endpoint := fmt.Sprintf("jobs/%s/checkpoints", newApp.Status.JobStatus.JobID) - res, err := s.Util.FlinkAPIGet(newApp, endpoint) - c.Assert(err, IsNil) - - body := res.(map[string]interface{}) - restored := (body["latest"].(map[string]interface{}))["restored"] - c.Assert(restored, NotNil) - - c.Assert(restored.(map[string]interface{})["is_savepoint"], Equals, true) - - // check that we have the correct number of total pods - pods, err = s.Util.KubeClient.CoreV1().Pods(s.Util.Namespace.Name). - List(v1.ListOptions{LabelSelector: "integTest=" + testName}) - c.Assert(err, IsNil) - c.Assert(len(pods.Items), Equals, 3) - - // check that we are still using the same deploymnet - deployments2, err := s.Util.KubeClient.AppsV1().Deployments(s.Util.Namespace.Name). - List(v1.ListOptions{LabelSelector: "flink-app=inplace,flink-deployment-type=taskmanager"}) - c.Assert(err, IsNil) - c.Assert(len(deployments2.Items), Equals, 1) - deployment2 := deployments.Items[0] - c.Assert(deployment2.Name, Equals, deployment.Name) - - // ensure that we can now proceed to a normal deployment - newApp = updateAndValidate(c, s, config.Name, func(app *v1beta1.FlinkApplication) { - app.Spec.Image = NewImage - }, v1beta1.FlinkApplicationDeployFailed) - c.Assert(newApp.Spec.Image, Equals, NewImage) - pods, err = s.Util.KubeClient.CoreV1().Pods(s.Util.Namespace.Name). - List(v1.ListOptions{LabelSelector: "integTest=" + testName}) - c.Assert(err, IsNil) - c.Assert(len(pods.Items), Equals, 3) - for _, pod := range pods.Items { - c.Assert(pod.Spec.Containers[0].Image, Equals, NewImage) - } - - // delete the application and ensure everything is cleaned up successfully - c.Assert(s.Util.FlinkApps().Delete(config.Name, &v1.DeleteOptions{}), IsNil) - - // validate that a savepoint was taken and the job was cancelled - var app *v1beta1.FlinkApplication - for { - app, err = s.Util.GetFlinkApplication(config.Name) - c.Assert(err, IsNil) - - if len(app.Finalizers) == 1 && app.Finalizers[0] == finalizer { - break - } - time.Sleep(100 * time.Millisecond) - } - - c.Assert(app.Status.SavepointPath, NotNil) - job := func() map[string]interface{} { - jobs, _ := s.Util.FlinkAPIGet(app, "/jobs") - jobMap := jobs.(map[string]interface{}) - jobList := jobMap["jobs"].([]interface{}) - for _, j := range jobList { - job := j.(map[string]interface{}) - if job["id"] == app.Status.JobStatus.JobID { - return job - } - } - return nil - }() - - fmt.Printf("test job = %v", job) - c.Assert(job["status"], Equals, "CANCELED") - - // delete our finalizer - app.Finalizers = []string{} - _, err = s.Util.FlinkApps().Update(app) - c.Assert(err, IsNil) - - // wait until all pods are gone - for { - pods, err = s.Util.KubeClient.CoreV1().Pods(s.Util.Namespace.Name). - List(v1.ListOptions{LabelSelector: "integTest=" + testName}) - c.Assert(err, IsNil) - if len(pods.Items) == 0 { - break - } - time.Sleep(100 * time.Millisecond) - } - log.Info("All pods torn down") - log.Info("Completed test TestInPlaceScaleUp") -} +//func (s *IntegSuite) TestInPlaceScaleUp(c *C) { +// log.Info("Starting test TestInPlaceScaleUp") +// +// const finalizer = "scaleup.finalizers.test.com" +// const testName = "test_in_place_scale_up" +// +// // start a simple app +// config, err := s.Util.ReadFlinkApplication("test_app.yaml") +// c.Assert(err, IsNil, Commentf("Failed to read test app yaml")) +// +// config.Spec.ScaleMode = "InPlace" +// config.Spec.Parallelism = 2 +// config.ObjectMeta.Name = "inplace" +// config.ObjectMeta.Labels["integTest"] = testName +// // add a finalizer so that the flinkapplication won't be deleted until we've had a chance to look at it +// config.Finalizers = append(config.Finalizers, finalizer) +// +// c.Assert(s.Util.CreateFlinkApplication(config), IsNil, +// Commentf("Failed to create flink application")) +// +// c.Assert(s.Util.WaitForPhase(config.Name, v1beta1.FlinkApplicationRunning, v1beta1.FlinkApplicationDeployFailed), IsNil) +// c.Assert(s.Util.WaitForAllTasksRunning(config.Name), IsNil) +// +// pods, err := s.Util.KubeClient.CoreV1().Pods(s.Util.Namespace.Name). +// List(v1.ListOptions{LabelSelector: "integTest=" + testName}) +// c.Assert(err, IsNil) +// c.Assert(len(pods.Items), Equals, 2) +// for _, pod := range pods.Items { +// c.Assert(pod.Spec.Containers[0].Image, Equals, config.Spec.Image) +// } +// +// deployments, err := s.Util.KubeClient.AppsV1().Deployments(s.Util.Namespace.Name). +// List(v1.ListOptions{LabelSelector: "flink-app=inplace,flink-deployment-type=taskmanager"}) +// c.Assert(err, IsNil) +// c.Assert(len(deployments.Items), Equals, 1) +// deployment := deployments.Items[0] +// +// log.Info("Application started successfully") +// +// // test updating the app with a new scale +// _, err = s.Util.Update("inplace", func(app *v1beta1.FlinkApplication) { +// app.Spec.Parallelism = 4 +// }) +// c.Assert(err, IsNil) +// +// c.Assert(s.Util.WaitForPhase("inplace", v1beta1.FlinkApplicationRescaling, v1beta1.FlinkApplicationDeployFailed), IsNil) +// c.Assert(s.Util.WaitForPhase("inplace", v1beta1.FlinkApplicationSavepointing, v1beta1.FlinkApplicationDeployFailed), IsNil) +// c.Assert(s.Util.WaitForPhase("inplace", v1beta1.FlinkApplicationRunning, v1beta1.FlinkApplicationDeployFailed), IsNil) +// c.Assert(s.Util.WaitForAllTasksRunning("inplace"), IsNil) +// +// log.Info("Rescaled job started successfully") +// newApp, err := s.Util.GetFlinkApplication(config.Name) +// c.Assert(err, IsNil) +// +// // check that we savepointed and restored correctly +// endpoint := fmt.Sprintf("jobs/%s/checkpoints", newApp.Status.JobStatus.JobID) +// res, err := s.Util.FlinkAPIGet(newApp, endpoint) +// c.Assert(err, IsNil) +// +// body := res.(map[string]interface{}) +// restored := (body["latest"].(map[string]interface{}))["restored"] +// c.Assert(restored, NotNil) +// +// c.Assert(restored.(map[string]interface{})["is_savepoint"], Equals, true) +// +// // check that we have the correct number of total pods +// pods, err = s.Util.KubeClient.CoreV1().Pods(s.Util.Namespace.Name). +// List(v1.ListOptions{LabelSelector: "integTest=" + testName}) +// c.Assert(err, IsNil) +// c.Assert(len(pods.Items), Equals, 3) +// +// // check that we are still using the same deploymnet +// deployments2, err := s.Util.KubeClient.AppsV1().Deployments(s.Util.Namespace.Name). +// List(v1.ListOptions{LabelSelector: "flink-app=inplace,flink-deployment-type=taskmanager"}) +// c.Assert(err, IsNil) +// c.Assert(len(deployments2.Items), Equals, 1) +// deployment2 := deployments.Items[0] +// c.Assert(deployment2.Name, Equals, deployment.Name) +// +// // ensure that we can now proceed to a normal deployment +// newApp = updateAndValidate(c, s, config.Name, func(app *v1beta1.FlinkApplication) { +// app.Spec.Image = NewImage +// }, v1beta1.FlinkApplicationDeployFailed) +// c.Assert(newApp.Spec.Image, Equals, NewImage) +// pods, err = s.Util.KubeClient.CoreV1().Pods(s.Util.Namespace.Name). +// List(v1.ListOptions{LabelSelector: "integTest=" + testName}) +// c.Assert(err, IsNil) +// c.Assert(len(pods.Items), Equals, 3) +// for _, pod := range pods.Items { +// c.Assert(pod.Spec.Containers[0].Image, Equals, NewImage) +// } +// +// // delete the application and ensure everything is cleaned up successfully +// c.Assert(s.Util.FlinkApps().Delete(config.Name, &v1.DeleteOptions{}), IsNil) +// +// // validate that a savepoint was taken and the job was cancelled +// var app *v1beta1.FlinkApplication +// for { +// app, err = s.Util.GetFlinkApplication(config.Name) +// c.Assert(err, IsNil) +// +// if len(app.Finalizers) == 1 && app.Finalizers[0] == finalizer { +// break +// } +// time.Sleep(100 * time.Millisecond) +// } +// +// c.Assert(app.Status.SavepointPath, NotNil) +// job := func() map[string]interface{} { +// jobs, _ := s.Util.FlinkAPIGet(app, "/jobs") +// jobMap := jobs.(map[string]interface{}) +// jobList := jobMap["jobs"].([]interface{}) +// for _, j := range jobList { +// job := j.(map[string]interface{}) +// if job["id"] == app.Status.JobStatus.JobID { +// return job +// } +// } +// return nil +// }() +// +// fmt.Printf("test job = %v", job) +// c.Assert(job["status"], Equals, "CANCELED") +// +// // delete our finalizer +// app.Finalizers = []string{} +// _, err = s.Util.FlinkApps().Update(app) +// c.Assert(err, IsNil) +// +// // wait until all pods are gone +// for { +// pods, err = s.Util.KubeClient.CoreV1().Pods(s.Util.Namespace.Name). +// List(v1.ListOptions{LabelSelector: "integTest=" + testName}) +// c.Assert(err, IsNil) +// if len(pods.Items) == 0 { +// break +// } +// time.Sleep(100 * time.Millisecond) +// } +// log.Info("All pods torn down") +// log.Info("Completed test TestInPlaceScaleUp") +//} From 238f0cef5df482c315df96fb7e7041714e071c0b Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Mon, 27 Mar 2023 17:50:50 -0700 Subject: [PATCH 52/79] try to increase cpus. 2 should be max but lets find out --- integ/minikube_install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/integ/minikube_install.sh b/integ/minikube_install.sh index beceeaa5..190ad61b 100755 --- a/integ/minikube_install.sh +++ b/integ/minikube_install.sh @@ -6,6 +6,7 @@ curl -LO -s https://storage.googleapis.com/minikube/releases/latest/minikube-lin sudo install minikube-linux-amd64 /usr/local/bin/minikube minikube config set memory 6800 +minikube config set cpus 3 minikube start --kubernetes-version=v1.20.15 sh boilerplate/lyft/golang_test_targets/dep_install.sh From cd0b4b123e40e92bc1f14559bead5e223b1d1a57 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Mon, 27 Mar 2023 17:52:02 -0700 Subject: [PATCH 53/79] yep 2 cpus in max --- integ/minikube_install.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/integ/minikube_install.sh b/integ/minikube_install.sh index 190ad61b..beceeaa5 100755 --- a/integ/minikube_install.sh +++ b/integ/minikube_install.sh @@ -6,7 +6,6 @@ curl -LO -s https://storage.googleapis.com/minikube/releases/latest/minikube-lin sudo install minikube-linux-amd64 /usr/local/bin/minikube minikube config set memory 6800 -minikube config set cpus 3 minikube start --kubernetes-version=v1.20.15 sh boilerplate/lyft/golang_test_targets/dep_install.sh From 5fc7c042c0acfe8fdca3a70a6efbcbb4f8dc3266 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Tue, 28 Mar 2023 15:42:32 -0700 Subject: [PATCH 54/79] refactor clean up --- .github/workflows/actions.yml | 6 ++-- deploy/role-binding.yaml | 3 +- deploy/role.yaml | 3 +- integ/checkpoint_failure_test.go | 3 -- integ/install.sh | 9 ++--- integ/job_cancellation_test.go | 2 -- integ/main_test.go | 26 +++++++------- integ/minikube_install.sh | 13 ------- integ/minikube_setup.sh | 30 ----------------- integ/minikube_test.sh | 9 ----- integ/scaleup_test.go | 1 + integ/setup.sh | 41 ++++++++++++---------- integ/simple_test.go | 6 ---- integ/test.sh | 8 ++--- integ/test_app.yaml | 18 ---------- integ/utils/utils.go | 58 +++++++++++++++++++++++++++++++- 16 files changed, 107 insertions(+), 129 deletions(-) delete mode 100755 integ/minikube_install.sh delete mode 100755 integ/minikube_setup.sh delete mode 100755 integ/minikube_test.sh diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 8be157d3..f4d144f5 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -65,8 +65,8 @@ jobs: with: go-version: 1.12 - name: install - run: integ/minikube_install.sh + run: integ/install.sh - name: setup - run: integ/minikube_setup.sh + run: integ/setup.sh - name: test - run: sudo "PATH=$PATH" "GOPATH=$GOPATH" integ/minikube_test.sh + run: sudo "PATH=$PATH" "GOPATH=$GOPATH" integ/test.sh diff --git a/deploy/role-binding.yaml b/deploy/role-binding.yaml index 15ddf9b1..e46a1f91 100644 --- a/deploy/role-binding.yaml +++ b/deploy/role-binding.yaml @@ -10,5 +10,4 @@ roleRef: subjects: - kind: ServiceAccount name: flinkoperator - # namespace: flink-operator - namespace: flinkoperatortest + namespace: flink-operator diff --git a/deploy/role.yaml b/deploy/role.yaml index f4a55041..ed44bd95 100644 --- a/deploy/role.yaml +++ b/deploy/role.yaml @@ -80,5 +80,4 @@ apiVersion: v1 kind: ServiceAccount metadata: name: flinkoperator - # namespace: flink-operator - namespace: flinkoperatortest + namespace: flink-operator diff --git a/integ/checkpoint_failure_test.go b/integ/checkpoint_failure_test.go index b3f82ecc..55b662a5 100644 --- a/integ/checkpoint_failure_test.go +++ b/integ/checkpoint_failure_test.go @@ -68,10 +68,8 @@ func (s *IntegSuite) TestJobWithTaskFailures(c *C) { log.Info("Starting test TestJobWithTaskFailures") failingJobTest(s, c, "taskfailure", func() { - // f, err := os.OpenFile(s.Util.CheckpointDir+"/fail", os.O_RDONLY|os.O_CREATE, 0666) err := s.Util.ExecuteCommand("minikube", "ssh", "touch /tmp/checkpoints/fail && chmod 0644 /tmp/checkpoints/fail") c.Assert(err, IsNil) - // c.Assert(f.Close(), IsNil) }) log.Info("Completed test TestJobWithTaskFailures") } @@ -83,7 +81,6 @@ func (s *IntegSuite) TestCheckpointTimeout(c *C) { failingJobTest(s, c, "checkpointtimeout", func() { // cause checkpoints to take 120 seconds err := s.Util.ExecuteCommand("minikube", "ssh", "echo 120000 >> /tmp/checkpoints/checkpoint_delay && sudo chmod 0644 /tmp/checkpoints/checkpoint_delay") - // err := ioutil.WriteFile(s.Util.CheckpointDir+"/checkpoint_delay", []byte("120000"), 0644) c.Assert(err, IsNil) }) log.Info("Completed test TestCheckpointTimeout") diff --git a/integ/install.sh b/integ/install.sh index b63beff5..beceeaa5 100755 --- a/integ/install.sh +++ b/integ/install.sh @@ -2,10 +2,11 @@ set -e -sudo snap install microk8s --classic --channel=1.13/stable -microk8s.status --wait-ready -microk8s.enable dns -microk8s.enable registry +curl -LO -s https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 +sudo install minikube-linux-amd64 /usr/local/bin/minikube + +minikube config set memory 6800 +minikube start --kubernetes-version=v1.20.15 sh boilerplate/lyft/golang_test_targets/dep_install.sh diff --git a/integ/job_cancellation_test.go b/integ/job_cancellation_test.go index 47cf051c..3daba8a7 100644 --- a/integ/job_cancellation_test.go +++ b/integ/job_cancellation_test.go @@ -160,8 +160,6 @@ func (s *IntegSuite) TestCancelledJobWithoutSavepoint(c *C) { job := s.Util.GetJobOverview(currApp) c.Assert(job["status"], Equals, "RUNNING") - time.Sleep(10 * time.Second) - // trigger a cancel on the existing job endpoint := fmt.Sprintf("jobs/%s?mode=cancel", currApp.Status.JobStatus.JobID) _, err = s.Util.FlinkAPIPatch(currApp, endpoint) diff --git a/integ/main_test.go b/integ/main_test.go index 0dd3ceef..ded07e69 100644 --- a/integ/main_test.go +++ b/integ/main_test.go @@ -92,12 +92,16 @@ func (s *IntegSuite) SetUpSuite(c *C) { } }() } else { - if err = s.Util.ExecuteCommand("kubectl", "create", "-f", "../deploy/role.yaml"); err != nil { + if err = s.Util.CreateRole(); err != nil { c.Fatalf("Failed to create role: %v", err) } - if err = s.Util.ExecuteCommand("kubectl", "create", "-f", "../deploy/role-binding.yaml"); err != nil { - c.Fatalf("Failed to create role binding: %v", err) + if err = s.Util.CreateServiceAccount(); err != nil { + c.Fatalf("Failed to create service account: %v", err) + } + + if err = s.Util.CreateClusterRoleBinding(); err != nil { + c.Fatalf("Failed to create cluster role binding: %v", err) } if err = s.Util.CreateOperator(); err != nil { @@ -119,14 +123,11 @@ func (s *IntegSuite) TearDownSuite(c *C) { func (s *IntegSuite) SetUpTest(c *C) { // create checkpoint directory - //if _, err := os.Stat(s.Util.CheckpointDir); os.IsNotExist(err) { - // c.Assert(os.Mkdir(s.Util.CheckpointDir, 0777), IsNil) - //} - if err := s.Util.ExecuteCommand("minikube", "ssh", "sudo mkdir /tmp/checkpoints"); err != nil { + if err := s.Util.ExecuteCommand("minikube", "ssh", "sudo mkdir /tmp/checkpoints && sudo chmod -R 0777 /tmp/checkpoints"); err != nil { c.Fatalf("Failed to create checkpoint directory: %v", err) } - if err := s.Util.ExecuteCommand("minikube", "ssh", "sudo chmod -R 0777 /tmp/checkpoints"); err != nil { + if err := s.Util.ExecuteCommand("minikube", "ssh", ""); err != nil { c.Fatalf("Failed to elevate permissions on checkpoint directory: %v", err) } } @@ -147,15 +148,19 @@ func (s *IntegSuite) TearDownTest(c *C) { _ = s.Util.GetLogs(jm, nil) } + fmt.Printf("\n\n######### Nodes for debugging #########\n---------------------------\n") err = s.Util.ExecuteCommand("kubectl", "describe", "nodes") c.Assert(err, IsNil) + fmt.Printf("\n\n######### Pods for debugging #########\n---------------------------\n") err = s.Util.ExecuteCommand("kubectl", "get", "pods", "-n", "flinkoperatortest") c.Assert(err, IsNil) + fmt.Printf("\n\n######### Pod details for debugging #########\n---------------------------\n") err = s.Util.ExecuteCommand("kubectl", "describe", "pods", "-n", "flinkoperatortest") c.Assert(err, IsNil) + fmt.Printf("\n\n######### Flink Applications for debugging #########\n---------------------------\n") err = s.Util.ExecuteCommand("kubectl", "describe", "flinkapplications", "-n", "flinkoperatortest") c.Assert(err, IsNil) @@ -164,11 +169,6 @@ func (s *IntegSuite) TearDownTest(c *C) { log.Fatalf("Failed to clean up flink applications: %v", err) } - //err = os.RemoveAll(s.Util.CheckpointDir) - //if err != nil { - // log.Fatalf("Failed to clean up checkpoints directory: %v", err) - //} - if err := s.Util.ExecuteCommand("minikube", "ssh", "sudo rm -rf /tmp/checkpoints"); err != nil { c.Fatalf("Failed to delete checkpoint directory: %v", err) } diff --git a/integ/minikube_install.sh b/integ/minikube_install.sh deleted file mode 100755 index beceeaa5..00000000 --- a/integ/minikube_install.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env sh - -set -e - -curl -LO -s https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 -sudo install minikube-linux-amd64 /usr/local/bin/minikube - -minikube config set memory 6800 -minikube start --kubernetes-version=v1.20.15 - -sh boilerplate/lyft/golang_test_targets/dep_install.sh - -dep ensure diff --git a/integ/minikube_setup.sh b/integ/minikube_setup.sh deleted file mode 100755 index 788a31c7..00000000 --- a/integ/minikube_setup.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env bash - -# Test App Setup - -#cd integ/operator-test-app -#export TEST_APP_IMAGE=operator-test-app:$(git rev-parse HEAD) -#docker build -t $TEST_APP_IMAGE . -#docker tag $TEST_APP_IMAGE flink-test-app:local.1 -#docker tag $TEST_APP_IMAGE flink-test-app:local.2 -#minikube image load flink-test-app:local.1 -#minikube image load flink-test-app:local.2 -# -#cd ../../ - -docker pull lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 -docker pull lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.2 -minikube image load lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 -minikube image load lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.2 - - -# Operator Setup - -export DOCKER_IMAGE=flinkk8soperator:$(git rev-parse HEAD) -export OPERATOR_IMAGE=flinkk8soperator:local - -docker build -t $DOCKER_IMAGE . -docker tag $DOCKER_IMAGE $OPERATOR_IMAGE -minikube image load $OPERATOR_IMAGE - -kubectl proxy --port 8001 & diff --git a/integ/minikube_test.sh b/integ/minikube_test.sh deleted file mode 100755 index aa25375f..00000000 --- a/integ/minikube_test.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash - -set -e - -export INTEGRATION=true -export OPERATOR_IMAGE=flinkk8soperator:local - -cd $(dirname "$0") -go test -p 1 -timeout 40m -check.vv IntegSuite diff --git a/integ/scaleup_test.go b/integ/scaleup_test.go index 696b6c76..cdeab3ed 100644 --- a/integ/scaleup_test.go +++ b/integ/scaleup_test.go @@ -1,5 +1,6 @@ package integ +// TODO: https://github.com/lyft/flinkk8soperator/issues/278 //func (s *IntegSuite) TestInPlaceScaleUp(c *C) { // log.Info("Starting test TestInPlaceScaleUp") // diff --git a/integ/setup.sh b/integ/setup.sh index c049de3f..5871435b 100755 --- a/integ/setup.sh +++ b/integ/setup.sh @@ -1,24 +1,31 @@ #!/usr/bin/env bash -cd integ/operator-test-app -export TEST_APP_IMAGE=operator-test-app:$(git rev-parse HEAD) -microk8s.docker build -t ${TEST_APP_IMAGE} . -microk8s.docker tag $TEST_APP_IMAGE 127.0.0.1:3200/flink-test-app:local.1 -microk8s.docker tag $TEST_APP_IMAGE 127.0.0.1:3200/flink-test-app:local.2 -microk8s.docker push 127.0.0.1:3200/flink-test-app:local.1 -microk8s.docker push 127.0.0.1:3200/flink-test-app:local.2 +# Test App Setup -cd ../../ +# TODO: upgrade flink test app from 1.8 +#cd integ/operator-test-app +#export TEST_APP_IMAGE=operator-test-app:$(git rev-parse HEAD) +#docker build -t $TEST_APP_IMAGE . +#docker tag $TEST_APP_IMAGE flink-test-app:local.1 +#docker tag $TEST_APP_IMAGE flink-test-app:local.2 +#minikube image load flink-test-app:local.1 +#minikube image load flink-test-app:local.2 +# +#cd ../../ + +docker pull lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 +docker pull lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.2 +minikube image load lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 +minikube image load lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.2 -export DOCKER_IMAGE=flinkk8soperator:$(git rev-parse HEAD) -export OPERATOR_IMAGE=127.0.0.1:32000/flinkk8soperator:local -microk8s.docker build -t $DOCKER_IMAGE . -microk8s.docker tag $DOCKER_IMAGE $OPERATOR_IMAGE -microk8s.docker push 127.0.0.1:32000/flinkk8soperator +# Operator Setup + +export DOCKER_IMAGE=flinkk8soperator:$(git rev-parse HEAD) +export OPERATOR_IMAGE=flinkk8soperator:local -microk8s.start -microk8s.status --wait-ready +docker build -t $DOCKER_IMAGE . +docker tag $DOCKER_IMAGE $OPERATOR_IMAGE +minikube image load $OPERATOR_IMAGE -microk8s.kubectl proxy --port 8001 & -microk8s.kubectl config view > ~/.kube/config +kubectl proxy --port 8001 & diff --git a/integ/simple_test.go b/integ/simple_test.go index 1d3e0dc2..553ea978 100644 --- a/integ/simple_test.go +++ b/integ/simple_test.go @@ -14,9 +14,6 @@ import ( v1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) -// const NewImage = "flink-test-app:local.2" - -// const NewImage = "operator-test-app:test1.2" const NewImage = "lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.2" func updateAndValidate(c *C, s *IntegSuite, name string, updateFn func(app *v1beta1.FlinkApplication), failurePhase v1beta1.FlinkApplicationPhase) *v1beta1.FlinkApplication { @@ -321,9 +318,7 @@ func (s *IntegSuite) TestRecovery(c *C) { // cause the app to start failing err = s.Util.ExecuteCommand("minikube", "ssh", "touch /tmp/checkpoints/fail && chmod 0644 /tmp/checkpoints/fail") - // f, err := os.OpenFile(s.Util.CheckpointDir+"/fail", os.O_RDONLY|os.O_CREATE, 0666) c.Assert(err, IsNil) - // c.Assert(f.Close(), IsNil) log.Info("Triggered failure") @@ -353,7 +348,6 @@ func (s *IntegSuite) TestRecovery(c *C) { // stop it from failing c.Assert(s.Util.ExecuteCommand("minikube", "ssh", "sudo rm /tmp/checkpoints/fail"), IsNil) - // c.Assert(os.Remove(s.Util.CheckpointDir+"/fail"), IsNil) c.Assert(s.Util.WaitForAllTasksRunning(config.Name), IsNil) // delete the application diff --git a/integ/test.sh b/integ/test.sh index 626fd42e..aa25375f 100755 --- a/integ/test.sh +++ b/integ/test.sh @@ -3,11 +3,7 @@ set -e export INTEGRATION=true -export OPERATOR_IMAGE=127.0.0.1:32000/flinkk8soperator:local - -# needed to create the checkpoints directory with world-writable permissions -umask 000 +export OPERATOR_IMAGE=flinkk8soperator:local cd $(dirname "$0") -go test -p 1 -timeout 10m -check.vv IntegSuite - +go test -p 1 -timeout 40m -check.vv IntegSuite diff --git a/integ/test_app.yaml b/integ/test_app.yaml index 4fcda4d6..03189bf3 100644 --- a/integ/test_app.yaml +++ b/integ/test_app.yaml @@ -6,29 +6,11 @@ metadata: labels: environment: development spec: - # image: flink-test-app:local.1 - # image: operator-test-app:test1 image: lyft/operator-test-app:b1b3cb8e8f98bd41f44f9c89f8462ce255e0d13f.1 imagePullPolicy: IfNotPresent imagePullSecrets: - name: dockerhub flinkConfig: -# jobmanager.memory.jvm-overhead.min: "50 mb" -# jobmanager.memory.jvm-metaspace.size: "80 mb" -# jobmanager.memory.off-heap.size: "40 mb" -# taskmanager.memory.jvm-overhead.min: "30 mb" -# taskmanager.memory.jvm-metaspace.size: "50 mb" -# taskmanager.memory.off-heap.size: "20 mb" - -# -# taskmanager.memory.task.heap.size: "80 mb" -# taskmanager.memory.managed.fraction: 0.1 -# taskmanager.memory.task.off-heap.size: "100 mb" - - - # taskmanager.memory.network.min: "20 mb" -# taskmanager.memory.framework.heap.size: "20 mb" -# taskmanager.memory.framework.off-heap.size: "20 mb" state.backend.fs.checkpointdir: file:///checkpoints/flink/checkpoints state.checkpoints.dir: file:///checkpoints/flink/externalized-checkpoints state.savepoints.dir: file:///checkpoints/flink/savepoints diff --git a/integ/utils/utils.go b/integ/utils/utils.go index d4c4ebd8..f89187a2 100644 --- a/integ/utils/utils.go +++ b/integ/utils/utils.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "io" + v12 "k8s.io/api/rbac/v1" "os" "os/exec" "path/filepath" @@ -153,6 +154,61 @@ func (f *TestUtil) CreateCRD() error { return nil } +func (f *TestUtil) CreateRole() error { + file, err := getFile("../deploy/role.yaml") + if err != nil { + return err + } + + clusterRole := v12.ClusterRole{} + err = yaml.NewYAMLOrJSONDecoder(file, 1024).Decode(&clusterRole) + + _, err = f.KubeClient.RbacV1().ClusterRoles().Create(&clusterRole) + if err != nil { + return err + } + + return nil +} + +func (f *TestUtil) CreateServiceAccount() error { + file, err := getFile("../deploy/role.yaml") + if err != nil { + return err + } + + serviceAccount := v1.ServiceAccount{} + err = yaml.NewYAMLOrJSONDecoder(file, 1024).Decode(&serviceAccount) + + serviceAccount.Namespace = f.Namespace.Name + + _, err = f.KubeClient.CoreV1().ServiceAccounts(f.Namespace.Name).Create(&serviceAccount) + if err != nil { + return err + } + + return nil +} + +func (f *TestUtil) CreateClusterRoleBinding() error { + file, err := getFile("../deploy/role-binding.yaml") + if err != nil { + return err + } + + clusterRoleBinding := v12.ClusterRoleBinding{} + err = yaml.NewYAMLOrJSONDecoder(file, 1024).Decode(&clusterRoleBinding) + + clusterRoleBinding.Namespace = f.Namespace.Name + + _, err = f.KubeClient.RbacV1().ClusterRoleBindings().Create(&clusterRoleBinding) + if err != nil { + return err + } + + return nil +} + func (f *TestUtil) CreateOperator() error { configValue := make(map[string]string) configValue["development"] = "operator:\n containerNameFormat: \"%s-unknown\"\n resyncPeriod: 5s\n" + @@ -399,7 +455,7 @@ func (f *TestUtil) WaitForPhase(name string, phase flinkapp.FlinkApplicationPhas time.Sleep(1 * time.Second) if waitTime > 500 { - return errors.New("did not get to phase Running") + return errors.New(fmt.Sprintf("Timed out 500s before reaching phase %s", phase.VerboseString())) } } } From 09b094d6f6429b3b8a55f3b5a49c3ca5b431c12a Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Tue, 28 Mar 2023 15:44:02 -0700 Subject: [PATCH 55/79] update readme --- integ/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integ/README.md b/integ/README.md index 5ce36f3d..9415e5d6 100644 --- a/integ/README.md +++ b/integ/README.md @@ -99,7 +99,7 @@ and the upgrade is non-trivial. kubectl proxy --port 8001 & 5. Set up test app images and operator image - integ/minikube_setup.sh + integ/setup.sh 8. Set the following for the Go test: Package path: github.com/lyft/flinkk8soperator/integ From 54c61afe49e4fedc4fd7b78295cfcfde01dbd44f Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Tue, 28 Mar 2023 15:51:01 -0700 Subject: [PATCH 56/79] update local dev docs --- docs/local_dev.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/local_dev.md b/docs/local_dev.md index 50d1cbbb..31325894 100644 --- a/docs/local_dev.md +++ b/docs/local_dev.md @@ -7,11 +7,11 @@ to develop their applications locally. ## Run the operator -### Install [Docker for Mac](https://docs.docker.com/docker-for-mac/install/) +### Install [Minikube](https://minikube.sigs.k8s.io/docs/start/#what-youll-need) + +You will want to start minikube on <=1.20, for example: +`minikube start --kubernetes-version=v1.20.15` -Once installed and running, enabled Kuberenetes in settings (from the -docker icon in the menu bar, click Preferences -> Kubernetes -> Enable -Kubernetes). ### (Optional) Setup kubernetes dashboard @@ -46,6 +46,12 @@ $ cd flinkk8soperator $ kubectl create -f deploy/crd.yaml ``` +### Install permissions +``` bash +$ kubectl create -f deploy/role.yaml +$ kubectl create -f deploy/role-binding.yaml +``` + ### Start the operator #### Option 1: run outside the kubernetes cluster From 13ac8c0510e26720509560a70c0bf1fc6c4628e1 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Tue, 28 Mar 2023 15:59:46 -0700 Subject: [PATCH 57/79] update ubuntu --- .github/workflows/actions.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index f4d144f5..dbdd6bd3 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -6,7 +6,7 @@ on: branches: [ master ] jobs: unit-tests: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 defaults: run: working-directory: go/src/github.com/lyft/flinkk8soperator @@ -48,7 +48,7 @@ jobs: - name: test run: make lint integration-tests: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 defaults: run: working-directory: go/src/github.com/lyft/flinkk8soperator From 138b0a439d40beae9d4be1d43f6106cf6bf4ae38 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Tue, 28 Mar 2023 16:00:45 -0700 Subject: [PATCH 58/79] update ubuntu --- .github/workflows/actions.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index dbdd6bd3..f3c1bac4 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -27,7 +27,7 @@ jobs: - name: test run: make test_unit lint: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 defaults: run: working-directory: go/src/github.com/lyft/flinkk8soperator From 73a17cfa4834152a87f5fbfba743f39ba7f6c2d7 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Wed, 29 Mar 2023 11:56:18 -0700 Subject: [PATCH 59/79] see if kube config directory issue is due to ubuntu upgrade --- .github/workflows/actions.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index f3c1bac4..f4d144f5 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -6,7 +6,7 @@ on: branches: [ master ] jobs: unit-tests: - runs-on: ubuntu-20.04 + runs-on: ubuntu-18.04 defaults: run: working-directory: go/src/github.com/lyft/flinkk8soperator @@ -27,7 +27,7 @@ jobs: - name: test run: make test_unit lint: - runs-on: ubuntu-20.04 + runs-on: ubuntu-18.04 defaults: run: working-directory: go/src/github.com/lyft/flinkk8soperator @@ -48,7 +48,7 @@ jobs: - name: test run: make lint integration-tests: - runs-on: ubuntu-20.04 + runs-on: ubuntu-18.04 defaults: run: working-directory: go/src/github.com/lyft/flinkk8soperator From b1dfd96bb62e24a4226f0ebcac640c3bd066da5c Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Wed, 29 Mar 2023 11:58:12 -0700 Subject: [PATCH 60/79] remove unused minikube command --- integ/main_test.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/integ/main_test.go b/integ/main_test.go index ded07e69..8adea81a 100644 --- a/integ/main_test.go +++ b/integ/main_test.go @@ -126,10 +126,6 @@ func (s *IntegSuite) SetUpTest(c *C) { if err := s.Util.ExecuteCommand("minikube", "ssh", "sudo mkdir /tmp/checkpoints && sudo chmod -R 0777 /tmp/checkpoints"); err != nil { c.Fatalf("Failed to create checkpoint directory: %v", err) } - - if err := s.Util.ExecuteCommand("minikube", "ssh", ""); err != nil { - c.Fatalf("Failed to elevate permissions on checkpoint directory: %v", err) - } } func (s *IntegSuite) TearDownTest(c *C) { From c928440766fba95f843b9b9febd9d2757a6f27fa Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Wed, 29 Mar 2023 13:42:54 -0700 Subject: [PATCH 61/79] fix namespace in clusterrolebinding --- integ/main_test.go | 6 +++--- integ/utils/utils.go | 7 ++++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/integ/main_test.go b/integ/main_test.go index 8adea81a..4e9342b1 100644 --- a/integ/main_test.go +++ b/integ/main_test.go @@ -92,15 +92,15 @@ func (s *IntegSuite) SetUpSuite(c *C) { } }() } else { - if err = s.Util.CreateRole(); err != nil { + if err = s.Util.CreateClusterRole(); err != nil && !k8sErrors.IsAlreadyExists(err) { c.Fatalf("Failed to create role: %v", err) } - if err = s.Util.CreateServiceAccount(); err != nil { + if err = s.Util.CreateServiceAccount(); err != nil && !k8sErrors.IsAlreadyExists(err) { c.Fatalf("Failed to create service account: %v", err) } - if err = s.Util.CreateClusterRoleBinding(); err != nil { + if err = s.Util.CreateClusterRoleBinding(); err != nil && !k8sErrors.IsAlreadyExists(err) { c.Fatalf("Failed to create cluster role binding: %v", err) } diff --git a/integ/utils/utils.go b/integ/utils/utils.go index f89187a2..1c94d552 100644 --- a/integ/utils/utils.go +++ b/integ/utils/utils.go @@ -154,7 +154,7 @@ func (f *TestUtil) CreateCRD() error { return nil } -func (f *TestUtil) CreateRole() error { +func (f *TestUtil) CreateClusterRole() error { file, err := getFile("../deploy/role.yaml") if err != nil { return err @@ -199,6 +199,11 @@ func (f *TestUtil) CreateClusterRoleBinding() error { clusterRoleBinding := v12.ClusterRoleBinding{} err = yaml.NewYAMLOrJSONDecoder(file, 1024).Decode(&clusterRoleBinding) + clusterRoleBinding.Subjects = []v12.Subject{{ + Kind: "ServiceAccount", + Name: "flinkoperator", + Namespace: f.Namespace.Name, + }} clusterRoleBinding.Namespace = f.Namespace.Name _, err = f.KubeClient.RbacV1().ClusterRoleBindings().Create(&clusterRoleBinding) From de9651feb1445b3ea23796fe27c9bdadb737fd81 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Wed, 29 Mar 2023 13:47:06 -0700 Subject: [PATCH 62/79] fix lint issues --- integ/utils/utils.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/integ/utils/utils.go b/integ/utils/utils.go index 1c94d552..d2fef028 100644 --- a/integ/utils/utils.go +++ b/integ/utils/utils.go @@ -162,6 +162,9 @@ func (f *TestUtil) CreateClusterRole() error { clusterRole := v12.ClusterRole{} err = yaml.NewYAMLOrJSONDecoder(file, 1024).Decode(&clusterRole) + if err != nil { + return err + } _, err = f.KubeClient.RbacV1().ClusterRoles().Create(&clusterRole) if err != nil { @@ -179,6 +182,9 @@ func (f *TestUtil) CreateServiceAccount() error { serviceAccount := v1.ServiceAccount{} err = yaml.NewYAMLOrJSONDecoder(file, 1024).Decode(&serviceAccount) + if err != nil { + return err + } serviceAccount.Namespace = f.Namespace.Name @@ -198,6 +204,9 @@ func (f *TestUtil) CreateClusterRoleBinding() error { clusterRoleBinding := v12.ClusterRoleBinding{} err = yaml.NewYAMLOrJSONDecoder(file, 1024).Decode(&clusterRoleBinding) + if err != nil { + return err + } clusterRoleBinding.Subjects = []v12.Subject{{ Kind: "ServiceAccount", @@ -460,7 +469,7 @@ func (f *TestUtil) WaitForPhase(name string, phase flinkapp.FlinkApplicationPhas time.Sleep(1 * time.Second) if waitTime > 500 { - return errors.New(fmt.Sprintf("Timed out 500s before reaching phase %s", phase.VerboseString())) + return fmt.Errorf("timed out 500s before reaching phase %s", phase.VerboseString()) } } } From 1dd47881cd26a087f26a382c94b0e936d52ca6a9 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Wed, 29 Mar 2023 14:04:41 -0700 Subject: [PATCH 63/79] move import for lint --- integ/utils/utils.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integ/utils/utils.go b/integ/utils/utils.go index d2fef028..b3fc6b77 100644 --- a/integ/utils/utils.go +++ b/integ/utils/utils.go @@ -5,7 +5,6 @@ import ( "errors" "fmt" "io" - v12 "k8s.io/api/rbac/v1" "os" "os/exec" "path/filepath" @@ -21,6 +20,7 @@ import ( "github.com/prometheus/common/log" appsv1 "k8s.io/api/apps/v1" v1 "k8s.io/api/core/v1" + v12 "k8s.io/api/rbac/v1" "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" apiextensionsClientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset" "k8s.io/apimachinery/pkg/api/resource" From 63b6797a442202bfbb5f617db2fdd93d8c742c9b Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Wed, 29 Mar 2023 14:05:34 -0700 Subject: [PATCH 64/79] upgrade ubuntu again --- .github/workflows/actions.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index f4d144f5..f3c1bac4 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -6,7 +6,7 @@ on: branches: [ master ] jobs: unit-tests: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 defaults: run: working-directory: go/src/github.com/lyft/flinkk8soperator @@ -27,7 +27,7 @@ jobs: - name: test run: make test_unit lint: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 defaults: run: working-directory: go/src/github.com/lyft/flinkk8soperator @@ -48,7 +48,7 @@ jobs: - name: test run: make lint integration-tests: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 defaults: run: working-directory: go/src/github.com/lyft/flinkk8soperator From 1cbc3f69be6dd6d6167780187a60982c5d3786a3 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Wed, 29 Mar 2023 16:24:55 -0700 Subject: [PATCH 65/79] attempt to fix ubuntu upgrade issue --- integ/install.sh | 3 +++ integ/utils/utils.go | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/integ/install.sh b/integ/install.sh index beceeaa5..66c0d970 100755 --- a/integ/install.sh +++ b/integ/install.sh @@ -4,6 +4,9 @@ set -e curl -LO -s https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube +ls /etc/kubernetes/ +cat /etc/kubernetes/admin.conf +cp /etc/kubernetes/admin.conf $HOME/.kube/config minikube config set memory 6800 minikube start --kubernetes-version=v1.20.15 diff --git a/integ/utils/utils.go b/integ/utils/utils.go index b3fc6b77..b26635d9 100644 --- a/integ/utils/utils.go +++ b/integ/utils/utils.go @@ -117,7 +117,6 @@ func (f *TestUtil) ExecuteCommand(name string, arg ...string) error { return err } - // Print the output fmt.Println(string(stdout)) return nil From 3db9f0c0bd588aaf27f82e0711788235ca12118e Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Wed, 29 Mar 2023 16:26:02 -0700 Subject: [PATCH 66/79] after cluster start --- integ/install.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/integ/install.sh b/integ/install.sh index 66c0d970..a5012ac5 100755 --- a/integ/install.sh +++ b/integ/install.sh @@ -4,13 +4,14 @@ set -e curl -LO -s https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube -ls /etc/kubernetes/ -cat /etc/kubernetes/admin.conf -cp /etc/kubernetes/admin.conf $HOME/.kube/config minikube config set memory 6800 minikube start --kubernetes-version=v1.20.15 +ls /etc/kubernetes/ +cat /etc/kubernetes/admin.conf +cp /etc/kubernetes/admin.conf $HOME/.kube/config + sh boilerplate/lyft/golang_test_targets/dep_install.sh dep ensure From 6e86f7035d870c81c57a61215a729e85eddf686c Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Wed, 29 Mar 2023 16:28:25 -0700 Subject: [PATCH 67/79] check if kube dir exists --- integ/install.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/integ/install.sh b/integ/install.sh index a5012ac5..98ec1e2a 100755 --- a/integ/install.sh +++ b/integ/install.sh @@ -8,9 +8,9 @@ sudo install minikube-linux-amd64 /usr/local/bin/minikube minikube config set memory 6800 minikube start --kubernetes-version=v1.20.15 -ls /etc/kubernetes/ -cat /etc/kubernetes/admin.conf -cp /etc/kubernetes/admin.conf $HOME/.kube/config +echo $HOME/.kube/config +ls $HOME/.kube/ +cat $HOME/.kube/config sh boilerplate/lyft/golang_test_targets/dep_install.sh From 7fab7cc89d77b2bf224c183809f1c6ca6aef8da9 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Wed, 29 Mar 2023 16:41:07 -0700 Subject: [PATCH 68/79] set kube config location --- integ/install.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/integ/install.sh b/integ/install.sh index 98ec1e2a..45a171d9 100755 --- a/integ/install.sh +++ b/integ/install.sh @@ -8,9 +8,7 @@ sudo install minikube-linux-amd64 /usr/local/bin/minikube minikube config set memory 6800 minikube start --kubernetes-version=v1.20.15 -echo $HOME/.kube/config -ls $HOME/.kube/ -cat $HOME/.kube/config +export KUBERNETES_CONFIG=/home/runner/.kube/config sh boilerplate/lyft/golang_test_targets/dep_install.sh From 11fbbe8ab57a49832fe9f0322cdeb34be319a2d0 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Wed, 29 Mar 2023 17:04:11 -0700 Subject: [PATCH 69/79] check kube config env var --- integ/main_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/integ/main_test.go b/integ/main_test.go index 4e9342b1..4a3ce8c9 100644 --- a/integ/main_test.go +++ b/integ/main_test.go @@ -51,6 +51,7 @@ func (s *IntegSuite) SetUpSuite(c *C) { } kubeconfig := os.Getenv("KUBERNETES_CONFIG") + fmt.Printf("Kube config: %s", kubeconfig) if kubeconfig == "" { kubeconfig = filepath.Join(homedir.HomeDir(), ".kube", "config") err := os.Setenv("KUBERNETES_CONFIG", kubeconfig) From 69ccd27bd7057aa66eb5739528f38e5b11c065c2 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Wed, 29 Mar 2023 17:08:43 -0700 Subject: [PATCH 70/79] move env var to test.sh since sudo --- integ/install.sh | 2 -- integ/test.sh | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/integ/install.sh b/integ/install.sh index 45a171d9..beceeaa5 100755 --- a/integ/install.sh +++ b/integ/install.sh @@ -8,8 +8,6 @@ sudo install minikube-linux-amd64 /usr/local/bin/minikube minikube config set memory 6800 minikube start --kubernetes-version=v1.20.15 -export KUBERNETES_CONFIG=/home/runner/.kube/config - sh boilerplate/lyft/golang_test_targets/dep_install.sh dep ensure diff --git a/integ/test.sh b/integ/test.sh index aa25375f..b0d78064 100755 --- a/integ/test.sh +++ b/integ/test.sh @@ -4,6 +4,7 @@ set -e export INTEGRATION=true export OPERATOR_IMAGE=flinkk8soperator:local +export KUBERNETES_CONFIG=/home/runner/.kube/config cd $(dirname "$0") go test -p 1 -timeout 40m -check.vv IntegSuite From 21b7f7b708ac8c1ce5e3c8279fd9b53a49a10a65 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Wed, 29 Mar 2023 17:17:10 -0700 Subject: [PATCH 71/79] update docs --- integ/README.md | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/integ/README.md b/integ/README.md index 9415e5d6..0358709e 100644 --- a/integ/README.md +++ b/integ/README.md @@ -88,31 +88,38 @@ that is compatible with v1beta1 CRD's which corresponds to <1.22. CRD's v1 is only available with client >=1.16, however, the client used here is 1.14 and the upgrade is non-trivial. +Ran on: +- Go 1.12 +- Docker desktop 4.5.0 +- Minikube v1.29.0 (running 1.20.15) +- i9 Ventura 13.2.1 +- GoLand 2021.3.3 + 1. Install Dependencies - Run dep ensure -vendor-only + Run `dep ensure -vendor-only` 3. Start minikube - minikube start --kubernetes-version=v1.20.15 + `minikube start --kubernetes-version=v1.20.15` 4. Proxy minikube - kubectl proxy --port 8001 & + `kubectl proxy --port 8001 &` 5. Set up test app images and operator image - integ/setup.sh + `integ/setup.sh` 8. Set the following for the Go test: - Package path: github.com/lyft/flinkk8soperator/integ - Env: INTEGRATION=true;OPERATOR_IMAGE=flinkk8soperator:local;RUN_DIRECT=true - Program Args: -timeout 40m -check.vv IntegTest + Package path: `github.com/lyft/flinkk8soperator/integ` + Env: `INTEGRATION=true;OPERATOR_IMAGE=flinkk8soperator:local;RUN_DIRECT=true` + Program Args: `-timeout 40m -check.vv IntegTest` Helpers: - Kill kube proxy - ps -ef | grep "kubectl proxy" - kill -9 + `ps -ef | grep "kubectl proxy"` + `kill -9 ` - Kill stuck flink app - kubectl patch FlinkApplication invalidcanceljob -p '{"metadata":{"finalizers":[]}}' --type=merge + `kubectl patch FlinkApplication invalidcanceljob -p '{"metadata":{"finalizers":[]}}' --type=merge` - Set default namespace - kubectl config set-context --current --namespace=flinkoperatortest + `kubectl config set-context --current --namespace=flinkoperatortest` From 25792001207b40ab5cd173472bcddeb4e3fb678c Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Thu, 30 Mar 2023 05:36:15 -0700 Subject: [PATCH 72/79] upgrade newer ubuntu. all setup sudo so home is same --- .github/workflows/actions.yml | 10 +++++----- integ/test.sh | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index f3c1bac4..cdb00272 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -6,7 +6,7 @@ on: branches: [ master ] jobs: unit-tests: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 defaults: run: working-directory: go/src/github.com/lyft/flinkk8soperator @@ -27,7 +27,7 @@ jobs: - name: test run: make test_unit lint: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 defaults: run: working-directory: go/src/github.com/lyft/flinkk8soperator @@ -48,7 +48,7 @@ jobs: - name: test run: make lint integration-tests: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 defaults: run: working-directory: go/src/github.com/lyft/flinkk8soperator @@ -65,8 +65,8 @@ jobs: with: go-version: 1.12 - name: install - run: integ/install.sh + run: sudo integ/install.sh - name: setup - run: integ/setup.sh + run: sudo integ/setup.sh - name: test run: sudo "PATH=$PATH" "GOPATH=$GOPATH" integ/test.sh diff --git a/integ/test.sh b/integ/test.sh index b0d78064..a9b19112 100755 --- a/integ/test.sh +++ b/integ/test.sh @@ -4,7 +4,7 @@ set -e export INTEGRATION=true export OPERATOR_IMAGE=flinkk8soperator:local -export KUBERNETES_CONFIG=/home/runner/.kube/config +# export KUBERNETES_CONFIG=/home/runner/.kube/config cd $(dirname "$0") go test -p 1 -timeout 40m -check.vv IntegSuite From 48b2ecf67a77a1289f882adff7cd87270b12cbc1 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Thu, 30 Mar 2023 05:43:20 -0700 Subject: [PATCH 73/79] run tests without sudo --- .github/workflows/actions.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index cdb00272..39a49f00 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -65,8 +65,8 @@ jobs: with: go-version: 1.12 - name: install - run: sudo integ/install.sh + run: integ/install.sh - name: setup - run: sudo integ/setup.sh + run: integ/setup.sh - name: test - run: sudo "PATH=$PATH" "GOPATH=$GOPATH" integ/test.sh + run: "PATH=$PATH" "GOPATH=$GOPATH" integ/test.sh From aba457fd76c053cce052150cc3aad4faa11c64de Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Thu, 30 Mar 2023 05:44:24 -0700 Subject: [PATCH 74/79] fix format --- .github/workflows/actions.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 39a49f00..10016e27 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -69,4 +69,4 @@ jobs: - name: setup run: integ/setup.sh - name: test - run: "PATH=$PATH" "GOPATH=$GOPATH" integ/test.sh + run: PATH=$PATH GOPATH=$GOPATH integ/test.sh From db88cf908b19366446d241c58e7e1b2ab88cceb4 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Thu, 30 Mar 2023 05:58:03 -0700 Subject: [PATCH 75/79] remove commented env var --- integ/test.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/integ/test.sh b/integ/test.sh index a9b19112..aa25375f 100755 --- a/integ/test.sh +++ b/integ/test.sh @@ -4,7 +4,6 @@ set -e export INTEGRATION=true export OPERATOR_IMAGE=flinkk8soperator:local -# export KUBERNETES_CONFIG=/home/runner/.kube/config cd $(dirname "$0") go test -p 1 -timeout 40m -check.vv IntegSuite From 9ceb4e3de2cd9bc5a831f10c3af55835bf428800 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Thu, 30 Mar 2023 06:31:15 -0700 Subject: [PATCH 76/79] fix merge conflict --- .github/workflows/actions.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index a1aa3f3a..098afee1 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -43,7 +43,6 @@ jobs: go-version: "1.20" - name: test run: make lint -<<<<<<< HEAD integration-tests: runs-on: ubuntu-22.04 defaults: From 7fa8f9cdb5e43a4907b2977730464f3d2df2dc77 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Thu, 30 Mar 2023 06:36:26 -0700 Subject: [PATCH 77/79] use go mod in integ test --- integ/install.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/integ/install.sh b/integ/install.sh index beceeaa5..26ef7218 100755 --- a/integ/install.sh +++ b/integ/install.sh @@ -8,6 +8,4 @@ sudo install minikube-linux-amd64 /usr/local/bin/minikube minikube config set memory 6800 minikube start --kubernetes-version=v1.20.15 -sh boilerplate/lyft/golang_test_targets/dep_install.sh - -dep ensure +go mod download From 1eb98c6bc102166d8b918a17d3745b1aad8bd09c Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Thu, 30 Mar 2023 06:38:23 -0700 Subject: [PATCH 78/79] update docs --- docs/local_dev.md | 2 +- integ/README.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/local_dev.md b/docs/local_dev.md index ed4e34a7..1d38b206 100644 --- a/docs/local_dev.md +++ b/docs/local_dev.md @@ -62,7 +62,7 @@ cluster. This is very convinient for development, as we can iterate quickly, use a debugger, etc. ```bash -$ dep ensure +$ go mod download $ KUBERNETES_CONFIG="$HOME/.kube/config" go run ./cmd/flinkk8soperator/main.go --config=local_config.yaml ``` diff --git a/integ/README.md b/integ/README.md index 0358709e..2d4d45b5 100644 --- a/integ/README.md +++ b/integ/README.md @@ -40,7 +40,7 @@ run `umask 000` before running the tests. ``` $ kubectl proxy & -$ dep ensure +$ go mod download ``` ### Running in Direct mode @@ -97,7 +97,7 @@ Ran on: 1. Install Dependencies - Run `dep ensure -vendor-only` + Run `go mod vendor` 3. Start minikube `minikube start --kubernetes-version=v1.20.15` From feede92f76e3008a82b842cdc6757d23285f8845 Mon Sep 17 00:00:00 2001 From: Seth Saperstein Date: Thu, 30 Mar 2023 06:53:59 -0700 Subject: [PATCH 79/79] update go version for integ test --- .github/workflows/actions.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 098afee1..63e099df 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -59,7 +59,7 @@ jobs: - name: install go uses: actions/setup-go@v2 with: - go-version: 1.12 + go-version: "1.20" - name: install run: integ/install.sh - name: setup