From f86a4a93a79be55cefc865de9610ee928a05eab8 Mon Sep 17 00:00:00 2001 From: Andrey Pokhilko Date: Mon, 17 Oct 2022 13:41:08 +0100 Subject: [PATCH] Scanners Integration (#18) * Research scanning * Move files around * Reports the list * Scanner happens * Commit * Work on alternative * refactorings * Progress * Save the state * Commit * Display trivy Results * Checkov also reports * Better display * Correct trivy numbers * Scan pre-install manifest * Readme items * Static checks --- README.md | 24 +- go.mod | 104 ++-- go.sum | 470 +++++++++++-------- pkg/dashboard/api.go | 65 +-- pkg/dashboard/{ => handlers}/helmHandlers.go | 36 +- pkg/dashboard/{ => handlers}/kubeHandlers.go | 10 +- pkg/dashboard/handlers/scannerHandlers.go | 68 +++ pkg/dashboard/scanners/checkov.go | 107 +++++ pkg/dashboard/scanners/trivy.go | 87 ++++ pkg/dashboard/server.go | 29 +- pkg/dashboard/static/actions.js | 48 +- pkg/dashboard/static/details-view.js | 57 ++- pkg/dashboard/static/index.html | 26 +- pkg/dashboard/static/scripts.js | 21 +- pkg/dashboard/{ => subproc}/data.go | 106 ++--- pkg/dashboard/{ => subproc}/data_test.go | 5 +- pkg/dashboard/{ => subproc}/helmTypes.go | 8 +- pkg/dashboard/subproc/scan.go | 15 + pkg/dashboard/utils.go | 33 -- pkg/dashboard/utils/utils.go | 115 +++++ screenshot_scan_manifest.png | Bin 0 -> 117306 bytes screenshot_scan_resource.png | Bin 0 -> 90359 bytes 22 files changed, 995 insertions(+), 439 deletions(-) rename pkg/dashboard/{ => handlers}/helmHandlers.go (79%) rename pkg/dashboard/{ => handlers}/kubeHandlers.go (87%) create mode 100644 pkg/dashboard/handlers/scannerHandlers.go create mode 100644 pkg/dashboard/scanners/checkov.go create mode 100644 pkg/dashboard/scanners/trivy.go rename pkg/dashboard/{ => subproc}/data.go (82%) rename pkg/dashboard/{ => subproc}/data_test.go (91%) rename pkg/dashboard/{ => subproc}/helmTypes.go (90%) create mode 100644 pkg/dashboard/subproc/scan.go delete mode 100644 pkg/dashboard/utils.go create mode 100644 pkg/dashboard/utils/utils.go create mode 100644 screenshot_scan_manifest.png create mode 100644 screenshot_scan_resource.png diff --git a/README.md b/README.md index 70130c0..4d4755b 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,14 @@ The _Helm Dashboard_ plugin offers a UI-driven way to view the installed Helm ch This project is part of [Komodor's](https://komodor.com/?utm_campaign=Helm-Dash&utm_source=helm-dash-gh) vision of helping Kubernetes users to navigate and troubleshoot their clusters. +Some of the key capabilities of the tool: + - See all installed charts and their revision history + - See manifest diff of the past revisions + - Browse k8s resources resulting from the chart + - Easy rollback or upgrade version with a clear and easy manifest diff + - Integration with popular problem scanners + - Easy switch between multiple clusters + ## Installing To install it, simply run Helm command: @@ -48,6 +56,16 @@ If you don't want browser tab to automatically open, set `HD_NOBROWSER=1` in you If you want to increase the logging verbosity and see all the debug info, set `DEBUG=1` environment variable. +## Scanner Integrations + +Upon startup, Helm Dashboard detects the presence of [Trivy](https://github.com/aquasecurity/trivy) and [Checkov](https://github.com/bridgecrewio/checkov) scanners. When available, these scanners are offered on k8s resources page, as well as install/upgrade preview page. + +You can request scanning of the specific k8s resource in your cluster: +![](screenshot_scan_resource.png) + +If you want to validate the k8s manifest prior to installing/reconfiguring a Helm chart, look for "Scan for Problems" button at the bottom of the dialog: +![](screenshot_scan_manifest.png) + ## Support Channels We have two main channels for supporting the Helm Dashboard users: [Slack community](https://komodorkommunity.slack.com/archives/C044U1B0265) for general conversations @@ -78,11 +96,7 @@ and [GitHub issues](https://github.com/komodorio/helm-dashboard/issues) for real - solve umbrella-chart case - Have cleaner idea on the web API structure - Recognise & show ArgoCD-originating charts/objects, those `helm ls` does not show - -#### Topic "Validating Manifests" - -- Validate manifests before deploy and get better errors -- See if we can build in Chechov or Validkube validation +- loki example - DaemonSet and StatefulSet better status display #### Iteration "Value Setting" diff --git a/go.mod b/go.mod index caf539d..b43e014 100644 --- a/go.mod +++ b/go.mod @@ -3,35 +3,38 @@ module github.com/komodorio/helm-dashboard go 1.18 require ( - github.com/Masterminds/semver/v3 v3.1.1 + github.com/aquasecurity/trivy v0.32.1 github.com/gin-gonic/gin v1.8.1 github.com/hexops/gotextdiff v1.0.3 - github.com/sirupsen/logrus v1.8.1 + github.com/sirupsen/logrus v1.9.0 github.com/toqueteos/webbrowser v1.2.0 + gopkg.in/yaml.v3 v3.0.1 helm.sh/helm/v3 v3.9.4 - k8s.io/kubectl v0.24.2 + k8s.io/apimachinery v0.25.0-alpha.2 ) require ( - github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect - github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd // indirect - github.com/PuerkitoBio/purell v1.1.1 // indirect - github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect - github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5 // indirect + github.com/CycloneDX/cyclonedx-go v0.6.0 // indirect + github.com/Masterminds/goutils v1.1.1 // indirect + github.com/Masterminds/semver/v3 v3.1.1 // indirect + github.com/Masterminds/sprig/v3 v3.2.2 // indirect + github.com/Sirupsen/logrus v1.0.6 // indirect + github.com/aquasecurity/go-dep-parser v0.0.0-20220928105313-d3a51fe400e4 // indirect + github.com/aquasecurity/table v1.8.0 // indirect + github.com/aquasecurity/trivy-db v0.0.0-20220627104749-930461748b63 // indirect + github.com/aquasecurity/trivy-kubernetes v0.3.1-0.20220823151349-b90b48958b91 // indirect + github.com/caarlos0/env/v6 v6.10.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd // indirect - github.com/docker/distribution v2.8.1+incompatible // indirect + github.com/docker/libnetwork v0.5.6 // indirect github.com/emicklei/go-restful/v3 v3.8.0 // indirect github.com/evanphx/json-patch v4.12.0+incompatible // indirect - github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d // indirect - github.com/fatih/camelcase v1.0.0 // indirect - github.com/fvbommel/sortorder v1.0.1 // indirect + github.com/fatih/color v1.13.0 // indirect github.com/gin-contrib/sse v0.1.0 // indirect github.com/go-errors/errors v1.0.1 // indirect - github.com/go-logr/logr v1.2.2 // indirect + github.com/go-logr/logr v1.2.3 // indirect github.com/go-openapi/jsonpointer v0.19.5 // indirect - github.com/go-openapi/jsonreference v0.19.5 // indirect - github.com/go-openapi/swag v0.19.14 // indirect + github.com/go-openapi/jsonreference v0.20.0 // indirect + github.com/go-openapi/swag v0.22.3 // indirect github.com/go-playground/locales v0.14.0 // indirect github.com/go-playground/universal-translator v0.18.0 // indirect github.com/go-playground/validator/v10 v10.11.0 // indirect @@ -40,66 +43,81 @@ require ( github.com/golang/protobuf v1.5.2 // indirect github.com/google/btree v1.0.1 // indirect github.com/google/gnostic v0.5.7-v3refs // indirect - github.com/google/go-cmp v0.5.6 // indirect + github.com/google/go-containerregistry v0.11.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/google/uuid v1.2.0 // indirect + github.com/google/uuid v1.3.0 // indirect github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 // indirect - github.com/imdario/mergo v0.3.12 // indirect + github.com/huandu/xstrings v1.3.2 // indirect + github.com/imdario/mergo v0.3.13 // indirect + github.com/in-toto/in-toto-golang v0.3.4-0.20220709202702-fa494aaa0add // indirect github.com/inconshreveable/mousetrap v1.0.0 // indirect - github.com/jonboulle/clockwork v0.2.2 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect + github.com/knqyf263/go-rpm-version v0.0.0-20220614171824-631e686d1075 // indirect github.com/leodido/go-urn v1.2.1 // indirect + github.com/liamg/tml v0.6.0 // indirect github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect - github.com/lithammer/dedent v1.1.0 // indirect - github.com/mailru/easyjson v0.7.6 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/mattn/go-colorable v0.1.12 // indirect github.com/mattn/go-isatty v0.0.16 // indirect - github.com/mitchellh/go-wordwrap v1.0.0 // indirect - github.com/moby/spdystream v0.2.0 // indirect - github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 // indirect + github.com/mattn/go-runewidth v0.0.13 // indirect + github.com/mitchellh/copystructure v1.2.0 // indirect + github.com/mitchellh/hashstructure/v2 v2.0.2 // indirect + github.com/mitchellh/reflectwalk 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/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect github.com/opencontainers/go-digest v1.0.0 // indirect + github.com/owenrumney/go-sarif/v2 v2.1.2 // indirect + github.com/package-url/packageurl-go v0.1.1-0.20220203205134-d70459300c8a // indirect github.com/pelletier/go-toml/v2 v2.0.3 // indirect github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/russross/blackfriday v1.5.2 // indirect - github.com/spf13/cobra v1.4.0 // indirect + github.com/rivo/uniseg v0.2.0 // indirect + github.com/samber/lo v1.27.1 // indirect + github.com/secure-systems-lab/go-securesystemslib v0.4.0 // indirect + github.com/shibumi/go-pathspec v1.3.0 // indirect + github.com/shopspring/decimal v1.2.0 // indirect + github.com/spdx/tools-golang v0.3.0 // indirect + github.com/spf13/cast v1.5.0 // indirect + github.com/spf13/cobra v1.5.0 // indirect github.com/spf13/pflag v1.0.5 // indirect + github.com/stretchr/objx v0.4.0 // indirect github.com/stretchr/testify v1.8.0 // indirect github.com/ugorji/go/codec v1.2.7 // indirect - github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca // indirect + github.com/vishvananda/netlink v1.1.0 // indirect + github.com/vishvananda/netns v0.0.0-20220913150850-18c4f4234207 // indirect + github.com/xlab/treeprint v1.1.0 // indirect + go.etcd.io/bbolt v1.3.6 // indirect go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5 // indirect + go.uber.org/atomic v1.9.0 // indirect + go.uber.org/multierr v1.8.0 // indirect + go.uber.org/zap v1.23.0 // indirect golang.org/x/crypto v0.0.0-20220817201139-bc19a97f63c8 // indirect - golang.org/x/net v0.0.0-20220812174116-3211cb980234 // indirect - golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 // indirect + golang.org/x/exp v0.0.0-20220823124025-807a23277127 // indirect + golang.org/x/net v0.0.0-20220906165146-f3363e06e74c // indirect + golang.org/x/oauth2 v0.0.0-20220718184931-c8730f7fcb92 // indirect + golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 // indirect golang.org/x/sys v0.0.0-20220818161305-2296e01440c6 // indirect - golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect + golang.org/x/term v0.0.0-20220526004731-065cf7ba2467 // indirect golang.org/x/text v0.3.7 // indirect - golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect + golang.org/x/time v0.0.0-20220609170525-579cf78fd858 // indirect + golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/protobuf v1.28.1 // 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/api v0.24.2 // indirect - k8s.io/apimachinery v0.24.2 // indirect - k8s.io/cli-runtime v0.24.2 // indirect - k8s.io/client-go v0.24.2 // indirect - k8s.io/component-base v0.24.2 // indirect - k8s.io/component-helpers v0.24.2 // indirect - k8s.io/klog/v2 v2.60.1 // indirect + k8s.io/api v0.25.0-alpha.2 // indirect + k8s.io/cli-runtime v0.24.4 // indirect + k8s.io/client-go v0.25.0-alpha.2 // indirect + k8s.io/klog/v2 v2.70.0 // indirect k8s.io/kube-openapi v0.0.0-20220627174259-011e075b9cb8 // indirect - k8s.io/metrics v0.24.2 // indirect k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 // indirect sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 // indirect sigs.k8s.io/kustomize/api v0.11.4 // indirect - sigs.k8s.io/kustomize/kustomize/v4 v4.5.4 // indirect sigs.k8s.io/kustomize/kyaml v0.13.6 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.1 // indirect sigs.k8s.io/yaml v1.3.0 // indirect diff --git a/go.sum b/go.sum index e4b2e6c..7d030af 100644 --- a/go.sum +++ b/go.sum @@ -18,15 +18,18 @@ cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmW cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.103.0 h1:YXtxp9ymmZjlGzxV7VrYQ8aaQuAgcqxSy6YhDX4I458= 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/compute v1.7.0 h1:v/k9Eueb8aAJ0vZuxKMrgm6kPhCLZU9HxFU+AFDs9Uk= 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/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= +cloud.google.com/go/iam v0.3.0 h1:exkAomrVUuzx9kWFI1wm3KI0uoDeUFPB4kKGzx6x+Gc= 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= @@ -36,9 +39,9 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo 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= +cloud.google.com/go/storage v1.23.0 h1:wWRIaDURQA8xxHguFCshYepGlrWIrbBnAmc7wfg07qY= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= @@ -47,43 +50,69 @@ github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935 github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/toml v1.2.0 h1:Rt8g24XnyGTyglgET/PRUNlrUeu9F5L+7FilkXfZgs0= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/CycloneDX/cyclonedx-go v0.6.0 h1:SizWGbZzFTC/O/1yh072XQBMxfvsoWqd//oKCIyzFyE= +github.com/CycloneDX/cyclonedx-go v0.6.0/go.mod h1:nQCiF4Tvrg5Ieu8qPhYMvzPGMu5I7fANZkrSsJjl5mg= github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd h1:sjQovDkwrZp8u+gxLtPgKGjk5hCxuy2hrRejBTA9xFU= -github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= +github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= +github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= +github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc= github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/Masterminds/sprig/v3 v3.2.2 h1:17jRggJu518dr3QaafizSXOjKYp94wKfABxUmyxvxX8= +github.com/Masterminds/sprig/v3 v3.2.2/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk= +github.com/Masterminds/squirrel v1.5.3 h1:YPpoceAcxuzIljlr5iWpNKaql7hLeG1KLSrhvdHpkZc= +github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= +github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= +github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C67SkzkDfmQuVln04ygHj3vjZfd9FL+GmQQ= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -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-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/Sirupsen/logrus v1.0.6 h1:HCAGQRk48dRVPA5Y+Yh0qdCSTzPOyU1tBJ7Q9YzotII= +github.com/Sirupsen/logrus v1.0.6/go.mod h1:rmk17hk6i8ZSAJkSDa7nOxamrG+SP4P0mm+DAvExv4U= +github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk= +github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= +github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8= +github.com/alecthomas/chroma v0.10.0 h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbfjek= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/apparentlymart/go-cidr v1.1.0 h1:2mAhrMoF+nhXqxTzSZMUzDHkLjmIHC+Zzn4tdgBZjnU= +github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= +github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= +github.com/aquasecurity/bolt-fixtures v0.0.0-20200903104109-d34e7f983986 h1:2a30xLN2sUZcMXl50hg+PJCIDdJgIvIbVcKqLJ/ZrtM= +github.com/aquasecurity/defsec v0.75.3 h1:mQ4ihStPsibq9zcTxq5Qz2pT23EAVJALO5b5KYTQWiY= +github.com/aquasecurity/go-dep-parser v0.0.0-20220928105313-d3a51fe400e4 h1:Bzwh7XCoC71R5CBCr6IHkuRt7UBdwaUHX8XPWfYkvDM= +github.com/aquasecurity/go-dep-parser v0.0.0-20220928105313-d3a51fe400e4/go.mod h1:6G1Y5nht5TL9kr1SzmrdE8PrmbNXo9nHx3qFR3qURg0= +github.com/aquasecurity/go-version v0.0.0-20210121072130-637058cfe492 h1:rcEG5HI490FF0a7zuvxOxen52ddygCfNVjP0XOCMl+M= +github.com/aquasecurity/table v1.8.0 h1:9ntpSwrUfjrM6/YviArlx/ZBGd6ix8W+MtojQcM7tv0= +github.com/aquasecurity/table v1.8.0/go.mod h1:eqOmvjjB7AhXFgFqpJUEE/ietg7RrMSJZXyTN8E/wZw= +github.com/aquasecurity/trivy v0.32.1 h1:od4HNZ/hXK6j+l615gk/rLwLEkwgkc++Wjlsr2Q7Otg= +github.com/aquasecurity/trivy v0.32.1/go.mod h1:WBLWKoFSxZ4Yl/B5Q2VbhmuDNrd4l4jWwHu4HTPJt54= +github.com/aquasecurity/trivy-db v0.0.0-20220627104749-930461748b63 h1:hgGD7zqlNe6sWJZPFFv1Z6T1EuYW8XD/hqx/dxjNp3Q= +github.com/aquasecurity/trivy-db v0.0.0-20220627104749-930461748b63/go.mod h1:/nULgnDeq/JMPMVwE1dmf4kWlYn++7VrM3O2naj4BHA= +github.com/aquasecurity/trivy-kubernetes v0.3.1-0.20220823151349-b90b48958b91 h1:5dpjVGSSYr1DaZvCvvc5aKCPkqq69Q6bb710v5B6obc= +github.com/aquasecurity/trivy-kubernetes v0.3.1-0.20220823151349-b90b48958b91/go.mod h1:9qMuqnlmsuoRBedtIV84MZJWBRWTuOcj8m1mpv94jC4= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= -github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ= +github.com/aws/aws-sdk-go v1.44.95 h1:QwmA+PeR6v4pF0f/dPHVPWGAshAhb9TnGZBTM5uKuI8= +github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= -github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= +github.com/bmatcuk/doublestar v1.3.4 h1:gPypJ5xD31uhX6Tf54sDPUOBXTqKH4c9aPY66CyQrS0= +github.com/bradleyjkemp/cupaloy/v2 v2.7.0 h1:AT0vOjO68RcLyenLCHOGZzSNiuto7ziqzq6Q1/3xzMQ= +github.com/bradleyjkemp/cupaloy/v2 v2.7.0/go.mod h1:bm7JXdkRd4BHJk9HpwqAI8BoAY1lps46Enkdqw6aRX0= +github.com/briandowns/spinner v1.12.0 h1:72O0PzqGJb6G3KgrcIOtL/JAGGZ5ptOMCn9cUHmqsmw= +github.com/caarlos0/env/v6 v6.10.0 h1:lA7sxiGArZ2KkiqpOQNf8ERBRWI+v8MWIH+eGjSN22I= +github.com/caarlos0/env/v6 v6.10.0/go.mod h1:hvp/ryKXKipEkcuYjs9mI4bBCg+UI0Yhgm5Zu0ddvwc= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5 h1:7aWHqerlJ41y6FOsEUvknqgXnGmJyJSbjhAWq5pO4F8= -github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw= 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= @@ -91,84 +120,92 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUoc7Ik9EfrFqcylYqgPZ9ANSbTAntnE= +github.com/containerd/containerd v1.6.8 h1:h4dOFDwzHmqFEP754PgfgTeVXFnLiRc6kiqC7tplDJs= +github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +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/creack/pty v1.1.11 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw= -github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cyphar/filepath-securejoin v0.2.3 h1:YX6ebbZCZP7VkM3scTTokDgBL2TY741X51MTk3ycuNI= 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/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd h1:uVsMphB1eRx7xB1njzL3fuMdWRN8HtVzoUOItHMwv5c= -github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE= +github.com/dgryski/go-minhash v0.0.0-20170608043002-7fe510aff544 h1:54Y/2GF52MSJ4n63HWvNDFRtztgm6tq2UrOX61sjGKc= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= +github.com/dlclark/regexp2 v1.4.0 h1:F1rxgk7p4uKjwIQxBs9oAXe5CqrXlCduYEJvrF4u93E= +github.com/docker/cli v20.10.17+incompatible h1:eO2KS7ZFeov5UJeaDmIs1NFEDRf32PaqRpvoEkKBy5M= github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68= -github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v20.10.17+incompatible h1:JYCuMrWaVNophQTOrMMoSwudOVEfcegoZZrleKc1xwE= +github.com/docker/docker-credential-helpers v0.6.4 h1:axCks+yV+2MR3/kZhAmy07yC56WZ2Pwu/fKWtKuZB0o= +github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= +github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= +github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= +github.com/docker/libnetwork v0.5.6 h1:hnGiypBsZR6PW1I8lqaBHh06U6LCJbI3IhOvfsZiymY= +github.com/docker/libnetwork v0.5.6/go.mod h1:93m0aTqz6z+g32wla4l4WxTrdtvBRmVzYRkYvasA5Z8= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153 h1:yUdfgN0XgIJw7foRItutHYUIhlcKzcSf5vDpdhQAKTc= +github.com/ekzhu/minhash-lsh v0.0.0-20171225071031-5c06ee8586a1 h1:/7G7q8SDJdrah5jDYqZI8pGFjSqiCzfSEO+NgqKCYX0= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful/v3 v3.8.0 h1:eCZ8ulSerjdAiaNpF7GxXIE7ZCMo1moN1qX+S609eVw= github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= 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/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/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/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM= -github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= -github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8= -github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fvbommel/sortorder v1.0.1 h1:dSnXLt4mJYH25uDDGa3biZNQsozaUWDSWeKJ0qqFfzE= -github.com/fvbommel/sortorder v1.0.1/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= +github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8= github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= +github.com/go-enry/go-license-detector/v4 v4.3.0 h1:OFlQAVNw5FlKUjX4OuW8JOabu8MQHjTKDb9pdeNYMUw= github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= +github.com/go-git/go-billy/v5 v5.3.1 h1:CPiOUAzKtMRvolEKw+bG1PLRpT7D3LIs3/3ey4Aiu34= +github.com/go-git/go-git/v5 v5.4.2 h1:BXyZu9t0VkbiHtqrsvdq39UDhGJTl1h55VW6CSC4aY4= 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-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -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-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-gorp/gorp/v3 v3.0.2 h1:ULqJXIekoqMx29FI5ekXXFoH1dT2Vc8UhnRzBg+Emz4= 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 v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.2 h1:ahHml/yUpnlb96Rp8HCvtYVPY8ZYpxq3g7UYchIYwbs= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro= +github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= +github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= 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.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= -github.com/go-openapi/jsonreference v0.19.5 h1:1WJP/wi4OjB4iV8KVbH73rQaoialJrqv8gitZLxGLtM= github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= +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/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.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= +github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= @@ -177,17 +214,19 @@ github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/j github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= github.com/go-playground/validator/v10 v10.11.0 h1:0W+xRM511GY47Yy3bZUbJVitCNg2BOGlCyvTqsp/xIw= github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-yaml v1.8.2 h1:gDYrSN12XK/wQTFjxWIgcIqjNCV/Zb5V09M7cq+dbCs= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da 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= @@ -215,8 +254,6 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= 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/golangplus/testing v0.0.0-20180327235837-af21d9c3145e h1:KhcknUwkWHKZPbFy2P7jH5LKJ3La+0ZeknkkmrSgqb0= -github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= @@ -234,12 +271,14 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/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.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= +github.com/google/go-containerregistry v0.11.0 h1:Xt8x1adcREjFcmDoDK8OdOsjxu90PHkGuwNP8GiHMLM= +github.com/google/go-containerregistry v0.11.0/go.mod h1:BBaYtsHPHA42uEgAvd/NejvAfPSlz281sJWqupjSxfk= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/licenseclassifier/v2 v2.0.0-pre6 h1:ytJvfOEiKcN1m5vkAJXkK2olICdrXqwNKFkBpKQ5Q+I= 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/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -259,68 +298,90 @@ github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaU github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs= -github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.1.0 h1:zO8WHNx/MYiAKJ3d5spxZXZE6KHmIQGQcAzwUzV7qQw= 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/gax-go/v2 v2.4.0 h1:dS9eYAjhrE2RjmzYw2XAPvcXfmcQLtFEQWn0CR82awk= github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= +github.com/googleapis/go-type-adapters v1.0.0 h1:9XdMn+d/G57qq1s8dNc5IesGCXHf6V2HZ2JwRxfA2tA= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gosuri/uitable v0.0.4 h1:IG2xLKRvErL3uhY6e1BylFzG+aJiwQviDDTfOKeKTpY= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-getter v1.6.2 h1:7jX7xcB+uVCliddZgeKyNxv0xoT7qL5KDtH7rU4IqIk= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/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/hashicorp/hcl/v2 v2.13.0 h1:0Apadu1w6M11dyGFxWnmhhcMjkbAiKCv7G1r/2QgCNc= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= +github.com/hhatto/gorst v0.0.0-20181029133204-ca9f730cac5b h1:Jdu2tbAxkRouSILp2EbposIb8h4gO+2QuZEn3d9sKAc= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw= +github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= -github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= +github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= +github.com/in-toto/in-toto-golang v0.3.4-0.20220709202702-fa494aaa0add h1:DAh7mHiRT7wc6kKepYdCpH16ElPciMPQWJaJ7H3l/ng= +github.com/in-toto/in-toto-golang v0.3.4-0.20220709202702-fa494aaa0add/go.mod h1:DQI8vlV6h6qSY/tCOoYKtxjWrkyiNpJ3WTV/WoBllmQ= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jonboulle/clockwork v0.2.2 h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9qUBdQ= -github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= +github.com/jdkato/prose v1.1.0 h1:LpvmDGwbKGTgdCH3a8VJL56sr7p/wOFPw/R4lM4PfFg= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= +github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= 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/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/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/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck= 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.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/klauspost/compress v1.15.8 h1:JahtItbkWjf2jzm/T+qgMxkP9EMHsqEUA6vCMGmXvhA= +github.com/knqyf263/go-apk-version v0.0.0-20200609155635-041fdbb8563f h1:GvCU5GXhHq+7LeOzx/haG7HSIZokl3/0GkoUFzsRJjg= +github.com/knqyf263/go-rpm-version v0.0.0-20220614171824-631e686d1075 h1:aC6MEAs3PE3lWD7lqrJfDxHd6hcced9R4JTZu85cJwU= +github.com/knqyf263/go-rpm-version v0.0.0-20220614171824-631e686d1075/go.mod h1:i4sF0l1fFnY1aiw08QQSwVAFxHEm311Me3WsU/X7nL0= +github.com/knqyf263/nested v0.0.1 h1:Sv26CegUMhjt19zqbBKntjwESdxe5hxVPSk0+AKjdUc= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= -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/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -330,40 +391,64 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= 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/lann/builder v0.0.0-20180802200727-47ae307949d0 h1:SOEGU9fKiNWd/HOJuq6+3iTQz8KNCLtVX6idSoTLdUw= +github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhRWSsG5rVo6hYhAB/ADZrk= github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/liamg/iamgo v0.0.9 h1:tADGm3xVotyRJmuKKaH4+zsBn7LOcvgdpuF3WsSKW3c= +github.com/liamg/jfather v0.0.7 h1:Xf78zS263yfT+xr2VSo6+kyAy4ROlCacRqJG7s5jt4k= +github.com/liamg/memoryfs v1.4.2 h1:6T9Oy1DdWxGCzIY89p0Ykeya5H0uAlzG2xHEGcvo6MU= +github.com/liamg/tml v0.6.0 h1:yOC/Q9p9Io3J11U9LdYVIwpRTnTE1GPMNFLrygkmE2Y= +github.com/liamg/tml v0.6.0/go.mod h1:0h4EAV/zBOsqI91EWONedjRpO8O0itjGJVd+wG5eC+E= +github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= -github.com/lithammer/dedent v1.1.0 h1:VNzHMVCBNG1j0fh3OrsFRkVUwStdDArbgBWoPAffktY= -github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= 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.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= -github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA= github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= +github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= +github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= +github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= -github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4= +github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= +github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/moby/buildkit v0.10.4 h1:FvC+buO8isGpUFZ1abdSLdGHZVqg9sqI4BbFL8tlzP4= +github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 h1:dcztxKSvZ4Id8iPpHERQBbIJfabdt4wUm5qy3wOL2Zc= -github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= 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= @@ -373,37 +458,40 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= +github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe h1:iruDEfMl2E6fbMZ9s0scYfZQ84/6SPL6zC8ACM2oIL0= +github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= 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/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= +github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= -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.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.19.0 h1:4ieX6qQjPP/BfC3mpsAtIGGlxTWPeA3Inl/7DtXw1tw= +github.com/open-policy-agent/opa v0.44.0 h1:sEZthsrWBqIN+ShTMJ0Hcz6a3GkYsY4FaB2S/ou2hZk= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.0.3-0.20220303224323-02efb9a75ee1 h1:9iFHD5Kt9hkOfeawBNiEeEaV7bmC4/Z5wJp8E9BptMs= +github.com/owenrumney/go-sarif v1.1.1/go.mod h1:dNDiPlF04ESR/6fHlPyq7gHKmrM0sHUvAGjsoh8ZH0U= +github.com/owenrumney/go-sarif/v2 v2.1.2 h1:PMDK7tXShJ9zsB7bfvlpADH5NEw1dfA9xwU8Xtdj73U= +github.com/owenrumney/go-sarif/v2 v2.1.2/go.mod h1:MSqMMx9WqlBSY7pXoOZWgEsVB4FDNfhcaXDA1j6Sr+w= +github.com/owenrumney/squealer v1.0.1-0.20220510063705-c0be93f0edea h1:RwQ26NYF4vvP7GckFRB4ABL18Byo7vnYBzMpmZKkGwQ= +github.com/package-url/packageurl-go v0.1.1-0.20220203205134-d70459300c8a h1:tkTSd1nhioPqi5Whu3CQ79UjPtaGOytqyNnSCVOqzHM= +github.com/package-url/packageurl-go v0.1.1-0.20220203205134-d70459300c8a/go.mod h1:uQd4a7Rh3ZsVg5j0lNyAfyxIeGde9yrlhjF78GzeW0c= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml/v2 v2.0.3 h1:h9JoA60e1dVEOpp0PFwJSmt1Htu057NUq9/bUwaO61s= github.com/pelletier/go-toml/v2 v2.0.3/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas= github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= -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= @@ -411,58 +499,62 @@ github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZ 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/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -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_golang v1.13.0 h1:b71QUfeo5M8gq2+evJdTPfZhYMAU0uKPkyPJ7TPsloU= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= +github.com/prometheus/common v0.37.0 h1:ccBbHCgIiT9uSoFY0vX8H3zsNR5eLt17/RQLUvn8pXE= +github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= +github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0 h1:MkV+77GLUNo5oJ0jf870itWm3D0Sjh7+Za9gazKc5LQ= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8= github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= -github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/rubenv/sql-migrate v1.1.1 h1:haR5Hn8hbW9/SpAICrXoZqXnywS7Q5WijwkQENPeNWY= +github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/samber/lo v1.27.1 h1:sTXwkRiIFIQG+G0HeAvOEnGjqWeWtI9cg5/n51KrxPg= +github.com/samber/lo v1.27.1/go.mod h1:it33p9UtPMS7z72fP4gw/EIfQB2eI8ke7GR2wc6+Rhg= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/secure-systems-lab/go-securesystemslib v0.4.0 h1:b23VGrQhTA8cN2CbBw7/FulN9fTtqYUdS5+Oxzt+DUE= +github.com/secure-systems-lab/go-securesystemslib v0.4.0/go.mod h1:FGBZgq2tXWICsxWQW1msNf49F0Pf2Op5Htayx335Qbs= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/shibumi/go-pathspec v1.3.0 h1:QUyMZhFo0Md5B8zV8x2tesohbb5kfbpTi9rBnKh5dkI= +github.com/shibumi/go-pathspec v1.3.0/go.mod h1:Xutfslp817l2I1cZvgcfeMQJG5QnU2lh5tVaaMCl3jE= +github.com/shogo82148/go-shuffle v0.0.0-20170808115208-59829097ff3b h1:VI1u+o2KZPZ5AhuPpXY0JBdpQPnkTx6Dd5XJhK/9MYE= +github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= +github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= +github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spdx/gordf v0.0.0-20201111095634-7098f93598fb/go.mod h1:uKWaldnbMnjsSAXRurWqqrdyZen1R7kxl8TkmWk2OyM= +github.com/spdx/tools-golang v0.3.0 h1:rtm+DHk3aAt74Fh0Wgucb4pCxjXV8SqHCPEb2iBd30k= +github.com/spdx/tools-golang v0.3.0/go.mod h1:RO4Y3IFROJnz+43JKm1YOrbtgQNljW4gAPpA/sY2eqo= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= +github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= -github.com/spf13/cobra v1.4.0 h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q= github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= +github.com/spf13/cobra v1.5.0 h1:X+jTBEBqF0bHN+9cSMgmfuvv2VHJ9ezmFNf9Y/XstYU= +github.com/spf13/cobra v1.5.0/go.mod h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM= +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.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= +github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ= 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= @@ -479,19 +571,40 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ 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/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/subosito/gotenv v1.4.0 h1:yAzM1+SmVcz5R4tXGsNMu1jUl2aOJXoiWUCEwwnGrvs= +github.com/tchap/go-patricia/v2 v2.3.1 h1:6rQp39lgIYZ+MHmdEq4xzuk1t7OdC35z/xm0BGhTkes= +github.com/thoas/go-funk v0.9.1 h1:O549iLZqPpTUQ10ykd26sZhzD+rmR5pWhuElrhbC20M= github.com/toqueteos/webbrowser v1.2.0 h1:tVP/gpK69Fx+qMJKsLE7TD8LuGWPnEV71wBN9rrstGQ= github.com/toqueteos/webbrowser v1.2.0/go.mod h1:XWoZq4cyp9WeUeak7w7LXRUQf1F1ATJMir8RTqb4ayM= github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0= github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= -github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca h1:1CFlNzQhALwjS9mBAUkycX616GzgsuYUOCHA5+HSlXI= +github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8= +github.com/vishvananda/netlink v1.1.0 h1:1iyaYNBLmP6L0220aDnYQpo1QEV4t4hJ+xEEhhJH8j0= +github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= +github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= +github.com/vishvananda/netns v0.0.0-20220913150850-18c4f4234207 h1:nn7SOQy8xCu3iXNv7oiBhhEQtbWdnEOMnuKBlHvrqIM= +github.com/vishvananda/netns v0.0.0-20220913150850-18c4f4234207/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= +github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= +github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= +github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= +github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= +github.com/xlab/treeprint v1.1.0 h1:G/1DjNkPpfZCFt9CSh6b5/nY4VimlbHF3Rh4obvtzDk= +github.com/xlab/treeprint v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= +github.com/yashtewari/glob-intersection v0.1.0 h1:6gJvMYQlTDOL3dMsPF6J0+26vwX9MB8/1q3uAdhmTrg= 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= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/zclconf/go-cty v1.10.0 h1:mp9ZXQeIcN8kAwuqorjH+Q+njbJKjLrvB2yIh4q7U+0= +github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= +github.com/zclconf/go-cty-yaml v1.0.2 h1:dNyg4QLTrv2IfJpm7Wtxi55ed5gLGOlPrZ6kMd51hY0= +go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= +go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= @@ -501,35 +614,29 @@ 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.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= -go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= -go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= -go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= -go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= -go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= -go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= -go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= -go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5 h1:+FNtrFTmVw0YZGpBGX56XDee331t6JAXeK2bcyhLOOc= go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= +go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= +go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= +go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/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-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-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220817201139-bc19a97f63c8 h1:GIAS/yBem/gq2MUqgNIzUHW7cJMmx3TGZOrnyYaNQ6c= @@ -544,6 +651,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20220823124025-807a23277127 h1:S4NrSKDfihhl3+4jSTgwoIevKxX9p7Iv9x++OEIptDo= +golang.org/x/exp v0.0.0-20220823124025-807a23277127/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= 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= @@ -569,12 +678,11 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= 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-20181023162649-9b4f9f5ad519/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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -583,7 +691,6 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn 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= @@ -611,12 +718,10 @@ golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220812174116-3211cb980234 h1:RDqmgfe7SvlMWoqC3xwQ2blLO3fcWcxMa3eBLRdRW7E= -golang.org/x/net v0.0.0-20220812174116-3211cb980234/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20220906165146-f3363e06e74c h1:yKufUcDwucU5urd+50/Opbt4AYpqthk7wHpHok8f1lo= +golang.org/x/net v0.0.0-20220906165146-f3363e06e74c/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -629,9 +734,9 @@ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 h1:RerP+noqYHUQ8CMRcPlC2nvTa4dcBIjegkuWdcUDuqg= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220718184931-c8730f7fcb92 h1:oVlhw3Oe+1reYsE2Nqu19PDJfLzwdU3QUUrG86rLK68= +golang.org/x/oauth2 v0.0.0-20220718184931-c8730f7fcb92/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= 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= @@ -643,34 +748,34 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-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-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/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-20200217220822-9197077df867/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= @@ -680,16 +785,14 @@ golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -698,20 +801,20 @@ golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/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-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220818161305-2296e01440c6 h1:Sx/u41w+OwrInGdEckYmEuU5gHoGSL4QbDz3S9s6j4U= golang.org/x/sys v0.0.0-20220818161305-2296e01440c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.0.0-20220526004731-065cf7ba2467 h1:CBpWXWQpIRjzmkkA+M7q9Fqnwd2mZr3AFqexg8YTfoM= +golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -725,8 +828,9 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220609170525-579cf78fd858 h1:Dpdu/EMxGMFgq0CeYMh4fazTD2vtlZRYE7wyynxJb9U= +golang.org/x/time v0.0.0-20220609170525-579cf78fd858/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-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -739,12 +843,10 @@ golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBn 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-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/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= @@ -782,12 +884,13 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.10-0.20220218145154-897bd77cd717/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= 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= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f h1:uF6paiQQebLeSXkrTqHqz0MXhXXS1KgF41eUdBNvxK0= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +gonum.org/v1/gonum v0.7.0 h1:Hdks0L0hgznZLG9nzXb8vZ0rRvqNvAcgAp84y7Mwkgw= 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= @@ -810,6 +913,7 @@ google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjR google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= +google.golang.org/api v0.92.0 h1:8JHk7q/+rJla+iRsWj9FQ9/wjv2M1SKtpKSdmLhxPT0= 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= @@ -860,7 +964,7 @@ google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220720214146-176da50484ac h1:EOa+Yrhx1C0O+4pHeXeWrCwdI0tWI6IfUU56Vebs9wQ= 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= @@ -880,9 +984,8 @@ google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA5 google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.49.0 h1:WTLtQzmQori5FUH25Pq4WT22oCsv8USpQ+F6rqtsmxw= 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= @@ -898,25 +1001,26 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/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/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/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/cheggaaa/pb.v1 v1.0.28 h1:n1tBJnnK2r7g9OW2btFH91V92STTUevLXYFb8gy9EMk= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= 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/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/neurosnap/sentences.v1 v1.0.6 h1:v7ElyP020iEZQONyLld3fHILHWOPs+ntzuQTNPkul8E= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= 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.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= @@ -924,11 +1028,9 @@ 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.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0/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/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= -gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= -gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= helm.sh/helm/v3 v3.9.4 h1:TCI1QhJUeLVOdccfdw+vnSEO3Td6gNqibptB04QtExY= helm.sh/helm/v3 v3.9.4/go.mod h1:3eaWAIqzvlRSD06gR9MMwmp2KBKwlu9av1/1BZpjeWY= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -938,37 +1040,36 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/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.24.2 h1:g518dPU/L7VRLxWfcadQn2OnsiGWVOadTLpdnqgY2OI= -k8s.io/api v0.24.2/go.mod h1:AHqbSkTm6YrQ0ObxjO3Pmp/ubFF/KuM7jU+3khoBsOg= -k8s.io/apimachinery v0.24.2 h1:5QlH9SL2C8KMcrNJPor+LbXVTaZRReml7svPEh4OKDM= -k8s.io/apimachinery v0.24.2/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= -k8s.io/cli-runtime v0.24.2 h1:KxY6tSgPGsahA6c1/dmR3uF5jOxXPx2QQY6C5ZrLmtE= -k8s.io/cli-runtime v0.24.2/go.mod h1:1LIhKL2RblkhfG4v5lZEt7FtgFG5mVb8wqv5lE9m5qY= -k8s.io/client-go v0.24.2 h1:CoXFSf8if+bLEbinDqN9ePIDGzcLtqhfd6jpfnwGOFA= -k8s.io/client-go v0.24.2/go.mod h1:zg4Xaoo+umDsfCWr4fCnmLEtQXyCNXCvJuSsglNcV30= -k8s.io/code-generator v0.24.2/go.mod h1:dpVhs00hTuTdTY6jvVxvTFCk6gSMrtfRydbhZwHI15w= -k8s.io/component-base v0.24.2 h1:kwpQdoSfbcH+8MPN4tALtajLDfSfYxBDYlXobNWI6OU= -k8s.io/component-base v0.24.2/go.mod h1:ucHwW76dajvQ9B7+zecZAP3BVqvrHoOxm8olHEg0nmM= -k8s.io/component-helpers v0.24.2 h1:gtXmI/TjVINtkAdZn7m5p8+Vd0Mk4d1q8kwJMMLBdwY= -k8s.io/component-helpers v0.24.2/go.mod h1:TRQPBQKfmqkmV6c0HAmUs8cXVNYYYLsXy4zu8eODi9g= +k8s.io/api v0.24.4/go.mod h1:42pVfA0NRxrtJhZQOvRSyZcJihzAdU59WBtTjYcB0/M= +k8s.io/api v0.25.0-alpha.2 h1:azwXduCht76Ecuv80QzZkCDzcFcLotKPXiE9/+jx5Qk= +k8s.io/api v0.25.0-alpha.2/go.mod h1:wOntqHYj8WveLW2sh6q4tkE2vMZTtxe0MrFyVwO8JCM= +k8s.io/apiextensions-apiserver v0.24.2 h1:/4NEQHKlEz1MlaK/wHT5KMKC9UKYz6NZz6JE6ov4G6k= +k8s.io/apimachinery v0.24.4/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= +k8s.io/apimachinery v0.25.0-alpha.2 h1:y6uTWaiqsPTPRewnXJ15IFyGmBo2qPt6enm4zszG8Z0= +k8s.io/apimachinery v0.25.0-alpha.2/go.mod h1:h34FtK3eCxige6ZIACdBSYExtDaKAUxoc7hVe2LOxzw= +k8s.io/apiserver v0.24.2 h1:orxipm5elPJSkkFNlwH9ClqaKEDJJA3yR2cAAlCnyj4= +k8s.io/cli-runtime v0.24.4 h1:YCSf0dZp+pYXVR/8aZQ6MEBSiicv8rLyVsGBEbRnwfY= +k8s.io/cli-runtime v0.24.4/go.mod h1:RF+cSLYXkPV3WyvPrX2qeRLEUJY38INWx6jLKVLFCxM= +k8s.io/client-go v0.24.4/go.mod h1:+AxlPWw/H6f+EJhRSjIeALaJT4tbeB/8g9BNvXGPd0Y= +k8s.io/client-go v0.25.0-alpha.2 h1:kXlDl2L/CmdubzbRTPOCXj9JDPv9U0MuEjRXSCltQ00= +k8s.io/client-go v0.25.0-alpha.2/go.mod h1:AN5W2BkXTu2lNm2BANn5lC6VnGlv6AM5HNPQLsriBOA= +k8s.io/component-base v0.24.4 h1:WEGRp06GBYVwxp5JdiRaJ1zkdOhrqucxRv/8IrABLG0= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/gengo v0.0.0-20211129171323-c02415ce4185/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= 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.60.1 h1:VW25q3bZx9uE3vvdL6M8ezOX79vA2Aq1nEWLqNQclHc= k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/klog/v2 v2.70.0 h1:GMmmjoFOrNepPN0ZeGCzvD2Gh5IKRwdFx8W5PBxVTQU= +k8s.io/klog/v2 v2.70.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42/go.mod h1:Z/45zLw8lUo4wdiUkI+v/ImEGAvu3WatcZl3lPMR4Rk= k8s.io/kube-openapi v0.0.0-20220627174259-011e075b9cb8 h1:yEQKdMCjzAOvGeiTwG4hO/hNVNtDOuUFvMUZ0OlaIzs= k8s.io/kube-openapi v0.0.0-20220627174259-011e075b9cb8/go.mod h1:mbJ+NSUoAhuR14N0S63bPkh8MGVSo3VYSGZtH/mfMe0= -k8s.io/kubectl v0.24.2 h1:+RfQVhth8akUmIc2Ge8krMl/pt66V7210ka3RE/p0J4= -k8s.io/kubectl v0.24.2/go.mod h1:+HIFJc0bA6Tzu5O/YcuUt45APAxnNL8LeMuXwoiGsPg= -k8s.io/metrics v0.24.2 h1:3lgEq973VGPWAEaT9VI/p0XmI0R5kJgb/r9Ufr5fz8k= -k8s.io/metrics v0.24.2/go.mod h1:5NWURxZ6Lz5gj8TFU83+vdWIVASx7W8lwPpHYCqopMo= +k8s.io/kubectl v0.24.4 h1:fPEBkAV3/cu3BQVIUCXNngCCY62AlZ+2rkRVHcmJPn0= k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 h1:HNSDgDCrr/6Ly3WEGKZftiE7IY19Vz2GdbOCyI4qqhc= k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +oras.land/oras-go v1.2.0 h1:yoKosVIbsPoFMqAIFHTnrmOuafHal+J/r+I5bdbVWu4= 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= @@ -976,9 +1077,6 @@ sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 h1:kDi4JBNAsJWfz1aEXhO8Jg87J sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= sigs.k8s.io/kustomize/api v0.11.4 h1:/0Mr3kfBBNcNPOW5Qwk/3eb8zkswCwnqQxxKtmrTkRo= sigs.k8s.io/kustomize/api v0.11.4/go.mod h1:k+8RsqYbgpkIrJ4p9jcdPqe8DprLxFUUO0yNOq8C+xI= -sigs.k8s.io/kustomize/cmd/config v0.10.6/go.mod h1:/S4A4nUANUa4bZJ/Edt7ZQTyKOY9WCER0uBS1SW2Rco= -sigs.k8s.io/kustomize/kustomize/v4 v4.5.4 h1:rzGrL+DA4k8bT6SMz7/U+2z3iiZf1t2RaYJWx8OeTmE= -sigs.k8s.io/kustomize/kustomize/v4 v4.5.4/go.mod h1:Zo/Xc5FKD6sHl0lilbrieeGeZHVYCA4BzxeAaLI05Bg= sigs.k8s.io/kustomize/kyaml v0.13.6 h1:eF+wsn4J7GOAXlvajv6OknSunxpcOBQQqsnPxObtkGs= sigs.k8s.io/kustomize/kyaml v0.13.6/go.mod h1:yHP031rn1QX1lr/Xd934Ri/xdVNG8BE2ECa78Ht/kEg= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= diff --git a/pkg/dashboard/api.go b/pkg/dashboard/api.go index 22149de..4ea071e 100644 --- a/pkg/dashboard/api.go +++ b/pkg/dashboard/api.go @@ -2,13 +2,14 @@ package dashboard import ( "embed" - "errors" "github.com/gin-gonic/gin" + "github.com/komodorio/helm-dashboard/pkg/dashboard/handlers" + "github.com/komodorio/helm-dashboard/pkg/dashboard/subproc" + "github.com/komodorio/helm-dashboard/pkg/dashboard/utils" log "github.com/sirupsen/logrus" "net/http" "os" "path" - "strconv" ) //go:embed static/* @@ -33,7 +34,17 @@ func errorHandler(c *gin.Context) { } } -func NewRouter(abortWeb ControlChan, data *DataLayer, version string) *gin.Engine { +func contextSetter(data *subproc.DataLayer) gin.HandlerFunc { + return func(c *gin.Context) { + if context, ok := c.Request.Header["X-Kubecontext"]; ok { + log.Debugf("Setting current context to: %s", context) + data.KubeContext = context[0] + } + c.Next() + } +} + +func NewRouter(abortWeb utils.ControlChan, data *subproc.DataLayer, version string) *gin.Engine { var api *gin.Engine if os.Getenv("DEBUG") == "" { api = gin.New() @@ -52,7 +63,7 @@ func NewRouter(abortWeb ControlChan, data *DataLayer, version string) *gin.Engin return api } -func configureRoutes(abortWeb ControlChan, data *DataLayer, api *gin.Engine, version string) { +func configureRoutes(abortWeb utils.ControlChan, data *subproc.DataLayer, api *gin.Engine, version string) { // server shutdown handler api.DELETE("/", func(c *gin.Context) { abortWeb <- struct{}{} @@ -65,10 +76,11 @@ func configureRoutes(abortWeb ControlChan, data *DataLayer, api *gin.Engine, ver configureHelms(api.Group("/api/helm"), data) configureKubectls(api.Group("/api/kube"), data) + configureScanners(api.Group("/api/scanners"), data) } -func configureHelms(api *gin.RouterGroup, data *DataLayer) { - h := HelmHandler{Data: data} +func configureHelms(api *gin.RouterGroup, data *subproc.DataLayer) { + h := handlers.HelmHandler{Data: data} api.GET("/charts", h.GetCharts) api.DELETE("/charts", h.Uninstall) api.POST("/charts/rollback", h.Rollback) @@ -81,8 +93,8 @@ func configureHelms(api *gin.RouterGroup, data *DataLayer) { api.GET("/charts/:section", h.GetInfoSection) } -func configureKubectls(api *gin.RouterGroup, data *DataLayer) { - h := KubeHandler{Data: data} +func configureKubectls(api *gin.RouterGroup, data *subproc.DataLayer) { + h := handlers.KubeHandler{Data: data} api.GET("/contexts", h.GetContexts) api.GET("/resources/:kind", h.GetResourceInfo) api.GET("/describe/:kind", h.Describe) @@ -118,36 +130,9 @@ func configureStatic(api *gin.Engine) { } } -func contextSetter(data *DataLayer) gin.HandlerFunc { - return func(c *gin.Context) { - if context, ok := c.Request.Header["X-Kubecontext"]; ok { - log.Debugf("Setting current context to: %s", context) - data.KubeContext = context[0] - } - c.Next() - } -} - -type QueryProps struct { - Namespace string - Name string - Revision int -} - -func getQueryProps(c *gin.Context, revRequired bool) (*QueryProps, error) { - qp := QueryProps{} - - qp.Namespace = c.Query("namespace") - qp.Name = c.Query("name") - if qp.Name == "" { - return nil, errors.New("missing required query string parameter: name") - } - - cRev, err := strconv.Atoi(c.Query("revision")) - if err != nil && revRequired { - return nil, err - } - qp.Revision = cRev - - return &qp, nil +func configureScanners(api *gin.RouterGroup, data *subproc.DataLayer) { + h := handlers.ScannersHandler{Data: data} + api.GET("", h.List) + api.POST("/manifests", h.ScanDraftManifest) + api.GET("/resource/:kind", h.ScanResource) } diff --git a/pkg/dashboard/helmHandlers.go b/pkg/dashboard/handlers/helmHandlers.go similarity index 79% rename from pkg/dashboard/helmHandlers.go rename to pkg/dashboard/handlers/helmHandlers.go index fefdb31..7c51952 100644 --- a/pkg/dashboard/helmHandlers.go +++ b/pkg/dashboard/handlers/helmHandlers.go @@ -1,14 +1,17 @@ -package dashboard +package handlers import ( "errors" "github.com/gin-gonic/gin" + "github.com/komodorio/helm-dashboard/pkg/dashboard/subproc" + "github.com/komodorio/helm-dashboard/pkg/dashboard/utils" "net/http" "strconv" + "strings" ) type HelmHandler struct { - Data *DataLayer + Data *subproc.DataLayer } func (h *HelmHandler) GetCharts(c *gin.Context) { @@ -23,7 +26,7 @@ func (h *HelmHandler) GetCharts(c *gin.Context) { // TODO: helm show chart komodorio/k8s-watcher to get the icon URL func (h *HelmHandler) Uninstall(c *gin.Context) { - qp, err := getQueryProps(c, false) + qp, err := utils.GetQueryProps(c, false) if err != nil { _ = c.AbortWithError(http.StatusBadRequest, err) return @@ -37,7 +40,7 @@ func (h *HelmHandler) Uninstall(c *gin.Context) { } func (h *HelmHandler) Rollback(c *gin.Context) { - qp, err := getQueryProps(c, true) + qp, err := utils.GetQueryProps(c, true) if err != nil { _ = c.AbortWithError(http.StatusBadRequest, err) return @@ -52,7 +55,7 @@ func (h *HelmHandler) Rollback(c *gin.Context) { } func (h *HelmHandler) History(c *gin.Context) { - qp, err := getQueryProps(c, false) + qp, err := utils.GetQueryProps(c, false) if err != nil { _ = c.AbortWithError(http.StatusBadRequest, err) return @@ -67,7 +70,7 @@ func (h *HelmHandler) History(c *gin.Context) { } func (h *HelmHandler) Resources(c *gin.Context) { - qp, err := getQueryProps(c, true) + qp, err := utils.GetQueryProps(c, true) if err != nil { _ = c.AbortWithError(http.StatusBadRequest, err) return @@ -82,7 +85,7 @@ func (h *HelmHandler) Resources(c *gin.Context) { } func (h *HelmHandler) RepoSearch(c *gin.Context) { - qp, err := getQueryProps(c, false) + qp, err := utils.GetQueryProps(c, false) if err != nil { _ = c.AbortWithError(http.StatusBadRequest, err) return @@ -97,7 +100,7 @@ func (h *HelmHandler) RepoSearch(c *gin.Context) { } func (h *HelmHandler) RepoUpdate(c *gin.Context) { - qp, err := getQueryProps(c, false) + qp, err := utils.GetQueryProps(c, false) if err != nil { _ = c.AbortWithError(http.StatusBadRequest, err) return @@ -112,7 +115,7 @@ func (h *HelmHandler) RepoUpdate(c *gin.Context) { } func (h *HelmHandler) Install(c *gin.Context) { - qp, err := getQueryProps(c, false) + qp, err := utils.GetQueryProps(c, false) if err != nil { _ = c.AbortWithError(http.StatusBadRequest, err) return @@ -127,13 +130,20 @@ func (h *HelmHandler) Install(c *gin.Context) { if !justTemplate { c.Header("Content-Type", "application/json") + } else { + manifests, err := h.Data.RevisionManifests(qp.Namespace, qp.Name, 0, false) + if err != nil { + _ = c.AbortWithError(http.StatusInternalServerError, err) + return + } + out = subproc.GetDiff(strings.TrimSpace(manifests), out, "current.yaml", "upgraded.yaml") } c.String(http.StatusAccepted, out) } func (h *HelmHandler) GetInfoSection(c *gin.Context) { - qp, err := getQueryProps(c, true) + qp, err := utils.GetQueryProps(c, true) if err != nil { _ = c.AbortWithError(http.StatusBadRequest, err) return @@ -158,8 +168,8 @@ func (h *HelmHandler) RepoValues(c *gin.Context) { c.String(http.StatusOK, out) } -func handleGetSection(data *DataLayer, section string, rDiff string, qp *QueryProps, flag bool) (string, error) { - sections := map[string]SectionFn{ +func handleGetSection(data *subproc.DataLayer, section string, rDiff string, qp *utils.QueryProps, flag bool) (string, error) { + sections := map[string]subproc.SectionFn{ "manifests": data.RevisionManifests, "values": data.RevisionValues, "notes": data.RevisionNotes, @@ -181,7 +191,7 @@ func handleGetSection(data *DataLayer, section string, rDiff string, qp *QueryPr ext = ".txt" } - res, err := RevisionDiff(functor, ext, qp.Namespace, qp.Name, cRevDiff, qp.Revision, flag) + res, err := subproc.RevisionDiff(functor, ext, qp.Namespace, qp.Name, cRevDiff, qp.Revision, flag) if err != nil { return "", err } diff --git a/pkg/dashboard/kubeHandlers.go b/pkg/dashboard/handlers/kubeHandlers.go similarity index 87% rename from pkg/dashboard/kubeHandlers.go rename to pkg/dashboard/handlers/kubeHandlers.go index f4564c6..fb0c313 100644 --- a/pkg/dashboard/kubeHandlers.go +++ b/pkg/dashboard/handlers/kubeHandlers.go @@ -1,14 +1,16 @@ -package dashboard +package handlers import ( "github.com/gin-gonic/gin" + "github.com/komodorio/helm-dashboard/pkg/dashboard/subproc" + "github.com/komodorio/helm-dashboard/pkg/dashboard/utils" "k8s.io/apimachinery/pkg/apis/meta/v1" v12 "k8s.io/apimachinery/pkg/apis/testapigroup/v1" "net/http" ) type KubeHandler struct { - Data *DataLayer + Data *subproc.DataLayer } func (h *KubeHandler) GetContexts(c *gin.Context) { @@ -21,7 +23,7 @@ func (h *KubeHandler) GetContexts(c *gin.Context) { } func (h *KubeHandler) GetResourceInfo(c *gin.Context) { - qp, err := getQueryProps(c, false) + qp, err := utils.GetQueryProps(c, false) if err != nil { _ = c.AbortWithError(http.StatusBadRequest, err) return @@ -53,7 +55,7 @@ func (h *KubeHandler) GetResourceInfo(c *gin.Context) { } func (h *KubeHandler) Describe(c *gin.Context) { - qp, err := getQueryProps(c, false) + qp, err := utils.GetQueryProps(c, false) if err != nil { _ = c.AbortWithError(http.StatusBadRequest, err) return diff --git a/pkg/dashboard/handlers/scannerHandlers.go b/pkg/dashboard/handlers/scannerHandlers.go new file mode 100644 index 0000000..acc7876 --- /dev/null +++ b/pkg/dashboard/handlers/scannerHandlers.go @@ -0,0 +1,68 @@ +package handlers + +import ( + "github.com/gin-gonic/gin" + "github.com/komodorio/helm-dashboard/pkg/dashboard/subproc" + "github.com/komodorio/helm-dashboard/pkg/dashboard/utils" + "net/http" +) + +type ScannersHandler struct { + Data *subproc.DataLayer +} + +func (h *ScannersHandler) List(c *gin.Context) { + var res []string + for _, scanner := range h.Data.Scanners { + res = append(res, scanner.Name()) + } + c.JSON(http.StatusOK, res) +} + +func (h *ScannersHandler) ScanDraftManifest(c *gin.Context) { + qp, err := utils.GetQueryProps(c, false) + if err != nil { + _ = c.AbortWithError(http.StatusBadRequest, err) + return + } + + mnf, err := h.Data.ChartUpgrade(qp.Namespace, qp.Name, c.Query("chart"), c.Query("version"), true, c.PostForm("values")) + if err != nil { + _ = c.AbortWithError(http.StatusInternalServerError, err) + return + } + + reps := map[string]*subproc.ScanResults{} + for _, scanner := range h.Data.Scanners { + sr, err := scanner.ScanManifests(mnf) + if err != nil { + _ = c.AbortWithError(http.StatusInternalServerError, err) + return + } + + reps[scanner.Name()] = sr + } + + c.IndentedJSON(http.StatusOK, reps) +} + +func (h *ScannersHandler) ScanResource(c *gin.Context) { + qp, err := utils.GetQueryProps(c, false) + if err != nil { + _ = c.AbortWithError(http.StatusBadRequest, err) + return + } + + reps := map[string]*subproc.ScanResults{} + for _, scanner := range h.Data.Scanners { + sr, err := scanner.ScanResource(qp.Namespace, c.Param("kind"), qp.Name) + if err != nil { + _ = c.AbortWithError(http.StatusInternalServerError, err) + return + } + + reps[scanner.Name()] = sr + } + + c.IndentedJSON(http.StatusOK, reps) +} diff --git a/pkg/dashboard/scanners/checkov.go b/pkg/dashboard/scanners/checkov.go new file mode 100644 index 0000000..6791cb7 --- /dev/null +++ b/pkg/dashboard/scanners/checkov.go @@ -0,0 +1,107 @@ +package scanners + +import ( + "github.com/komodorio/helm-dashboard/pkg/dashboard/subproc" + "github.com/komodorio/helm-dashboard/pkg/dashboard/utils" + log "github.com/sirupsen/logrus" + v1 "k8s.io/apimachinery/pkg/apis/testapigroup/v1" + "strconv" + "strings" +) + +type Checkov struct { + Data *subproc.DataLayer +} + +func (c *Checkov) Name() string { + return "Checkov" +} + +func (c *Checkov) Test() bool { + res, err := utils.RunCommand([]string{"checkov", "--version"}, nil) + if err != nil { + return false + } + log.Infof("Discovered Checkov version: %s", strings.TrimSpace(res)) + return true +} + +func (c *Checkov) ScanManifests(mnf string) (*subproc.ScanResults, error) { + fname, fclose, err := utils.TempFile(mnf) + if err != nil { + return nil, err + } + defer fclose() + + cmd := []string{"checkov", "--quiet", "--soft-fail", "--framework", "kubernetes", "--output", "cli", "--file", fname} + out, err := utils.RunCommand(cmd, nil) + if err != nil { + return nil, err + } + + res := &subproc.ScanResults{} + + res.OrigReport = out + + return res, nil +} + +func (c *Checkov) ScanResource(ns string, kind string, name string) (*subproc.ScanResults, error) { + carp := v1.Carp{} + carp.Kind = kind + carp.Name = name + mnf, err := c.Data.GetResourceYAML(ns, &carp) + if err != nil { + return nil, err + } + + fname, fclose, err := utils.TempFile(mnf) + if err != nil { + return nil, err + } + defer fclose() + + cmd := []string{"checkov", "--quiet", "--soft-fail", "--framework", "kubernetes", "--output", "cli", "--file", fname} + out, err := utils.RunCommand(cmd, nil) + if err != nil { + return nil, err + } + + res := subproc.ScanResults{} + _, out, _ = strings.Cut(out, "\n") // kubernetes scan results: + _, out, _ = strings.Cut(out, "\n") // empty line + line, out, found := strings.Cut(out, "\n") // status line + if found { + parts := strings.FieldsFunc(line, func(r rune) bool { + return r == ':' || r == ',' + }) + if cnt, err := strconv.Atoi(strings.TrimSpace(parts[1])); err == nil { + res.PassedCount = cnt + } else { + log.Warnf("Failed to parse Checkov output: %s", err) + } + if cnt, err := strconv.Atoi(strings.TrimSpace(parts[3])); err == nil { + res.FailedCount = cnt + } else { + log.Warnf("Failed to parse Checkov output: %s", err) + } + } else { + log.Warnf("Failed to parse Checkov output") + } + + res.OrigReport = strings.TrimSpace(out) + + return &res, nil +} + +type CheckovResults struct { + Summary CheckovSummary +} + +type CheckovSummary struct { + Failed int `json:"failed"` + Passed int `json:"passed"` + ResourceCount int `json:"resource_count"` + // parsing errors? + // skipped ? +} diff --git a/pkg/dashboard/scanners/trivy.go b/pkg/dashboard/scanners/trivy.go new file mode 100644 index 0000000..e3f174f --- /dev/null +++ b/pkg/dashboard/scanners/trivy.go @@ -0,0 +1,87 @@ +package scanners + +import ( + "github.com/komodorio/helm-dashboard/pkg/dashboard/subproc" + "github.com/komodorio/helm-dashboard/pkg/dashboard/utils" + log "github.com/sirupsen/logrus" + "strconv" + "strings" +) + +type Trivy struct { + Data *subproc.DataLayer +} + +func (c *Trivy) Name() string { + return "Trivy" +} + +func (c *Trivy) Test() bool { + res, err := utils.RunCommand([]string{"trivy", "--version"}, nil) + if err != nil { + return false + } + parts := strings.Split(res, "\n") + log.Infof("Discovered Trivy: %s", strings.TrimSpace(parts[0])) + return true +} + +func (c *Trivy) ScanManifests(_ string) (*subproc.ScanResults, error) { + return nil, nil // Trivy is unable to scan manifests +} + +func (c *Trivy) scanResource(ns string, kind string, name string) (string, error) { + cmd := []string{"trivy", "kubernetes", "--quiet", "--format", "table", "--report", "all", "--no-progress", + "--context", c.Data.KubeContext, "--namespace", ns, kind + "/" + name} + out, err := utils.RunCommand(cmd, nil) + if err != nil { + return "", err + } + + return out, nil +} + +func (c *Trivy) ScanResource(ns string, kind string, name string) (*subproc.ScanResults, error) { + res := subproc.ScanResults{} + resource, err := c.scanResource(ns, kind, name) + if err != nil { + return nil, err + } + + for _, line := range strings.Split(resource, "\n") { + if strings.HasPrefix(line, "Tests:") { + parts := strings.FieldsFunc(line, func(r rune) bool { + return r == ':' || r == ',' || r == ')' + }) + + if cnt, err := strconv.Atoi(strings.TrimSpace(parts[2])); err == nil { + res.PassedCount += cnt + } else { + log.Warnf("Failed to parse Trivy output: %s", err) + } + + if cnt, err := strconv.Atoi(strings.TrimSpace(parts[4])); err == nil { + res.FailedCount += cnt + } else { + log.Warnf("Failed to parse Trivy output: %s", err) + } + } + + if strings.HasPrefix(line, "Total:") { + parts := strings.FieldsFunc(line, func(r rune) bool { + return r == ':' || r == ',' || r == '(' + }) + + if cnt, err := strconv.Atoi(strings.TrimSpace(parts[1])); err == nil { + res.FailedCount += cnt + } else { + log.Warnf("Failed to parse Trivy output: %s", err) + } + } + + } + + res.OrigReport = resource + + return &res, nil +} diff --git a/pkg/dashboard/server.go b/pkg/dashboard/server.go index 671f188..6bf596c 100644 --- a/pkg/dashboard/server.go +++ b/pkg/dashboard/server.go @@ -3,19 +3,24 @@ package dashboard import ( "context" "github.com/gin-gonic/gin" + "github.com/komodorio/helm-dashboard/pkg/dashboard/scanners" + "github.com/komodorio/helm-dashboard/pkg/dashboard/subproc" + "github.com/komodorio/helm-dashboard/pkg/dashboard/utils" log "github.com/sirupsen/logrus" "net/http" "os" ) -func StartServer(version string) (string, ControlChan) { - data := DataLayer{} +func StartServer(version string) (string, utils.ControlChan) { + data := subproc.DataLayer{} err := data.CheckConnectivity() if err != nil { log.Errorf("Failed to check that Helm is operational, cannot continue. The error was: %s", err) os.Exit(1) // TODO: propagate error instead? } + discoverScanners(&data) + address := os.Getenv("HD_BIND") if address == "" { address = "localhost" @@ -27,15 +32,15 @@ func StartServer(version string) (string, ControlChan) { address += ":" + os.Getenv("HD_PORT") } - abort := make(ControlChan) + abort := make(utils.ControlChan) api := NewRouter(abort, &data, version) done := startBackgroundServer(address, api, abort) return "http://" + address, done } -func startBackgroundServer(addr string, routes *gin.Engine, abort ControlChan) ControlChan { - done := make(ControlChan) +func startBackgroundServer(addr string, routes *gin.Engine, abort utils.ControlChan) utils.ControlChan { + done := make(utils.ControlChan) server := &http.Server{Addr: addr, Handler: routes} go func() { @@ -56,3 +61,17 @@ func startBackgroundServer(addr string, routes *gin.Engine, abort ControlChan) C return done } + +func discoverScanners(data *subproc.DataLayer) { + potential := []subproc.Scanner{ + &scanners.Checkov{Data: data}, + &scanners.Trivy{Data: data}, + } + + data.Scanners = []subproc.Scanner{} + for _, scanner := range potential { + if scanner.Test() { + data.Scanners = append(data.Scanners, scanner) + } + } +} diff --git a/pkg/dashboard/static/actions.js b/pkg/dashboard/static/actions.js index 5095702..2651129 100644 --- a/pkg/dashboard/static/actions.js +++ b/pkg/dashboard/static/actions.js @@ -4,7 +4,7 @@ $("#btnUpgradeCheck").click(function () { self.find(".spinner-border").show() const repoName = self.data("repo") $("#btnUpgrade span").text("Checking...") - $("#btnUpgrade .icon").removeClass("bi-arrow-up bi-pencil").addClass("bi-hourglass") + $("#btnUpgrade .icon").removeClass("bi-arrow-up bi-pencil").addClass("bi-hourglass-split") $.post("/api/helm/repo/update?name=" + repoName).fail(function (xhr) { reportError("Failed to update chart repo", xhr) }).done(function () { @@ -63,8 +63,9 @@ function checkUpgradeable(name) { function popUpUpgrade(self, verCur, elm) { const name = getHashParam("chart"); - let url = "/api/helm/charts/install?namespace=" + getHashParam("namespace") + "&name=" + name + "&chart=" + elm.name; - $('#upgradeModal select').data("url", url).data("chart", elm.name) + const qstr = "?namespace=" + getHashParam("namespace") + "&name=" + name + "&chart=" + elm.name; + let url = "/api/helm/charts/install" + qstr + $('#upgradeModal select').data("qstr", qstr).data("url", url).data("chart", elm.name) $("#upgradeModalLabel .name").text(name) $("#upgradeModal .ver-old").text(verCur) @@ -84,7 +85,6 @@ function popUpUpgrade(self, verCur, elm) { }).fail(function (xhr) { reportError("Failed to upgrade the chart", xhr) }).done(function (data) { - console.log(data) if (data.version) { setHashParam("revision", data.version) window.location.reload() @@ -130,6 +130,40 @@ $('#upgradeModal select').change(function () { }) }) +$('#upgradeModal .btn-scan').click(function () { + const self = $(this) + + self.prop("disabled", true).prepend('') + const qstr = $('#upgradeModal select').data("qstr") + $.ajax({ + type: "POST", + url: "/api/scanners/manifests" + qstr + "&version=" + $('#upgradeModal select').val(), + data: $("#upgradeModal form").serialize(), + }).fail(function (xhr) { + reportError("Failed to scan the manifest", xhr) + }).done(function (data) { + self.prop("disabled", false).find(".spinner-border").hide() + + const container = $("
") + for (let name in data) { + const res = data[name] + + if (!res) { + continue + } + + const pre = $("
").text(res.OrigReport)
+
+            container.append("

" + name + " Scan Results

") + container.append(pre) + } + + const tab = window.open('about:blank', '_blank'); + tab.document.write(container.prop('outerHTML')); // where 'html' is a variable containing your HTML + tab.document.close(); // to finish loading the page + }) +}) + function requestChangeDiff() { const self = $('#upgradeModal select'); const diffBody = $("#upgradeModalBody"); @@ -140,11 +174,11 @@ function requestChangeDiff() { if ($("#upgradeModal textarea").data("dirty")) { $("#upgradeModal .invalid-feedback").hide() values = $("#upgradeModal form").serialize() - + try { jsyaml.load($("#upgradeModal textarea").val()) } catch (e) { - $("#upgradeModal .invalid-feedback").text("YAML parse error: "+e.message).show() + $("#upgradeModal .invalid-feedback").text("YAML parse error: " + e.message).show() $("#upgradeModalBody").html("Invalid values YAML") return } @@ -155,7 +189,7 @@ function requestChangeDiff() { url: self.data("url") + "&version=" + self.val(), data: values, }).fail(function (xhr) { - $("#upgradeModalBody").html("

Failed to get upgrade info: "+ xhr.responseText+"

") + $("#upgradeModalBody").html("

Failed to get upgrade info: " + xhr.responseText + "

") }).done(function (data) { diffBody.empty(); $("#upgradeModal .btn-confirm").prop("disabled", false) diff --git a/pkg/dashboard/static/details-view.js b/pkg/dashboard/static/details-view.js index 4c24a02..2b9c54d 100644 --- a/pkg/dashboard/static/details-view.js +++ b/pkg/dashboard/static/details-view.js @@ -97,7 +97,7 @@ $('#specRev').keyup(function (event) { } }); -$("form").submit(function(e){ +$("form").submit(function (e) { e.preventDefault(); }); @@ -140,6 +140,7 @@ $("#nav-tab [data-tab]").click(function () { } }) + function showResources(namespace, chart, revision) { const resBody = $("#nav-resources .body"); resBody.empty().append(''); @@ -156,9 +157,9 @@ function showResources(namespace, chart, revision) {
-
-
Getting status...
-
+
+
Getting status...
+
`) @@ -182,16 +183,23 @@ function showResources(namespace, chart, revision) { } const statusBlock = resBlock.find(".res-status"); - statusBlock.empty().append(badge) + statusBlock.empty().append(badge).attr("title", data.status.phase) resBlock.find(".res-statusmsg").html("" + (data.status.message ? data.status.message : '') + "") if (badge.text() !== "NotFound") { resBlock.find(".res-actions") + const btn = $(""); resBlock.find(".res-actions").append(btn) btn.click(function () { showDescribe(ns, res.kind, res.metadata.name, badge.clone()) }) + + const btn2 = $(""); + resBlock.find(".res-actions").append(btn2) + btn2.click(function () { + scanResource(ns, res.kind, res.metadata.name, badge.clone()) + }) } }) } @@ -212,3 +220,42 @@ function showDescribe(ns, kind, name, badge) { $("#describeModalBody").empty().append("
").find("pre").html(data)
     })
 }
+
+function scanResource(ns, kind, name, badge) {
+    $("#describeModal .offcanvas-header p").text(kind)
+    $("#describeModalLabel").text(name).append(badge.addClass("ms-3 small fw-normal"))
+    const body = $("#describeModalBody");
+    body.empty().append(' Scanning...')
+
+    const myModal = new bootstrap.Offcanvas(document.getElementById('describeModal'));
+    myModal.show()
+    $.get("/api/scanners/resource/" + kind.toLowerCase() + "?name=" + name + "&namespace=" + ns).fail(function (xhr) {
+        reportError("Failed to scan resource", xhr)
+    }).done(function (data) {
+        body.empty()
+        if ($.isEmptyObject(data)) {
+            body.append("No information from scanners. Make sure you have installed some and scanned object is supported.")
+        }
+
+        for (let name in data) {
+            const res = data[name]
+
+            if (!res.OrigReport) continue
+            const hdr = $("

" + name + " Scan Results

"); + + if (res.FailedCount) { + hdr.append("" + res.FailedCount + " failed") + } + + if (res.PassedCount) { + hdr.append("" + res.PassedCount + " passed") + } + + body.append(hdr) + + const hl = hljs.highlight(res.OrigReport, {language: 'yaml'}).value + const pre = $("
").html(hl)
+            body.append(pre)
+        }
+    })
+}
diff --git a/pkg/dashboard/static/index.html b/pkg/dashboard/static/index.html
index 1a3ca7d..4b2a834 100644
--- a/pkg/dashboard/static/index.html
+++ b/pkg/dashboard/static/index.html
@@ -174,15 +174,15 @@
                         Resources
                     
                     
                     
                     
                 
@@ -200,7 +200,7 @@
                     
- @@ -235,7 +229,7 @@ -
+ aria-labelledby="describeModalLabel" style="overflow-x: auto">
@@ -302,7 +296,7 @@
- +

@@ -314,10 +308,11 @@
                          (wrong YAML)
                     
- +
- @@ -336,6 +331,7 @@ + diff --git a/pkg/dashboard/static/scripts.js b/pkg/dashboard/static/scripts.js index 6ea43ed..41560a6 100644 --- a/pkg/dashboard/static/scripts.js +++ b/pkg/dashboard/static/scripts.js @@ -19,6 +19,23 @@ $(function () { loadChartHistory(namespace, chart) } }) + + $.getJSON("/api/scanners").fail(function (xhr) { + reportError("Failed to get list of scanners", xhr) + }).done(function (data) { + for (let n = 0; n < data.length; n++) { + const item = $(` + `) + + $("#nav-scanners form span").prepend(item) + } + + if (!data.length) { + $("#upgradeModal .btn-scan").hide() + } + }) }) @@ -69,14 +86,14 @@ function statusStyle(status, card, txt) { } function getCleanClusterName(rawClusterName) { - if (rawClusterName.indexOf('arn')==0) { + if (rawClusterName.indexOf('arn') == 0) { // AWS cluster clusterSplit = rawClusterName.split(':') clusterName = clusterSplit.at(-1).split("/").at(-1) region = clusterSplit.at(-3) return region + "/" + clusterName + ' [AWS]' } - if (rawClusterName.indexOf('gke')==0) { + if (rawClusterName.indexOf('gke') == 0) { // GKE cluster return rawClusterName.split('_').at(-2) + '/' + rawClusterName.split('_').at(-1) + ' [GKE]' } diff --git a/pkg/dashboard/data.go b/pkg/dashboard/subproc/data.go similarity index 82% rename from pkg/dashboard/data.go rename to pkg/dashboard/subproc/data.go index 3f6d6fb..da1a58a 100644 --- a/pkg/dashboard/data.go +++ b/pkg/dashboard/subproc/data.go @@ -1,4 +1,4 @@ -package dashboard +package subproc import ( "bytes" @@ -8,12 +8,11 @@ import ( "github.com/hexops/gotextdiff" "github.com/hexops/gotextdiff/myers" "github.com/hexops/gotextdiff/span" + "github.com/komodorio/helm-dashboard/pkg/dashboard/utils" log "github.com/sirupsen/logrus" "gopkg.in/yaml.v3" "helm.sh/helm/v3/pkg/release" v1 "k8s.io/apimachinery/pkg/apis/testapigroup/v1" - "os" - "os/exec" "regexp" "sort" "strconv" @@ -21,61 +20,17 @@ import ( "time" ) -type CmdError struct { - Command []string - OrigError error - StdErr []byte -} - -func (e CmdError) Error() string { - //return fmt.Sprintf("failed to run command %s:\nError: %s\nSTDERR:%s", e.Command, e.OrigError, e.StdErr) - return string(e.StdErr) -} - type DataLayer struct { KubeContext string Helm string Kubectl string + Scanners []Scanner } func (d *DataLayer) runCommand(cmd ...string) (string, error) { log.Debugf("Starting command: %s", cmd) - prog := exec.Command(cmd[0], cmd[1:]...) - prog.Env = os.Environ() - prog.Env = append(prog.Env, "HELM_KUBECONTEXT="+d.KubeContext) - var stdout bytes.Buffer - prog.Stdout = &stdout - - var stderr bytes.Buffer - prog.Stderr = &stderr - - if err := prog.Run(); err != nil { - log.Warnf("Failed command: %s", cmd) - serr := stderr.Bytes() - if serr != nil { - log.Warnf("STDERR:\n%s", serr) - } - if eerr, ok := err.(*exec.ExitError); ok { - return "", CmdError{ - Command: cmd, - StdErr: serr, - OrigError: eerr, - } - } - - return "", CmdError{ - Command: cmd, - StdErr: serr, - OrigError: err, - } - } - - sout := stdout.Bytes() - serr := stderr.Bytes() - log.Debugf("Command STDOUT:\n%s", sout) - log.Debugf("Command STDERR:\n%s", serr) - return string(sout), nil + return utils.RunCommand(cmd, map[string]string{"HELM_KUBECONTEXT": d.KubeContext}) } func (d *DataLayer) runCommandHelm(cmd ...string) (string, error) { @@ -166,7 +121,7 @@ func (d *DataLayer) ListContexts() (res []KubeContext, err error) { return res, nil } -func (d *DataLayer) ListInstalled() (res []releaseElement, err error) { +func (d *DataLayer) ListInstalled() (res []ReleaseElement, err error) { out, err := d.runCommandHelm("ls", "--all", "--all-namespaces", "--output", "json", "--time-format", time.RFC3339) if err != nil { return nil, err @@ -179,7 +134,7 @@ func (d *DataLayer) ListInstalled() (res []releaseElement, err error) { return res, nil } -func (d *DataLayer) ChartHistory(namespace string, chartName string) (res []*historyElement, err error) { +func (d *DataLayer) ChartHistory(namespace string, chartName string) (res []*HistoryElement, err error) { // TODO: there is `max` but there is no `offset` out, err := d.runCommandHelm("history", chartName, "--namespace", namespace, "--output", "json", "--max", "18") if err != nil { @@ -192,7 +147,7 @@ func (d *DataLayer) ChartHistory(namespace string, chartName string) (res []*his } for _, elm := range res { - chartRepoName, curVer, err := chartAndVersion(elm.Chart) + chartRepoName, curVer, err := utils.ChartAndVersion(elm.Chart) if err != nil { return nil, err } @@ -204,7 +159,7 @@ func (d *DataLayer) ChartHistory(namespace string, chartName string) (res []*his return res, nil } -func (d *DataLayer) ChartRepoVersions(chartName string) (res []repoChartElement, err error) { +func (d *DataLayer) ChartRepoVersions(chartName string) (res []RepoChartElement, err error) { cmd := []string{"search", "repo", "--regexp", "/" + chartName + "\v", "--versions", "--output", "json"} out, err := d.runCommandHelm(cmd...) if err != nil { @@ -257,6 +212,11 @@ func (d *DataLayer) RevisionManifestsParsed(namespace string, chartName string, return nil, err } + if doc.Kind == "" { + log.Warnf("Manifest piece is not k8s resource: %s", jsoned) + continue + } + res = append(res, &doc) } @@ -328,6 +288,15 @@ func (d *DataLayer) GetResource(namespace string, def *v1.Carp) (*v1.Carp, error return &res, nil } +func (d *DataLayer) GetResourceYAML(namespace string, def *v1.Carp) (string, error) { + out, err := d.runCommandKubectl("get", strings.ToLower(def.Kind), def.Name, "--namespace", namespace, "--output", "yaml") + if err != nil { + return "", err + } + + return out, nil +} + func (d *DataLayer) DescribeResource(namespace string, kind string, name string) (string, error) { out, err := d.runCommandKubectl("describe", strings.ToLower(kind), name, "--namespace", namespace) if err != nil { @@ -375,7 +344,7 @@ func (d *DataLayer) ChartUpgrade(namespace string, name string, repoChart string values = oldVals } - oldValsFile, close1, err := tempFile(values) + oldValsFile, close1, err := utils.TempFile(values) defer close1() if err != nil { return "", err @@ -390,26 +359,13 @@ func (d *DataLayer) ChartUpgrade(namespace string, name string, repoChart string if err != nil { return "", err } - + res := release.Release{} + err = json.Unmarshal([]byte(out), &res) + if err != nil { + return "", err + } if justTemplate { - res := release.Release{} - err = json.Unmarshal([]byte(out), &res) - if err != nil { - return "", err - } - - manifests, err := d.RevisionManifests(namespace, name, 0, false) - if err != nil { - return "", err - } - out = getDiff(strings.TrimSpace(manifests), strings.TrimSpace(res.Manifest), "current.yaml", "upgraded.yaml") - } else { - res := release.Release{} - err = json.Unmarshal([]byte(out), &res) - if err != nil { - return "", err - } - _ = res + out = strings.TrimSpace(res.Manifest) } return out, nil @@ -435,11 +391,11 @@ func RevisionDiff(functor SectionFn, ext string, namespace string, name string, return "", err } - diff := getDiff(manifest1, manifest2, strconv.Itoa(revision1)+ext, strconv.Itoa(revision2)+ext) + diff := GetDiff(manifest1, manifest2, strconv.Itoa(revision1)+ext, strconv.Itoa(revision2)+ext) return diff, nil } -func getDiff(text1 string, text2 string, name1 string, name2 string) string { +func GetDiff(text1 string, text2 string, name1 string, name2 string) string { edits := myers.ComputeEdits(span.URIFromPath(""), text1, text2) unified := gotextdiff.ToUnified(name1, name2, text1, edits) diff := fmt.Sprint(unified) diff --git a/pkg/dashboard/data_test.go b/pkg/dashboard/subproc/data_test.go similarity index 91% rename from pkg/dashboard/data_test.go rename to pkg/dashboard/subproc/data_test.go index e363a20..650f8de 100644 --- a/pkg/dashboard/data_test.go +++ b/pkg/dashboard/subproc/data_test.go @@ -1,6 +1,7 @@ -package dashboard +package subproc import ( + "github.com/komodorio/helm-dashboard/pkg/dashboard/utils" log "github.com/sirupsen/logrus" "helm.sh/helm/v3/pkg/release" v1 "k8s.io/apimachinery/pkg/apis/testapigroup/v1" @@ -45,7 +46,7 @@ func TestFlow(t *testing.T) { } _ = history - chartRepoName, curVer, err := chartAndVersion(chart.Chart) + chartRepoName, curVer, err := utils.ChartAndVersion(chart.Chart) if err != nil { t.Fatal(err) } diff --git a/pkg/dashboard/helmTypes.go b/pkg/dashboard/subproc/helmTypes.go similarity index 90% rename from pkg/dashboard/helmTypes.go rename to pkg/dashboard/subproc/helmTypes.go index b04bee2..e1fabe3 100644 --- a/pkg/dashboard/helmTypes.go +++ b/pkg/dashboard/subproc/helmTypes.go @@ -1,4 +1,4 @@ -package dashboard +package subproc import ( "helm.sh/helm/v3/pkg/release" @@ -6,7 +6,7 @@ import ( ) // unpleasant copy from Helm sources, where they have it non-public -type releaseElement struct { +type ReleaseElement struct { Name string `json:"name"` Namespace string `json:"namespace"` Revision string `json:"revision"` @@ -16,7 +16,7 @@ type releaseElement struct { AppVersion string `json:"app_version"` } -type historyElement struct { +type HistoryElement struct { Revision int `json:"revision"` Updated helmtime.Time `json:"updated"` Status release.Status `json:"status"` @@ -27,7 +27,7 @@ type historyElement struct { ChartVer string `json:"chart_ver"` } -type repoChartElement struct { +type RepoChartElement struct { Name string `json:"name"` Version string `json:"version"` AppVersion string `json:"app_version"` diff --git a/pkg/dashboard/subproc/scan.go b/pkg/dashboard/subproc/scan.go new file mode 100644 index 0000000..0de6a08 --- /dev/null +++ b/pkg/dashboard/subproc/scan.go @@ -0,0 +1,15 @@ +package subproc + +type Scanner interface { + Name() string // returns string label for the scanner + Test() bool // test if the scanner is available + ScanManifests(mnf string) (*ScanResults, error) // run the scanner on manifests + ScanResource(ns string, kind string, name string) (*ScanResults, error) // run the scanner on k8s resource +} + +type ScanResults struct { + PassedCount int + FailedCount int + OrigReport interface{} + Error error +} diff --git a/pkg/dashboard/utils.go b/pkg/dashboard/utils.go deleted file mode 100644 index 1c66917..0000000 --- a/pkg/dashboard/utils.go +++ /dev/null @@ -1,33 +0,0 @@ -package dashboard - -import ( - "errors" - "io/ioutil" - "os" - "strings" -) - -type ControlChan = chan struct{} - -func chartAndVersion(x string) (string, string, error) { - lastInd := strings.LastIndex(x, "-") - if lastInd < 0 { - return "", "", errors.New("can't parse chart version string") - } - - return x[:lastInd], x[lastInd+1:], nil -} - -func tempFile(txt string) (string, func(), error) { - file, err := ioutil.TempFile("", "helm_vals_") - if err != nil { - return "", nil, err - } - - err = ioutil.WriteFile(file.Name(), []byte(txt), 0600) - if err != nil { - return "", nil, err - } - - return file.Name(), func() { os.Remove(file.Name()) }, nil -} diff --git a/pkg/dashboard/utils/utils.go b/pkg/dashboard/utils/utils.go new file mode 100644 index 0000000..f4840cf --- /dev/null +++ b/pkg/dashboard/utils/utils.go @@ -0,0 +1,115 @@ +package utils + +import ( + "bytes" + "errors" + "github.com/gin-gonic/gin" + log "github.com/sirupsen/logrus" + "io/ioutil" + "os" + "os/exec" + "strconv" + "strings" +) + +type ControlChan = chan struct{} + +func ChartAndVersion(x string) (string, string, error) { + lastInd := strings.LastIndex(x, "-") + if lastInd < 0 { + return "", "", errors.New("can't parse chart version string") + } + + return x[:lastInd], x[lastInd+1:], nil +} + +func TempFile(txt string) (string, func(), error) { + file, err := ioutil.TempFile("", "helm_dahsboard_*.yaml") + if err != nil { + return "", nil, err + } + + err = ioutil.WriteFile(file.Name(), []byte(txt), 0600) + if err != nil { + return "", nil, err + } + + return file.Name(), func() { os.Remove(file.Name()) }, nil +} + +type CmdError struct { + Command []string + OrigError error + StdErr string +} + +func (e CmdError) Error() string { + //return fmt.Sprintf("failed to run command %s:\nError: %s\nSTDERR:%s", e.Command, e.OrigError, e.StdErr) + return string(e.StdErr) +} + +func RunCommand(cmd []string, env map[string]string) (string, error) { + prog := exec.Command(cmd[0], cmd[1:]...) + prog.Env = os.Environ() + + for k, v := range env { + prog.Env = append(prog.Env, k+"="+v) + } + + var stdout bytes.Buffer + prog.Stdout = &stdout + + var stderr bytes.Buffer + prog.Stderr = &stderr + + if err := prog.Run(); err != nil { + log.Warnf("Failed command: %s", cmd) + serr := stderr.Bytes() + if serr != nil { + log.Warnf("STDERR:\n%s", serr) + } + if eerr, ok := err.(*exec.ExitError); ok { + return "", CmdError{ + Command: cmd, + StdErr: string(serr), + OrigError: eerr, + } + } + + return "", CmdError{ + Command: cmd, + StdErr: string(serr), + OrigError: err, + } + } + + sout := stdout.Bytes() + serr := stderr.Bytes() + log.Debugf("Command STDOUT:\n%s", sout) + log.Debugf("Command STDERR:\n%s", serr) + return string(sout), nil +} + +type QueryProps struct { + Namespace string + Name string + Revision int +} + +func GetQueryProps(c *gin.Context, revRequired bool) (*QueryProps, error) { + qp := QueryProps{} + + qp.Namespace = c.Query("namespace") + qp.Name = c.Query("name") + if qp.Name == "" { + return nil, errors.New("missing required query string parameter: name") + } + + cRev, err := strconv.Atoi(c.Query("revision")) + if err != nil && revRequired { + return nil, err + } + qp.Revision = cRev + + return &qp, nil +} diff --git a/screenshot_scan_manifest.png b/screenshot_scan_manifest.png new file mode 100644 index 0000000000000000000000000000000000000000..306a59c5a60231bb72f404cc6464b4d5cbffb0bf GIT binary patch literal 117306 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

;xs@LoZ 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 literal 0 HcmV?d00001